본문 바로가기

JSP/기본다지기

JSP 4일차 필기 (Redirect)

이전 글에서 만든 간단한 로그인 양식을 응용하여 서블릿끼리 파라미터를 주고 받으며 로그인을 테스트해보자.


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