
com.demo.domain์
loginUser ํด๋์ค ์์ฑ

package com.demo.domain;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.springframework.stereotype.Component;
import org.springframework.web.context.annotation.SessionScope;
//loginUser ๊ฐ์ฒด๋ฅผ ์ธ์
์ ๋ฑ๋กํ๋ค.
@Component("loginUser")
@SessionScope
public class LoginUser {
private int user_idx;
private String user_name;
@Size(min=4, max=20)
@Pattern(regexp = "[a-zA-Z0-9]*")
private String user_id;
@Size(min=4, max=20)
@Pattern(regexp = "[a-zA-Z0-9]*")
private String user_pw;
private boolean userlogin; //๋ก๊ทธ์ธ ์ํ (๋ก๊ทธ์ธ ์ ์ฒดํฌํจ)
public LoginUser() {
this.userlogin = false;//๊ฐ์ฒด ์์ฑ ์ ์ฒ์ ์ํ๋ ๋ก๊ทธ์ธ false๋ค
}
//๊ฒํฐ ์ธํฐ ์์ฑ
public int getUser_idx() {
return user_idx;
}
public void setUser_idx(int user_idx) {
this.user_idx = user_idx;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getUser_pw() {
return user_pw;
}
public void setUser_pw(String user_pw) {
this.user_pw = user_pw;
}
public boolean isUserlogin() {
return userlogin;
}
public void setUserlogin(boolean userlogin) {
this.userlogin = userlogin;
}
}
bean ๋ฑ๋ก์ ํ ๋
service๋ sevice, controller๋ controller
dao๋ repository ์ด๋ฐ์์ผ๋ก ๋ฑ๋กํจ
์ธํฐ์ ํฐ๋ servlet-context์์

์ผ๋ฐ ํด๋์ค๋ฅผ bean๋ฑ๋ก์ ํ๋ค๋ฉด component๋ก ํ๋ฉด๋จ
๊ทธ๋์ ํ์ฌ UserVO๊ฐ์ฒด๋ฅผ loginUser๋ผ๋ ์ด๋ฆ์ผ๋ก ์ธ์ ์ ๋ฑ๋กํจ
@sessionScope
์ธ์ ์ ๋ฑ๋ก์ ํจ(30๋ถ์ ๊ณ์ ์ ์ง๊ฐ ๋จ)
login.jsp

form ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ถ๋ฌ์ด
ํ์ฌ ์๋ ํผํ๊ทธ๋ฅผ ๊ต์ฒด
<form:form action="${root }/user/login_pro" modelAttribute="loginUser">
<div class="form-group">
<form:label path="user_id">์์ด๋</form:label>
<form:input path="user_id" class="form-control"/>
<form:errors path="user_id" style="color:coral" />
</div>
<div class="form-group">
<form:label path="user_pw">๋น๋ฐ๋ฒํธ</form:label>
<form:password path="user_pw" showPassword="true" class='form-control'/>
<form:errors path='user_pw' style='color:coral'/>
</div>
<div class="form-group text-right">
<form:button class='btn btn-primary'>๋ก๊ทธ์ธ</form:button>
<a href="${root }/user/join" class="btn btn-danger">ํ์๊ฐ์
</a>
</div>
</form:form>

modelAtrribute๋ ์ปจํธ๋กค๋ฌ์์ ๋ฐ์์ฌ๊ฑฐ์
UserController
@GetMapping("/login") //@ModelAttribute ์๋ต๊ฐ๋ฅํจ
public String login( LoginUser loginUser) {
return "user/login";
}
์คํํ๊ธฐ

form form ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฌด์กฐ๊ฑด POST ๋ก๊ฐ

Usercontroller์ ์ถ๊ฐ
@PostMapping("/login_pro")//@Valid์ฌ์ฉ ์ BindingResult ์ฌ์ฉํด์ผํจ ์๋ฌ ์์ ๊ฒฝ์ฐ ์ฒ๋ฆฌ
public String login_pro(@Valid LoginUser loginBean, BindingResult result) {
if(result.hasErrors()) {
return "user/login";
}
return "user/login_success";
}

LoginUser์ ๋ฉ์ธ์ง ์ถ๊ฐ
//loginUser ๊ฐ์ฒด๋ฅผ ์ธ์
์ ๋ฑ๋กํ๋ค.
@Component("loginUser")
@SessionScope
public class LoginUser {
private int user_idx;
private String user_name;
@Size(min=4, max=20, message = "์์ด๋๋ 4-20๊น์ง ์ ์ด์ฃผ์ธ์")
@Pattern(regexp = "[a-zA-Z0-9]*",message = "์๋ฌธ ๋๋ ์ซ์๋ก ์ ์ด์ฃผ์ธ์")
private String user_id;
@Size(min=4, max=20,message = "ํจ์ค์๋๋ 4-20๊น์ง ์ ์ด์ฃผ์ธ์")
@Pattern(regexp = "[a-zA-Z0-9]*",message = "์๋ฌธ ๋๋ ์ซ์๋ก ์ ์ด์ฃผ์ธ์")
private String user_pw;
private boolean userlogin; //๋ก๊ทธ์ธ ์ํ (๋ก๊ทธ์ธ ์ ์ฒดํฌํจ)
public LoginUser() {
this.userlogin = false;//๊ฐ์ฒด ์์ฑ ์ ์ฒ์ ์ํ๋ ๋ก๊ทธ์ธ false๋ค
}


๋ก๊ทธ์ธ ๊ฒ์ฌํด์ผํจ
UserMapper.xml์์ ์ถ๊ฐ
<select id="loginCheck" parameterType="com.demo.domain.LoginUser" resultType="com.demo.domain.LoginUser">
SELECT user_idx, name
FROM user
WHERE user_id=#{user_id} AND user_pw=#{user_pw}
</select>
UserDAO.
//๋ก๊ทธ์ธ ์ฒดํฌ
public LoginUser getLoginUserInfo(LoginUser loginUser) {
return sqlTemplate.selectOne("user.loginCheck", loginUser);
}
UserService
LoginUser ์ธ์ ์ด๋ฆ ๋ณ๊ฒฝ

pom.xml์ ์ถ๊ฐ
<!-- annotation-api -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
๋ฉ์ด๋ธ ์ ๋ฐ์ดํธ
UserService

//๋ก๊ทธ์ธ ์ฒดํฌ
public void getLoginUserInfo(LoginUser loginUser) {
//DB์์ ๋ก๊ทธ์ธ ์ ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ด (id, pw๋ฅผ ์
๋ ฅ)
LoginUser tempLoginUser = userDAO.getLoginUserInfo(loginUser);
//๋ก๊ทธ์ธ ์ ์ ์ ๋ณด๊ฐ ์์ผ๋ฉด ๊ทธ ์ ๋ณด๋ฅผ sessionUser์ idx์ name์ ์ ์ฅํ๊ณ ์ฑ๊ณต์ผ๋ก ์ ์ฅ
if(tempLoginUser != null) {
sessionUser.setUser_idx(tempLoginUser.getUser_idx());
sessionUser.setUser_name(tempLoginUser.getUser_name());
sessionUser.setUserlogin(true);//๋ก๊ทธ์ธ ์ฑ๊ณต ์ ์ํ true
}
}
๋ณด์์ ํจ์ค์๋๋ ์์ด๋๋ ์๊ฐ์ ธ์ด
UserController

@PostMapping("/login_pro")//@Valid์ฌ์ฉ ์ BindingResult ์ฌ์ฉํด์ผํจ ์๋ฌ ์์ ๊ฒฝ์ฐ ์ฒ๋ฆฌ
public String login_pro(@Valid LoginUser loginBean, BindingResult result) {
if(result.hasErrors()) {
return "user/login";
}
//๋ก๊ทธ์ธ ๊ฒ์ฌ
uService.getLoginUserInfo(loginBean);
if(sessionUser.isUserlogin() == true) {
return "user/login_success";
}else {
return "user/login_fail";
}
}
login_fail jsp ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="root" value="${pageContext.request.contextPath}" />
<script>
alert('๋ก๊ทธ์ธ์ ์คํจํ์ฟ์ต๋๋ค')
location.href = '${root}/user/login'
</script>


component ์ธ์์ ์ํด์ domain๋ ์ถ๊ฐํด์ค์ผํจ


๋ก๊ทธ์ธ ์คํจ ์ ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ๋์๊ฐ
login.jsp


@GetMapping("/login") //@ModelAttribute ์๋ต๊ฐ๋ฅํจ
public String login( LoginUser loginUser,Model model,
@RequestParam(value = "fail",defaultValue = "false" )boolean fail) {
model.addAttribute("fail", fail);
return "user/login";
}
login_fail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="root" value="${pageContext.request.contextPath}" />
<script>
alert('๋ก๊ทธ์ธ์ ์คํจํ์ต๋๋ค. id ๋๋ password๊ฐ ํ๋ฆฝ๋๋ค.')
location.href = '${root}/user/login?fail=true'
</script>
login_success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="root" value="${pageContext.request.contextPath}" />
<script>
alert('๋ก๊ทธ์ธ ๋์์ต๋๋ค.')
location.href = '${root}/'
</script>
