session에 저장된 정보는 브라우저를 닫기 전까지 저장된다.
스프링에서는 매개변수로 직접 HttpSession를 선언가능하다.
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- MyController04으로 요청 --%>
<div>
<a href="${contextPath}/article/add.do?title=이럴수가">기사 등록하기</a>
</div>
</body>
</html>
@Controller
public class MyController04 {
@GetMapping("/article/add.do")
public String articleAdd(HttpServletRequest request) {
HttpSession session = request.getSession();
session.setAttribute("title", request.getParameter("title"));
return "article/result";
}
@GetMapping("/article/add.do")
public String add2(HttpSession session, HttpServletRequest request) {
session.setAttribute("title", request.getParameter("title"));
return "article/result";
}
1) 클래스 레벨의 annotation이다.
2) Model에 값을 저장하면 HttpSession에 함께 저장된다.
@GetMapping("/article/add.do")
public String add3(HttpServletRequest request, Model model) {
model.addAttribute("title", request.getParameter("title"));
return "article/result";
}

${contextPath}/article/main.do 요청을 받으면 session의 정보를 초기화하고 index.jsp를 반환해줌
@GetMapping("/article/main.do")
public String main(HttpSession session) {
// session 정보 초기화
session.invalidate();
return "index";
}
@GetMapping("/article/main.do")
public String main2(SessionStatus sessionStatus) {
// session attribute의 삭제
sessionStatus.setComplete();
return "index";
}
@GetMapping("/article/confirm.do")
public String confirm(HttpSession session) {
// session에는 Object 타입으로 값들이 저장되기 때문에 값을 꺼내는 경우 캐스팅이 필요하다.
String title = (String)session.getAttribute("title");
System.out.println(title); // console로 확인하기 위함
return "index";
}
@GetMapping("/article/confirm.do")
public String confirm2(@SessionAttribute("title") String title) {
// session에 저장된 "title" 속성을 String title 에 저장한다.
System.out.println(title);
return "index";
}
} // MyController04
결과확인을 위한 result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${title}
<br>
${sessionScope.title}
<a href="${contextPath}/article/main.do">세션 초기화하고 main화면으로 가기</a>
<br>
<a href="${contextPath}/article/confirm.do">세션 확인하기</a>
</body>
</html>