JSP Cookie 로그인 페이지 작성하기

MINJU KIM·2023년 12월 4일

JSP

목록 보기
11/30

로그인 페이지 작성하기

//CookieManagerclass
package com.util;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CookieManager {
    //쿠키 관리하기 위함.
//명시한 이름, 값, 유지기간 조건으로 새로운 쿠키를 생성합니다.
    public static void makeCookie(HttpServletResponse response, String cName, String cValue, int cTime){
        Cookie cookie = new Cookie(cName, cValue); //쿠키 생성
        cookie.setPath("/"); //경로 설정
        cookie.setMaxAge(cTime); //유지기간 설정
        response.addCookie(cookie); //응답 객체에 추가

    }
//명시한 이름의 쿠키를 찾아 그 값을 반환합니다.
    public static String readCookie(HttpServletRequest request, String cName){
        String cookieValue = ""; //반환 값

        Cookie[] cookies = request.getCookies();
        if(cookies != null){
            for(Cookie c : cookies){
                String cookieName = c.getName();
                if(cookieName.equals(cName)){
                    cookieValue = c.getValue(); //반환 값 갱신
                }
            }
        }
        return cookieValue;
    }
//명시한 이름의 쿠키를 삭제합니다.
public static void deleteCookie(HttpServletResponse response, String cName){
    makeCookie(response, cName, "", 0);
}
}
//JSFuncion
package com.util;

import javax.servlet.jsp.JspWriter;
//jspWriter 클래스 임포트. 기본 내장 객체인 out이 JspWriter 타입.


public class JsFunction {

    public static void alertLocation(String msg, String url, JspWriter out) {
        //alertLocation()은 알림창으로 메시지를 보여준 후, 명시한 URL로 이동하는 메서드.
        //매개변수를 3개 받는데, 각각의 의미가 다르다.
//        String msg : 알림창에 띄울 메세지, String url : 알림창을 닫은 후 이동할 페이지의 url, JspWriter out : 자바 스크립트 코드를 삽입할 출력 스트림(jsp의 out내장 객체 )
        try {
            String script = "" //삽입할 자바스크립트 코드
                    + "<stript>"
                    + " alert ('" + msg + "');"
                    + "location.href='" + url + "';"
                    + "</script>";
            out.println(script); //자바스크립트 코드를 out 내장 객체로 출력(삽입)
        } catch (Exception e) {
        }
    }
    //메시지 알림창을 띄운 후 이전 페이지로 돌아갑니다.
    public static void alertBack(String msg, JspWriter out){
            try {
                String script = ""
                        + "<script>"
                        + " alert ('" + msg + "');"
                        + " history.back()"
                        + "</script>";
                        out.println(script);
            }
            catch (Exception e){

            }

    }


}

<%@ page import="com.util.CookieManager" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%
String loginId = CookieManager.readCookie(request, "loginId");

String cookieCheck = ""; //cookieCheck 변수 값 결정
    if(!loginId.equals("")){
        cookieCheck = "checked";
    }
    %>

<html>
<head>
    <title>아이디 저장하기</title>
</head>
<body>
<h2>로그인 페이지</h2>
<form action="IdSaveProcess.jsp" method="post">
    아이디 : <input type="text" name="user_id" value="<%= loginId%>" />
    <input type="checkbox" name="save_check" value="Y" <%= cookieCheck %> />
    아이디 저장하기
    <br/>
    패스워드 : <input type="text" name="user_pw" />
    <br/>
    <input type="submit" value="로그인하기" />

</form>
</body>
</html>

<%@ page import="com.util.CookieManager" %>
<%@ page import="com.util.JsFunction" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String user_id = request.getParameter("user_id");
String user_pw = request.getParameter("user_pw");
String save_check = request.getParameter("save_check");

if("must".equals(user_id) && "1234".equals(user_pw)){
    //로그인 성공
    if(save_check != null && save_check.equals("Y")){
        CookieManager.makeCookie(response, "loginId", user_id, 86400);
    }
    else{
        CookieManager.deleteCookie(response, "loginId");
    }
    JsFunction.alertLocation("로그인에 성공했습니다.", "IdSaveMan.jsp", out);
}
else{
    //로그인 실패
    JsFunction.alertBack("로그인에 실패했습니다.", out);
}

%>

0개의 댓글