다히의 개발일지
스프링 session 기반 로그인 화면 구현 본문
* session & cookie 게시물과 연관
spring 프로젝트로 구조는 다음과 같다.
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 |