JSP

JSP (쿠키, 세션 로그인 및 기본개념)

code2772 2022. 11. 18. 16:07
728x90
반응형

✔ 내장객체

✔ JSP 내장 객체

      ❗ request 객체
      웹 브라우저의 요청 정보를 저장하고 있는 객체

      메소드
      getHeader() : 요청 정보의 헤더를 반환
      getMethod() : 요청 정보의 http method(get, post) 반환
      getParameter() : 요청 정보의 이름(name)으로 요청 값(value)을 반환
      getParameterValues() : 요청 정보의 이름으로 요청 값을 배열로 반환
      setCharacterEncoding() : 요청 정보의 인코딩을 설정



      ❗ response 객체
      웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체

 

✔ 쿠키

🔏 쿠키(cookie)
- 프로그램에서 흔적을 남기는 것. 클라이언트와 서버가 연결을 시도한 흔적을 남겼다가,
후에 또 연결을 시도할 시 과거의 접속을 이어나가기 위해 흔적을 사용하는 방법.
- 클라이언트에 정보를 저장, 클라이언트 측에서 윈도우나 프로그램을 제거하면 서버가 인지 X
- 클라이언트에 저장하므로 서버의 부하를 줄일 수 있지만 보안상 취약(누구나 확인가능)
- 데이터의 저장이 1.2MB로 제한(문자로 저장)
- 텍스트 데이터만 저장

🔏 쿠키를 생성하는 방법
Cookie 객체명 = new Cookie("키", "값");

🔏 쿠키 시간 설정
setMaxAge() : 쿠키가 유지되는 시간을 설정(초)
setMaxAge(60 * 60 * 24 * 30); // 30일
60초에 60분에 24시간에 30일

🔏 쿠키를 클라이언트에게 전달하는 방법
response.addCooki(쿠키객체);

🔏 쿠키를 서버에서 읽어오는 방법
Cookie[] 배열명 = request.getCookie();

 

✔ 쿠키 예제 1

<%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>
<%@ page import = "java.net.URLEncoder" %>
<%
      Cookie cookie1 = new Cookie("userid", "apple");
      Cookie cookie2 = new Cookie("name",  "김사과");

      cookie1.setMaxAge(180);
      cookie2.setMaxAge(180);
      /* 시간이 지나면 쿠키 삭제(3분) */

      response.addCookie(cookie1);
      response.addCookie(cookie2);
      %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키</title>
</head>
<body>
<h2>쿠키</h2>
<p>쿠키가 정상적으로 설정되었습니다.</p>
</body>
</html>

 

✔ 쿠키 예제 2

<%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>
<%
      Cookie[] cookies = request.getCookies();
      %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키 읽기</title>
</head>
<body>
<h2>쿠키 읽기</h2>
<%
      for(Cookie cookie : cookies){
      out.println(cookie.getName() + ":" + cookie.getValue()+ "<br>");
      }
      %>
</body>
</html>

 

✔ 쿠키 로그인 메인 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>
<%
      Cookie[] cookies = request.getCookies();
      String userid = null; /* nullPointException에 대비하기 위해 */

      if(cookies != null){
      for(Cookie cookie : cookies){/* 여러 쿠키가 담겨있을것을 예상하여 */
      if("userid".equals(cookie.getName())){
      userid = cookie.getValue();
      }
      }
      }
      %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키로 구현한 로그인</title>

</head>
<body>
<h2>쿠키로 구현한 로그인</h2>

<%
      if(userid == null){
      %>

<form method ="post" action="3_login_ok.jsp">
<p>아이디 : <input type ="text" name ="userid"></p>
<p>비밀번호 : <input type ="password" name ="userpw"></p>
<p><button>login</button></p>
</form>

<%
      }else{
      %>

<h3><%=userid %>님 환영합니다!!!!!!</h3>
<p><a href ="3_logout.jsp">로그아웃</a></p>
<!-- 기존에 같은 값으로 덮어씌우면 쿠키값을 없는것처럼 할 수 있고 아니면 시간을 0 또는 마이너스로 -->
<%
      }
      %>

</body>
</html>

 

✔ 쿠키 로그인 구현 부 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>

<%
      String userid = request.getParameter("userid");
      String userpw = request.getParameter("userpw");

      if(userid.equals("apple") && userpw.equals("1234")){
      //login        
      Cookie cookie = new Cookie("userid",userid);
      cookie.setMaxAge(60*10);
      response.addCookie(cookie);
      %>

<script>
    alert('로그인 되었습니다.')
         location.href = "3_login.jsp";
//refresh - 데이터가 갱신이됨, 새로운 페이지를 가지고 오며 캐시가 날라간다.
</script>

<%
      }else{
      //login X
      %>

<script>
            alert('아이디 또는 비밀번호를 확인하세요.')
                 history.back();
// 캐시가 남는다 -> 캐시에 있는 정보를 가지고 앞, 뒤로 이동 한다. 
</script>

<%
      }
      %>

 

✔ 쿠키 로그아웃 구현부 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>

<%
      Cookie[] cookies = request.getCookies(); /* 쿠키불러오기 */

      if(cookies != null){
      for(Cookie cookie : cookies){
      if("userid".equals(cookie.getName())){
      Cookie newCookie = new Cookie("userid","");
      newCookie.setMaxAge(0);
      response.addCookie(newCookie);
      }
      }
      }

      %>

<script>
   alert('로그아웃 되었습니다.')
         location.href = '3_login.jsp';
</script>
    

 

✔ 세션

✔ 세션(session)
      - 서버에 사용자 정보를 저장
      - 서버상에 존재하는 객체로 브라우저 단위당 1개씩 존재
      - 쿠키에 비하여 보안이 좋음
      - 웹브라우저를 닫기 전까지 유지

      🔏 세션변수 만들기
      session.setAttribute("변수명", "값");

      🔏 세션변수 값 읽어오기
      session.getAttribute("변수명");

      🔏 세션변수 삭제하기
      session.invalidate();

      🔏 세션 아이디 가져오기
      session.getId()

      🔏 세션 아이디 시간설정
      - 톰켓 web.xml (분딘위 세션 시간을 설정)

<session-config>
<session-timeout>30</session-timeout>
</session-config>


      sendRedirect() : 클라이언트를 원하는 페이지로 이동

 

✔ 세션 예제1

<%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>
<%
      session.setAttribute("userid", "apple");
      //  B0974869CBE0B908661BE62D3F74CDFA -> userid(apple)
      %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>session</title>
</head>
<body>
<h2>session</h2>
<p>session id: <%=session.getId() %></p>
</body>
</html>

 

✔ 세션 예제2

<%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>
<%
      String userid = null;
      if(session.getAttribute("userid") != null){
      userid = (String)session.getAttribute("userid");
      }else{
      userid = "아이디 없음";
      }
      %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>세션 읽어오기</title>
</head>
<body>
<h2>세션 읽어오기</h2>
<p>세션 아이디 : <%=session.getId() %></p>
<p>세션  변수(아이디) : <%=userid %></p>
</body>
</html>

 

✔ 세션 로그인 메인 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>
<%
      String userid = null;
      if(session.getAttribute("userid") != null){
      userid = (String)session.getAttribute("userid");
      }
      %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>세션으로 구현한 로그인</title>

</head>
<body>
<h2>세션으로 구현한 로그인</h2>

<%
      if(userid ==null){
      %>

<form method ="post" action="6_login_ok.jsp">
<p>아이디 : <input type ="text" name ="userid"></p>
<p>비밀번호 : <input type ="password" name ="userpw"></p>
<p><button>login</button></p>
</form>

<%
      }else{
      %>

<h3><%=userid %>님 환영합니다.</h3>
<p><a
    href ="6_logout.jsp">로그아웃</a></p>
<!-- 기존에 같은 값으로 덮어씌우면 쿠키값을 없는것처럼 할 수 있고 아니면 시간을 0 또는 마이너스로 -->
<%
      }
      %>

</body>
</html>

 

✔ 세션 로그인 로그인 부분 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>

<%
      String userid = request.getParameter("userid");
      String userpw = request.getParameter("userpw");

      if(userid.equals("apple") && userpw.equals("1234")){
      //login 성공!
      session.setAttribute("userid",userid);
      %>

<script>
    alert('로그인 되었습니다.')
         location.href = "6_login.jsp";
//refresh - 데이터가 갱신이됨, 새로운 페이지를 가지고 오며 캐시가 날라간다.
</script>

<%
      }else{
      //login 실패!
      %>

<script>
            alert('아이디 또는 비밀번호를 확인하세요.')
                 history.back();
// 캐시가 남는다 -> 캐시에 있는 정보를 가지고 앞, 뒤로 이동 한다. 
</script>

<%
      }
      %>

 

✔ 세션 로그인 로그아웃 부분 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>

<%

      session.invalidate();
      %>

<script>
   alert('로그아웃 되었습니다.')
         location.href = '6_login.jsp';
</script>
    
반응형