728x90
반응형
비연결->연결처럼 보이게 세션
MVC3 + 회원인증 만들기
context이름은 sin으로 간단하게 하기
session - 접속 정보들
★request바인딩x -> session바인딩o
(request한 get 1명가능(forward)) (get 여러명가능)
DB table에있는 column이름과 MemberVO 변수의이름이 같게해줘야한다.
●MemberMapper.xml (login )
<select id="memberLogin" parameterType="MemberVO" resultType="MemberVO">
select * from memiot where id=#{id} and pass=#{pass}
</select>
●MemberDAOImpl.java
@Override
public MemberVO memberLogin(MemberVO vo) {
SqlSession session = sqlSessionFactory.openSession();
MemberVO vo1 = session.selectOne("memberLogin", vo);
session.close();
return vo1;
●LoginController.java
@WebServlet("/login.do")
public class LoginController extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String pass = request.getParameter("pass");
MemberVO vo = new MemberVO();
vo.setId(id);
vo.setPass(pass);
MemberDAO dao = new MemberDAOImpl();
MemberVO vo1 = dao.memberLogin(vo);
System.out.println(vo1); //vo1출력 -> 지정안해서 회원한명의 전체정보출력(값들을 하나의 String형태로 하나로만들어리턴 - toString - (생략되어있음))
//toString메소드를 Override로 만들지 않아도 object를 상속받기때문에 에러는안나지만 , 번지(address)값이 나와버림
}
}
▼있는 회원이면 정보가 toString이용해서 String형태로 나오고, 없는회원은 null로 출력되는걸 볼수있다.
▼
@WebServlet("/login.do")
public class LoginController extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String pass = request.getParameter("pass");
MemberVO vo = new MemberVO();
vo.setId(id);
vo.setPass(pass);
MemberDAO dao = new MemberDAOImpl();
MemberVO vo1 = dao.memberLogin(vo);
String cpath = request.getContextPath(); // <- /sin
//System.out.println(vo1); //vo1출력 -> 지정안해서 회원한명의 전체정보출력(값들을 하나의 String형태로 하나로만들어리턴 - toString - (생략되어있음))
//toString메소드를 Override로 만들지 않아도 object를 상속받기때문에 에러는안나지만 , 번지(address)값이 나와버림
if(vo1!=null) {
//로그인성공 후에는 로그인이 성공된 후 서비스 되는 페이지로 전환(main,jsp)
//redirect(.do) , forward(JSP)
response.sendRedirect(cpath+"/main.jsp");
}else {
//로그인실패 ->다시 URL로그인 페이지로 돌리기
response.sendRedirect(cpath+"/login.jsp");
}
}
}
회원인증 여부를 다른 페이지들도 가능하게 하기위해서
session set attribute해야함(세션바인딩) -> Http Session(메모리 공간)
개개인 로그인 요청하면 32자의 영숫자조합으로 세션id를만든다
그다음부터 로그인하면그 세션id(쿠키 - 흔적) 를가지고실행한다(개인의 정보로 실행하는것)
f12, url엔터한번더치면 headers에있는 Cookie값나옴
처음에는 request?? ->
▼
@WebServlet("/login.do")
public class LoginController extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String pass = request.getParameter("pass");
MemberVO vo = new MemberVO();
vo.setId(id);
vo.setPass(pass);
MemberDAO dao = new MemberDAOImpl();
MemberVO vo1 = dao.memberLogin(vo);
String cpath = request.getContextPath(); // <- /sin
//System.out.println(vo1); //vo1출력 -> 지정안해서 회원한명의 전체정보출력(값들을 하나의 String형태로 하나로만들어리턴 - toString - (생략되어있음))
//toString메소드를 Override로 만들지 않아도 object를 상속받기때문에 에러는안나지만 , 번지(address)값이 나와버림
if(vo1!=null) {
//로그인성공 후에는 로그인이 성공된 후 서비스 되는 페이지로 전환(main,jsp)
HttpSession session = request.getSession(); //session이 안만들어져있으면 만드는것까지 하는메소드.
session.setAttribute("vo", vo1);
//redirect(.do) , forward(JSP)
response.sendRedirect(cpath+"/main.jsp");
}else {
//로그인실패 ->다시 URL로그인 페이지로 돌리기
response.sendRedirect(cpath+"/login.jsp");
}
}
}
session.get메소드중에 시간등을 알수있는것들있음
●main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="kr.login.model.*"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<c:set var="cpath" value = "${pageContext.request.contextPath}"/>
<c:if test="${vo==null}">
<c:redirect url="login.jsp"/>
</c:if>
null이면 main으로가지못하고 계속 login페이지에 머물게
반응형
'JSP Servlet' 카테고리의 다른 글
JSP 내장 객체 (0) | 2023.09.22 |
---|---|
MyBatis API 활용 (0) | 2021.02.08 |
비동기식페이지2(JSON , Ajax) (0) | 2021.02.08 |
비동기식페이지(JQuery,Ajax,JSON) (0) | 2021.02.08 |
회원관리 MVC2+HandlerMapping+JSTL (0) | 2021.02.08 |