Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

다히의 개발일지

스프링 session 기반 로그인 화면 구현 본문

다히의 피땀눈물/SPRING

스프링 session 기반 로그인 화면 구현

mindarrrr 2019. 7. 1. 10:19

* session & cookie 게시물과 연관

 

spring 프로젝트로 구조는 다음과 같다.

login package 구성

UserController.java

@Controller
public class UserController {
	
	//로그인 화면	
	@RequestMapping("/login")
	public String login() {
		System.out.println("==== loginPage Start ====");
		return "login";
	}
	// 로그아웃
    @RequestMapping("logout")
    public String logout(HttpSession session) {
        session.setAttribute("userLoginInfo", null);
        return "redirect:login";
    }

	@Inject
	private UserService userService;
	
	private static final Logger logger = LoggerFactory.getLogger(UserController.class);

	@RequestMapping(value = "page2", method = RequestMethod.POST)
	public ModelAndView loginCheck(MemberVO vo, HttpServletRequest req, HttpSession session, RedirectAttributes rttr) throws Exception{
		
		ModelAndView mav = new ModelAndView();
		mav.setViewName("redirect:login");
		MemberVO loginUser = userService.login(vo);
	
		rttr.addFlashAttribute("msg", false);
		if(loginUser != null){
			session.setAttribute("userLoginInfo", loginUser);
			
		}
		
		return mav;
		
		
	}
	
		
}

page2 관련 컨트롤러 생성 시 

@RequestMapping("page2")

public String page2(){

return "page2";

}

추가

 

UserDao.java

@Repository("UserDAO")
public class UserDAO {
	
	@Autowired	
	@Resource(name = "sqlSessionTemplate")
    private SqlSession sqlSessionFactory;
	
	public MemberVO login(MemberVO vo) throws Exception{
		return sqlSessionFactory.selectOne("com.sample.mysql.selectLoginInfo", vo);
	}
	
}

UserService.java

public interface UserService {
	
	public MemberVO login(MemberVO vo)throws Exception;
}

UserServiceImpl.java

@Service("UserService")
@Repository
public class UserServiceImpl implements UserService{
	
	@Resource(name="UserDAO")
	private UserDAO userDAO;

	@Override
	public MemberVO login(MemberVO vo)throws Exception{
		return userDAO.login(vo);
	}

}

MemberVO.java

public class MemberVO {
	private String userCd;
	private String userPs;

	public String getUserCd() {
		return userCd;
	}
	public void setUserCd(String userCd) {
		this.userCd = userCd;
	}
	public String getUserPs() {
		return userPs;
	}
	public void setUserPs(String userPs) {
		this.userPs = userPs;
	}


}

userMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.sample.mysql">

<!-- <resultMap id = "UserList" type="hashmap" >
		<result property="userCd" column="USER_CD"/>
		<result property="userPs" column="USER_PS"/>
	</resultMap> -->
	
   <select id="selectLoginInfo" resultType="com.test.myapp.login.vo.MemberVO">
 		SELECT USER_CD userCd,
		 	   USER_PS userPs
		 	   
		FROM TABLE_NAME
		
		WHERE USER_CD = #{userCd} AND USER_PS = #{userPs}
      
   </select>
   
</mapper>

webapp/WEB-INF/views/login.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<html>
<head>
<meta charset='utf-8'>
<!-- jQuery -->	
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<!-- Bootstrap CSS --> 
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" > 
<style>
		body{ padding : 0px } 
		.text-center{ text-align: center! important;position:absolute; top:50%; left:50%; width:280px; height:200px; margin-top:-150px; margin-left:-100px;}
		.mb-4, .my-4 { margin-bottom: 1.5rem!important;}
		.form-control { display: block; width: 100%;font-weight: 400; line-height: 1.5; color: #495057; background-color: #fff; background-clip: padding-box; border: 1px solid #ced4da;border-radius: .25rem; transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;}
		.form-signin { width: 100%; max-width: 330px; padding: 15px; margin: auto;}

</style>
<script type="text/javascript">
</script>
<!-- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -->
<title>mindarrr 로그인</title>
</head>

<body class="text-center mb-4">

<c:choose>
	<c:when test = "${not empty sessionScope.userLoginInfo}">
	<script>
	//alert("로그인되었습니다.");
	location.href="page2";</script>

	</c:when>
	<c:otherwise>
	<form action="page2" id="loginCheck" method="post" >
	<table class="form-signin">
		
		<tr>
			<td>
			<p> 로그인 서비스 입니다.</p>
			</td>
		</tr>
		<tr>
			<td>
			<input type="text" class="form-control" id ="userCd" name="userCd" placeholder="아이디를 입력해주세요">
			</td>
		</tr>
		<tr>
			<td>
			<input type="password" class="form-control" id ="userPs" name="userPs" placeholder="비밀번호를 입력해주세요">
			</td>
		</tr>
		<tr>
			<td>
			<p>
			<button class="btn btn-lg btn-info btn-block">로그인</button>
			</p>
		</td>
		</tr>
	</table>
	
</form>
	<c:if test="${msg == false}">
		<p style="color:#f00;">로그인 정보를 확인해주시기 바랍니다.</p>
	</c:if>
	
	</c:otherwise>

</c:choose>




</body>
</html>

'다히의 피땀눈물 > SPRING' 카테고리의 다른 글

MVC 구조  (0) 2019.07.09
DI(Dependency Injection) & IoC(Inversion of Control)  (0) 2019.07.09
파라미터 넘기기  (0) 2019.06.28
SPRING + MYBATIS + 다중 DB 설정  (1) 2019.06.28