** 기존의 프로젝트를 자바 코드와 html 영역을 완전히 나누기 위해 servlet을 쓰려고 한다.
오랜만에 servlet을 써보려니 조금 헷갈려서 테스트 서블릿을 직접 만들어 정리를 한번 해보았다.
*** EL (Expression Language)이란?
- JSP 페이지에서 저장소(request, session, application) 영역에 담긴 내용을 편하게 "출력"할 때 사용한다.
- JSP에서 내용을 가져올 때 아래와 같이 사용한다.
${ 저장한 키값 }
- 저장한 키값으로만으로도 저장소 상관없이 가져올 수 있으나 혹시나 저장소별 키값이 같은 경우 아래와 같이 scope로 범위를 정확히 지정할 수 있다.
${requestScope.키 값}
${sessionScope.키 값}
${applicationScope.키 값}
*** 데이터 저장소
- 여기서는 서블릿과 서블릿 사이, 서블릿과 JSP 사이에 요청이나 값 등을 주고 받을 때 저장하고 꺼내오는 저장소를 말한다.
- 서블릿의 데이터 저장소는 총 pageContext, request, session, application 4개로 나눌 수 있다.
** request
- 클라이언트로부터의 요청을 서블릿으로 전달하는 역할.
- forward 시 값을 유지하고자 할 때 사용.
- request를 받는 리소스에서만 공유 가능.
- JSP -> request 내장 객체 사용.
- Servlet -> HttpServletRequest 객체 사용
- 생명 주기 : 클라이언트 요청이 response되기 전까지 살아있음.
** session
- 클라이언트 데이터를 유지하는 역할.
- 로그인 여부처럼 사용자별로 유지 되어야할 정보가 있을 때 사용.
- 모든 서블릿 사이에서 데이터 공유가 가능.
- JSP -> session 내장 객체 사용.
- Servlet -> HttpServletRequest에서 getSession 메서드로 꺼내서 사용
- 생명 주기 : 브라우저가 종료되기 전까지 살아있음.
** Application (Servlet Context)
- 서블릿 컨테이너와 서블릿 사이를 연결하는 역할.
- 모든 클라이언트가 공통으로 사용해야하할 값들이 있을 때 사용
- 모든 서블릿 사이에서 데이터 공유가 가능.
- JSP -> application 내장 객체 사용.
- Servlet -> getServletContext() 메서드로 꺼내서 사용.
- 생명 주기 : 서버가 종료되기 전까지 살아있음.
*** 테스트 코드
@WebServlet("/test")
public class test extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String test1 = "Hello! request";
String test2 = "Hello! session";
String test3 = "Hello! application";
request.setAttribute("requestTest", test1);
HttpSession session = request.getSession();
session.setAttribute("sessionTest", test2);
ServletContext application = this.getServletContext();
application.setAttribute("applicationTest", test3);
request.getRequestDispatcher("/WEB-INF/test.jsp").forward(request, response);
}
}
테스트 서블릿의 코드
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>request 값 : ${requestTest}</p>
<p>session: ${sessionTest}</p>
<p>application : ${applicationTest}</p>
<br>
<p>스코프 적용 request 값 : ${requestScope.requestTest}</p>
<p>스코프 적용 session: ${sessionScope.sessionTest}</p>
<p>스코프 적용 application : ${applicationScope.applicationTest}</p>
<br>
</body>
</html>
테스트 JSP 코드
♣ 참고 및 인용
'웹 개발 한걸음' 카테고리의 다른 글
[Servlet] 로그아웃 + UTF-8 WebFilter 구현하기 (0) | 2021.03.22 |
---|---|
[Servlet] 로그인 구현하기 (0) | 2021.03.18 |
[JSP] 14강 - 메인 화면 꾸미기 (0) | 2021.03.17 |
[JSP] 13강 Part2 - 게시글 삭제 (0) | 2021.03.17 |
[JSP] 13강 Part1 - 게시글 수정 (0) | 2021.03.15 |