웹 브라우저의 정보를 유지
하기 위한 세션 정보를 저장
브라우저가 시작될 때
저장공간이 생기고,브라우저가 닫히면
저장공간이 사라진다. 내장객체
로서 브라우저별로 각각 session이 존재
하고sessionID
를 생성 한 후 정보를 추출한다.저장위치
: 브라우저
저장형식
: Object
-> 값 가져올 때 형변환 해야함만료시점
: 브라우저 종료 시 삭제(기간 지정 가능)
용량제한
: 서버가 허용하는 한, 용량제한 없음
속도
: 쿠키보다는 느림보안
: 쿠키보다는 좋다.
- session의 사용
-> session의 값 설정-> session 시간 설정session.setAtrribute("설정한 세션아이디", 세션에 넣을 값);
-> session 값 가져오기session.setMaxInactiveInterval(60*60); // 60분동안 세션 유지 session.setMaxInactiveInterval(-1); // 세션의 시간을 무한대로 설정
-> session 값 삭제session.getAttribute("설정한 세션 아이디");
session.removeAttribute("설정한 세션아이디"); session.invalidate(); // 세션 전체 제거, 무효화
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="calc3" method="post"> <div> <label>입력 : </label> <input type="text" name="value"> </div> <div> <input type="submit" name="operator" value="+"> <input type="submit" name="operator" value="-"> <input type="submit" name="operator" value="="> </div> </form> </body> </html>
"+"
나 "-"
를 클릭하면 첫번 째 입력했던 숫자와application에 저장
되고, 두번 째 숫자를 입력하고"="
을 클릭하면 연산 결과가 출력된다.package com.koit.web.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet("/calc3") public class MyServlet3 extends HttpServlet{ @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { //session 저장소 선언 HttpSession session = arg0.getSession(); PrintWriter out = arg1.getWriter(); String value_ = arg0.getParameter("value"); String op = arg0.getParameter("operator"); int value = 0; if(value_ != null && !value_.equals("")) { value = Integer.parseInt(value_); } if(op.equals("=")) { // 두번째 숫자와 '=' 이 value와 op에 저장됨. int x = (int) session.getAttribute("value"); int y = value; // 두번재 넘어온 숫자 String operator = (String) session.getAttribute("op"); int result = 0; if(operator.equals("+")) { result = x + y; }else { result = x - y; } out.println("결과 : " + result); }else { // op가 +, - 인 경우 또 value와 op값을 받아야하는데, // 요청은 단발성이기 때문에 요청이 다시 들어오면 기존 값은 사라진다. // 그렇기 때문에 기존 요청을 session에 저장해놓고 //다시 파라미터를 전달받아야 한다. session.setAttribute("value", value); session.setAttribute("op", op); arg1.sendRedirect("calc3.html"); } } }
HttpSession session = arg0.getSession();
사용자가 처음 입력한 숫자와 '+', '-' 를 파라미터로 받아 변수에 저장한다.
ex) 5-
op변수가 '+', '-' 인 경우 두번째 숫자와 '='의 요청을 받아야하는데,
그렇게 되면 첫 번째 받는 요청의 값이 사라지게 된다.
ex) 3=
그렇기 때문에 첫번째 요청값인 5-를 session 저장소에 저장을 해야한다.
session.setAttribute("value", value); session.setAttribute("op", op);
그 다음 두번째 요청 값인 숫자와 '='을 다시 변수에 받아오면
처음 요청된 '+','-' 에 맞게 연산을 해야하기 때문에
session에서 값을 꺼내와야 한다.
session에서 값 꺼내기 (저장할 때 썼던 이름값으로 담겨진 값을 가져온다)
int x = (int) session.getAttribute("value"); String operator = (String) session.getAttribute("op");