1. Servlet과 JSP의 연동이란?
Servlet은 java 파일이기 때문에 프로그램 로직이 수행되기에 유리한 구조를 가진다. 하지만 Servlet은 HTML 페이지를 만들기 위해서는 out.prinln에 문자열로 html 태그들을 다 넣어줘야 하는 불편함이 있다. 반면 JSP는 자바 코드를 사용하기 위해 Scriptlet, Expression등을 사용해야 했지만 html 태그를 그냥 작성하면 되기 때문에 결과를 출력하기 쉽다. 이런 Servlet과 JSP의 장단점을 해결하기 위해 Servlet은 프로그램 로직을 수행하게 하고, 이후 JSP로 포워딩을 하는 방식을 사용한다. 이런 방식은 "Servlet과 JSP의 연동"이라고 부른다.
2. 예제 코드
아래 코드들은 1~100 사이의 두 난수값을 생성하여 둘을 더하는 과정을 출력하기 위한 Servlet과 JSP코드다.
// Servlet service 메서드
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int randValue1 = (int)(Math.random()*100)+1;
int randValue2 = (int)(Math.random()*100)+1;
int result = randValue1+randValue2;
request.setAttribute("randValue1", randValue1);
request.setAttribute("randValue2", randValue2);
request.setAttribute("result", result);
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/forwardJsp.jsp");
requestDispatcher.forward(request, response);
}
위처럼 Servlet 파일에는 대부분의 로직들의 처리가 수행된다. 이후 모든 데이터를 처리하면 jsp파일로 forward한다.
// JSP파일 Body부분
<body>
<%
int randValue1 = (int)request.getAttribute("randValue1");
int randValue2 = (int)request.getAttribute("randValue2");
int result = (int)request.getAttribute("result");
%>
<p>
<%=randValue1 %> + <%=randValue2 %> = <%=result %>
</p>
</body>
위와 같이 JSP 파일에서는 값을 읽어와서 값을 출력하는 일들만 수행하게 된다.
위에서 scriptlet과 expression부분은 출력을 담당하며 디자인적인 요소가 더 들어갈 수 있다. 하지만 위와 같이 자바코드가 계속 나온다면 디자인하기 힘들 수 있다. 따라서 이런 자바 코드가 점점 없어지고 이것을 누구든 사용할 수 있도록 EL과 JSTL 등이 나오게 된다. 이 내용은 추후에 살펴보자.
References
'BackEnd > JSP & Servlet' 카테고리의 다른 글
[JSP] JSTL(JSP Standard Tag Library) (0) | 2022.12.24 |
---|---|
[JSP] EL(Expression Language) (0) | 2022.12.23 |
Forward란? (0) | 2022.12.22 |
Redirect란? (0) | 2022.12.22 |
Scope (Page, Request, Session, Application) (0) | 2022.12.22 |