scope에 값을 줄 때는 setAttribuate(), 값을 받을 때는 getAttribute()를 사용한다.
하나의 어플리케이션이 생성되어서 소멸 될 때까지 계속 유지한다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
ServletContext application = getServletContext();
int value = 1;
application.setAttribute("value", value);
out.println("<h1>value : " + value + "</h1>");
}
application scope를 만들고, value 변수를 관리하도록 하였다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
ServletContext application = getServletContext();
try {
int value = (int)application.getAttribute("value");
value++;
application.setAttribute("value", value);
out.println("<h1>value : " + value + "</h1>");
}catch(NullPointerException ex) {
out.println("value가 설정되지 않습니다.");
}
}
저장되어 있는 value 값을 불러와 1 증가시키고 다시 application scope에 넣어주었다.
해당 값은 어느 브라우저나 클라이언트가 접속해도 같은 값을 보이기 때문에, 전역적으로 동일한 값을 보여줘야 할 때 사용한다.
아마.. 게시글 조회수나 좋아요 수에 적용하면 될 것 같다.
세션 객체가 생성되어서 소멸 될 때까지 사용 가능하다.
여러개의 요청이 들어와도 남아있다. 상태 유지를 할 때 사용한다.
클라이언트로부터 요청이 들어와서 서버가 응답을 보낼 때까지 사용 가능하다.
한 페이지 안에서만 사용 가능하다.