2306_FinalProject_로그인 구현하기(세션 추가중)

sssooon·2023년 6월 16일
0

2306_FinalProject

목록 보기
5/5

1. JSP 생성

submit 경로 꼭 확인
나의 login페이지는 'http://localhost:9095/' 호출되기 때문에(HomeCont에서 설정) 하위 logCont에서의 경로가 log/loginproc이다.
경로는 항상 확인하기!

2. DTO 생성

멤버 DTO를 만들어준다.
객체, 기본 생성자, 매개변수 생성자, getter, setter

package kr.co.itwu.member;

import java.util.Date;

public class MemberDTO {
	
	private String code;
	private String name;
	private String passwd;
	private String phone;
	private String email;
	private String grade;
	private String academic_status;
	private Date admission_date;
	private String hcode;
	
	public MemberDTO() {
		super();
	}	
	
	public MemberDTO(String code, String name, String passwd, String phone, String email, String grade,
			String academic_status, Date admission_date, String hcode) {
		super();
		this.code = code;
		this.name = name;
		this.passwd = passwd;
		this.phone = phone;
		this.email = email;
		this.grade = grade;
		this.academic_status = academic_status;
		this.admission_date = admission_date;
		this.hcode = hcode;
	}

	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPasswd() {
		return passwd;
	}
	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getGrade() {
		return grade;
	}
	public void setGrade(String grade) {
		this.grade = grade;
	}
	public String getAcademic_status() {
		return academic_status;
	}
	public void setAcademic_status(String academic_status) {
		this.academic_status = academic_status;
	}
	public Date getAdmission_date() {
		return admission_date;
	}
	public void setAdmission_date(Date admission_date) {
		this.admission_date = admission_date;
	}
	public String getHcode() {
		return hcode;
	}
	public void setHcode(String hcode) {
		this.hcode = hcode;
	}
	@Override
	public String toString() {
		return "MemberDTO [code=" + code + ", name=" + name + ", passwd=" + passwd + ", phone=" + phone + ", email="
				+ email + ", grade=" + grade + ", academic_status=" + academic_status + ", admission_date="
				+ admission_date + ", hcode=" + hcode + "]";
	}
	
}

3. Controller 생성

jsp에서 주소로 불러오기때문에 함수명은 주소명과 꼭 같을 필요 없다

package kr.co.itwu.log;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import kr.co.itwu.member.MemberDAO;
import kr.co.itwu.member.MemberDTO;

@RequestMapping("/log")
@Controller
public class LogCont {
	
	public LogCont() {
		System.out.println("---------LogController() 객체 생성");
	}
	
	@Autowired
	MemberDAO memberDAO;
	
	
	//로그인 실행
	@RequestMapping("/loginproc")
	public String loginproc(@RequestParam("code") String code, 
						  @RequestParam("passwd") String passwd) throws Exception {
		
		MemberDTO dto = new MemberDTO();
		
		dto.setCode(code);
		dto.setPasswd(passwd);
		
		int result = memberDAO.login(dto);
		
		if (result == 1) { //아이디와 비밀번호와 일치하는 값의 갯수를 조회하여 1이면 로그인 성공하여 페이지 이동
			return "redirect:/notice/list";
			
		} else { //아이디와 비밀번호가 조회가 안된다면 다시 로그인페이지 이동
			return "redirect:/";
		}
		
	}//loginproc() end

}//class end

4. DAO 생성

sql에서 갯수를 가져오기 때문에 int로 정의

Controller에서 값을 dto에 담아두어서 dto으로 받는다

resources > mapper폴더 > member.xml에 있는 login sql에 대입

package kr.co.itwu.member;

import java.util.List;
import java.util.Map;

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

@Repository
public class MemberDAO {
	
	public MemberDAO() {
		System.out.println("---------MemberDAO() 객체 생성");
	}
	
	@Autowired
	SqlSession sqlSession;
	
	//로그인
	public int login(MemberDTO dto){
		return sqlSession.selectOne("member.login", dto);
	}

}//class end

5. xml 생성(SQL)

사용되는 SQL문은 xml에 작성한다

id는 임의.
parameterType은 가져온 형태. DTO에 담아왔으니 경로로 DTO적어준다.
resultType은 int. SQL문에서 갯수를 조회하기 때문

<?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">
     
<!-- member.xml -->

<mapper namespace="member">

	<!-- 로그인 -->
	<select id="login" parameterType="kr.co.itwu.member.MemberDTO" resultType="int">
		SELECT count(*)
		FROM student
		WHERE code=#{code} AND passwd=#{passwd}
	</select>

</mapper>

참고
https://focus-dev.tistory.com/22 (로그인)
https://datamoney.tistory.com/171 (세션)

profile
Backend 꿈나무

0개의 댓글