서블릿 클래스에서 세션 기술을 사용하는 방법
doGet, doPost 메소드의 HttpServletRequest 파라미터에 대해 getSession이라는 메소드를 호출해야 합니다.
이 메소드는 세션 정보를 포함하는 javax.servlet.http.HttpSession 타입의 객체를 리턴합니다.
HttpSession session = request.getSession();
HttpSession 객체에 대해 setAttribute라는 메소드를 호출하면 세션 데이터 영역에 데이터를 저장할 수 있습니다.
이 중 데이터 이름은 반드시 String 이어야 하고 데이터는 객체이기만 하면 됩니다.
session.setAttribute("ID", "abc1234");
setAttribute 메소드는 같은 이름의 데이터가 이미 있으면 기존 값을 지우고 새로운 값을 입력하므로 데이터 수정 기능을 구현하기 위해서도 사용됩니다.
다른 웹 컴포넌트에서 세션데이터를 읽으려면 HttpSession가 필요한데 그럴 경우에도 getSession 메소드를 이용해서 이 객체를 구할 수 있습니다.
이렇게 구한 HttpSession 객체에 대해 getAttribute라는 메소드를 호출하면 세션 데이터 영역의 데이터를 가져올 수 있습니다.
String str = (String)session.getAttribute("ID");
HttpSession 객체를 이용하면 세션 데이터를 삭제할 수도 있습니다. removeAttribute메소드를 호출해서 할 수 있는데 다음과 같이 사용합니다.
session.removeAttribute("ID");
세션을 이용해서 할 일을 모두 마치고 나면 invalidate라는 메소드를 호출해서 세션을 끝낼 수 있습니다.
이 메소드는 HttpSession객체에 대해 호출해야 하고, 호출 방법은 다음과 같습니다.
session.invalidate();//세션 끝내기
세션 데이터는 같은 웹 애플리케이션 디렉터리에 있는 웹 컴포넌트들끼리만 공유할 수 있습니다.
예제 구성은 다음과 같습니다.
예제 Food.html
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
좋아하는 음식은?
<form action=AnimalServlet>
<input type=text name='FOOD'>
<input type=submit value='확인'>
</form>
</body>
</html>
AnimalServlet.java
package com.exam.kch;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class AnimalServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String food = request.getParameter("FOOD");//가져옴
HttpSession session = request.getSession();//세션 시작
session.setAttribute("FOOD", food);//세션 설정
response.setContentType("text/html;charset=euc-kr");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>테스트</TITLE></HEAD>");
out.println("<BODY>");
out.println("좋아하는 동물은?<BR>");
out.println("<FORM ACTION=ResultServlet>");
out.println("<INPUT TYPE=TEXT NAME=ANIMAL>");
out.println("<INPUT TYPE=SUBMIT VALUE='확인'>");
out.println("</FORM>");
out.println("</BODY>");
out.println("</HTML>");
}
}
ResultServlet.java
package com.exam.kch;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ResultServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
String food = (String) session.getAttribute("FOOD");//FOOD 세션 데이터 가져옴
String animal = request.getParameter("ANIMAL");//ANIMAL파라미터 가져옴
session.invalidate();//세션 종료
response.setContentType("text/html;charset=euc-kr");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>테스트</TITLE></HEAD>");
out.println("<BODY>");
out.println("테스트");
out.printf("당신은 %s와 %s를 좋아합니다.", food, animal);
out.println("</BODY>");
out.println("</HTML>");
}
}
실행 화면
Food.html 화면
AnimalServlet.java화면
ResultServlet.java화면
'프로그래밍 > JSP Servlet' 카테고리의 다른 글
JSP/Servlet - 익셉션(exception) 타입별로 에러페이지 등록하기 (0) | 2016.01.02 |
---|---|
JSP/Servlet - 서블릿 클래스에서 에러페이지 호출하기 (0) | 2015.12.30 |
JSP/Servlet - jsp 페이지에서 에러 발생시 다른 페이지로 이동하기 (0) | 2015.12.30 |
JSP/Servlet - JSP페이지에서 세션 사용하는 방법 (0) | 2015.12.29 |
JSP/Servlet - 쿠키(Cookie) 사용 방법 (0) | 2015.12.27 |
JSP/Servlet - include 메소드 사용법 (0) | 2015.12.21 |
JSP/Servlet - forward 메소드 사용법 (0) | 2015.12.21 |
JSP/Servlet - 파일에서 입력받기 (0) | 2015.12.15 |