이전 글에서 만든 간단한 로그인 양식을 응용하여 서블릿끼리 파라미터를 주고 받으며 로그인을 테스트해보자.
L05Redirect 프로젝트 생성.
WebContent 아래에 index.jsp를 생성한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <!-- index.jsp를 호출하면 redirect로 스쳐지나가게 할 예정. --> <% response.sendRedirect("./L01LoginForm.jsp"); %> </body> </html> | cs |
index.jsp에 접근하면 곧바로 L01LoginForm.jsp로 Redirect한다.
L01LoginForm.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>servlet을 이용해서 로그인 성공하기.</title> </head> <body> <h1>로그인 form</h1> <!-- 제출한 파라미터와 db에서 가져온 id와 pw를 L02LoginController.java에서 검사 같으면 true를 파라미터로 L03LoginResult.jsp로 보낸다. -> 성공메시지. 다르면 L01LoginForm.jsp 페이지로 와서 id와 password가 틀립니다. 메시지 출력 L03LoginResult.jsp에서 파라미터 true가 없으면 접근할 수 없도록 해라 (강제로 L01LoginForm.jsp)로 이동 --> <%String login = request.getParameter("msg"); if(login != null){ %> <h3><%=login%></h3> <% }else{ out.print("<h3>로그인 정보를 입력하세요</h3><hr>"); } %> <form action="./LoginCtrl" method="post"> <p> <label>아이디 : </label> <input type="text" name="id" value="jsp"> </p> <p> <label>비밀번호 : </label> <input type="password" name="pwd" value="admin1234"> </p> <button type="submit">제출</button> </form> </body> </html> | cs |
로그인에 실패했을 시 msg 파라미터를 넘겨받아 출력하는 부분 (19~)
로그인에 필요한 아이디와 비밀번호를 Post방식으로 넘기기 위한 양식을 작성. (28~)
양식은 L02LoginController(/LoginCtrl)로 넘긴다.
L02LoginController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package com.jsp.login; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/LoginCtrl") public class L02LoginController extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); String id = request.getParameter("id"); String pwd = request.getParameter("pwd"); String db_id = "jsp"; String db_pwd = "admin1234"; if(id!=null && pwd!=null){ if(id.equals(db_id)&&pwd.equals(db_pwd)){ response.sendRedirect("./L03LoginResult.jsp?login=true"); }else{ response.sendRedirect("./L01LoginForm.jsp?msg=Access Denied."); } } } } | cs |
넘겨받은 id와 pwd 파라미터를 자신이 가지고 있는 문자열과 비교하여 로그인 성공인지 실패인지 검사하여 해당하는 페이지로 Redirect 한다.
로그인에 성공할 시 login 파라미터를 가지고 L03LoginResult.jsp로 Redirect 한다.
로그인에 실패할 시 msg(로그인 실패 메세지) 파라미터를 가지고 L01LoginForm.jsp로 Redirect 한다.
L03LoginResult.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>로그인 성공</title> </head> <%String login = request.getParameter("login"); %> <body> <%if(login.equals("true")){%> <h1>로그인 성공</h1> <%}else{response.sendRedirect("./L01LoginForm.jsp?msg=Access Denied.");}%> </body> </html> | cs |
login 파라미터(성공시 true)를 넘겨받아 true인지 검사한 후 로그인 성공을 출력한다.
login 파라미터의 값을 받지 못했거나 true가 아닐 경우에는 msg(로그인 실패 메시지)파라미터를 가지고 L01LoginForm.jsp로 다시 돌아간다.
이 때, parameter login이 오지 않으면 이 페이지에 접근할 수 없다.
여기에서 login은 세션 또는 쿠키 대신이다.
세션 또는 쿠키란 브라우저가 유지하고 있는 파라미터를 가리키는 말이다.
'JSP > 기본다지기' 카테고리의 다른 글
JSP 5일차 필기 (Template) (0) | 2016.10.24 |
---|---|
JSP 5일차 필기 (Dispatcher) (0) | 2016.10.24 |
JSP 4일차 필기 (간단한 Login 양식) (0) | 2016.10.21 |
JSP 4일차 필기 (전역변수, 메소드) (0) | 2016.10.21 |
JSP 4일차 필기 (0) | 2016.10.21 |