프로그래밍/Java_Spring 게시판 만들기

Spring 게시판 만들기 (3) - Login 기능 구현

개발계발게발 2021. 8. 30. 17:16
반응형

https://knowhoon.tistory.com/109

 

Spring 게시판 만들기 (2) - DTO, DAO, Service, Mapper

https://knowhoon.tistory.com/108 Spring 게시판 만들기 (1) - 개발 환경 세팅 Spring 게시판 만들기 (1) - Spring(STS) 설치 게시글 https://knowhoon.tistory.com/104 Spring(STS) 설치하기(3.9.17 RELEASE)..

knowhoon.tistory.com

 

Login 기능 구현

 

login.view

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>login</title>

</head>
<body>
		<h1>login</h1>

	<form action="./login" method="post">	
		<input type="text" name="sm_id" required="required">
		<input type="password" name="sm_pw" required="required">
		<button type="submit">로그인</button>
		<button type="reset">초기화</button>
	</form>	

</body>
</html>

 

LoginController.java

package com.knowhoon.web;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import com.knowhoon.web.login.LoginDTO;
import com.knowhoon.web.login.LoginService;

@Controller
public class LoginController {
	@Autowired
	private LoginService loginService;
	
	@GetMapping("/login")
	public String login() {
		
		return "login";
	}
	@PostMapping("/login")
	public String loginAction(LoginDTO loginDTO, HttpServletRequest request) {
    
		LoginDTO result = loginService.loginAction(loginDTO);
		if(result != null) {
			request.getSession().setAttribute("sm_id", result.getSm_id());
			request.getSession().setAttribute("sm_name", result.getSm_name());
			request.getSession().setAttribute("sm_grade", result.getSm_grade());
			return "redirect:/board";			
		} else {
			if(request.getSession().getAttribute("sm_id") != null) {
				request.getSession().removeAttribute("sm_id");				
			}
			if(request.getSession().getAttribute("sm_name") != null) {
				request.getSession().removeAttribute("sm_name");							
			}
			if(request.getSession().getAttribute("sm_grade") != null) {
				request.getSession().removeAttribute("sm_grade");							
			}
			return "redirect:/login?error=loginError";
		}
		
	}
	@GetMapping("/logout")
	public String logout(HttpServletRequest request) {
		if(request.getSession().getAttribute("sm_id") != null) {
			request.getSession().removeAttribute("sm_id");
		}
		if(request.getSession().getAttribute("sm_name") != null) {
			request.getSession().removeAttribute("sm_name");							
		}
		if(request.getSession().getAttribute("sm_grade") != null) {
			request.getSession().removeAttribute("sm_grade");							
		}
		
		return "redirect:/board";
	}

}

 

LoginService.java

 

package com.knowhoon.web.login;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class LoginService {
	@Autowired
	private LoginDAO loginDAO;
	
	public LoginDTO loginAction(LoginDTO loginDTO) {
		
		return loginDAO.loginAction(loginDTO);
	}
}

 

LoginDAO.java

 

package com.knowhoon.web.login;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class LoginDAO {
	@Autowired
	private SqlSession sqlSession;
	
	public LoginDTO loginAction(LoginDTO loginDTO) {
		return sqlSession.selectOne("login.loginAction", loginDTO);
	}	
}

 

LoginDTO.java

 

package com.knowhoon.web.login;

public class LoginDTO {
	private int sm_no, sm_grade;
	private String 	sm_name, sm_id, sm_pw, sm_joindate, sm_birthdate, sm_email, sm_addr;
	public int getSm_no() {
		return sm_no;
	}
	public void setSm_no(int sm_no) {
		this.sm_no = sm_no;
	}
	public int getSm_grade() {
		return sm_grade;
	}
	public void setSm_grade(int sm_grade) {
		this.sm_grade = sm_grade;
	}
	public String getSm_name() {
		return sm_name;
	}
	public void setSm_name(String sm_name) {
		this.sm_name = sm_name;
	}
	public String getSm_id() {
		return sm_id;
	}
	public void setSm_id(String sm_id) {
		this.sm_id = sm_id;
	}
	public String getSm_joindate() {
		return sm_joindate;
	}
	public void setSm_joindate(String sm_joindate) {
		this.sm_joindate = sm_joindate;
	}
	public String getSm_birthdate() {
		return sm_birthdate;
	}
	public void setSm_birthdate(String sm_birthdate) {
		this.sm_birthdate = sm_birthdate;
	}
	public String getSm_email() {
		return sm_email;
	}
	public void setSm_email(String sm_email) {
		this.sm_email = sm_email;
	}
	public String getSm_addr() {
		return sm_addr;
	}
	public void setSm_addr(String sm_addr) {
		this.sm_addr = sm_addr;
	}
	public String getSm_pw() {
		return sm_pw;
	}
	public void setSm_pw(String sm_pw) {
		this.sm_pw = sm_pw;
	}	
}

 

loginMapper.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="login">		
	<select id="loginAction" parameterType="LoginDTO" resultType="LoginDTO" >
		SELECT sm_no, sm_name, sm_id FROM sloginview WHERE sm_id=#{sm_id} AND sm_pw=#{sm_pw} 
	</select>
</mapper>

 

 

mybatis에서 LoginDTO 사용 할수 있게 mybatisConfig.xml 수정(typeAlias 추가)

 

 

 

 

반응형