본문 바로가기

web/JSP

jsp session

홈피를 만들어 놓고 정작 중요한 세션 설정을 않했었다;; (오픈 전이라 다행이다.ㅜㅡㅜ 큰일 날뻔 했다.)
이게 왜 중요 한지는 말 않해도 다 알듯. (로그인 없이 특정 페이지를 마음대로 들어갈수 있다. 끔찍하잔아!)
아주~ 간단한 예제를 보고 나도 만들었으니 나도 아주 간단하게 예제를 쓴다.

먼저 login 부분(sessionLogin.jsp)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<!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=EUC-KR">
<title>session test </title>
</head>
<%
 String id = request.getParameter("id") == null ? "1":request.getParameter("id");
 String password = request.getParameter("password") == null ? "2":request.getParameter("password");
 
 if (id.equals(password)) {
  session.setAttribute("sessionId", id);
  response.sendRedirect("sessionMain.jsp");
 } 
 
 else{
%>
<body>

<form action="sessionLogin.jsp"
      method="post">
아이디 <input type="text" name="id" size="10">
암호 <input type="password" name="password" size="10">
<input type="submit" value="로그인">
</form>

</body>
<%} %>
</html>



만든 페이지의 경우 ID와 password가 같으면 Main 페이지로 이동하게 만들었다. 
중요한 부분은 빨간색으로 칠해진 session 설정 부분 . ID로 sessionId 라는 이름으로 세션을 설정했다.
다음은 Main부분 (sessionMain.jsp 여기가 가장 중요하지 않을까?)



<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!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=EUC-KR">
<title>session Main</title>
<%
String sessionid = (String)session.getAttribute("sessionId");
boolean sessiondecide = sessionid == null ? false : true;

if(sessiondecide == false){
    /******************************************
    세션 객체가 없다면 최초 로그인 페이지로 되돌린다.
    *******************************************/
    response.sendRedirect("sessionLogin.jsp");
    return;

  }
%>
</head>
<body>
<a href="sessionDelete.jsp">세션 제거</a>
</body>
</html>

넘어온 세션(sessionId)을 체크한다. String에 만일 세션이 있다면 true를 없다면 false가 들어갈것이다.
그다음 if 문에서 false면 처음 화면인 Login화면으로 넘어가게 만들었다.
그다음엔 세션 제거 부분 (sessionDelete.jsp)

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

session = request.getSession(false);
if(session != null){ session.invalidate(); }
response.sendRedirect("sessionLogin.jsp");

%>

Main 페이지에서 세션제거를 눌러주면 발동하는 페이지. 세션을 삭제한다.
getSession(false) 함수는 세션이 있다면 세션을 반환하고 없다면 false를 반환한다. 세션이 있다면 if문에 걸려서 세션을 삭제한다. ( invalidate()) 그다음 처음 화면(sessionLogin.jsp) 으로 이동한다.