@Controller
public class LoginController {
@PostMapping("/login")
public String login(@RequestParam String username,
@RequestParam String password,
Model model) {
// 예시: 아이디 admin, 비밀번호 1234만 로그인 성공 처리
if ("admin".equals(username) && "1234".equals(password)) {
model.addAttribute("message", "로그인 성공!");
return "home"; // home.html로 이동
} else {
model.addAttribute("message", "아이디나 비밀번호가 틀렸습니다.");
return "login"; // 다시 로그인 페이지로
}
}
}
@Controller
: 웹 요청을 처리하는 Spring의 컨트롤러
: 웹에서 사용자가 form을 제출하면 그걸 받아 처리함
:@RestController과는 다르게 html화면을 반환한다.
public class LoginController {
:LoginController는 클래스 이름으로 컨트롤러의 기능을 여기에 묶어 관리한다
:즉 여기선 로그인 관련 기능만 담당하는 클래스로 쓰인다.
@PostMapping("/login")
:사용자가 로그인 form을 제출할 때 POST방식으로 전송함
:그 요청을 "/login" 주소로 보냄
:그 주소로 그 form을 받아 처리함
+@GetMapping은 주소에 그냥 들어올 때 사용한다.
Public String login(...)
:login이라는 이름의 함수(메서드)로 String을 반환한다는 뜻은 어떤 html 페이지로 갈지 이름을 문자열로 돌려주겠다는 의미 eg) return."home" -> home.html 페이지로 이동함
@RequestParam String username
:HTML <input name="username">에서 사용자가 입력한 값을 여기로 가져온다.
:username이라는 이름으로 넘어온 값을 자바 변수 username에 저장한다.
@RequestParam String password
:위와 같은 방식으로 사용자가 입력한 비밀번호를 가져옴
@Model model
:HTML로 값을 보낼 때 사용하는 데이터 전달 가방
:model.addAttribute("key",값)하면, HTML에서 ${key}로 꺼내 쓸 수 있다.
if ("admin.equals(username) && "1234".equals(password)) {
:만약 아이디를 "admin", 비밀번호를 "1234"로 입력하면 로그인 성공
:실제 서비스에서는 이러한 고정값이 아닌 DB와 비교한다.
model.addAttribute("message", "로그인 성공!")
:"message"라는 이름으로 "로그인 성공!" 이라는 문장을 담아 html에 넘겨준다
:html에서는 ${message}로 꺼내어 보여줄 수 있다.
return "home"
:로그인 성공 시, home.html 화면을 사용자에게 보여준다.
model.addAttribute("message", "아이디나 비밀번호가 틀렸습니다.");
:로그인 실패시 마찬가지로 "message"라는 이름으로 "아이디나 비밀번호가 틀렸습니다."라는 문장을 html에 넘겨준다.
return "login";
:로그인 페이지로 이동시킨다.