submit 경로 꼭 확인
나의 login페이지는 'http://localhost:9095/' 호출되기 때문에(HomeCont에서 설정) 하위 logCont에서의 경로가 log/loginproc이다.
경로는 항상 확인하기!
멤버 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 + "]";
}
}
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
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
사용되는 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 (세션)