JSP와 Servlet 연동
2020-02-08
해당 Post는 JSP와 Servlet연동하는 것에 대해 정리한 파일입니다.
JSP와 Servlet연동
Servlet은 프로그램 로직이 수행되기에 조금 유리한 구조입니다.
서블릿은 자체적으로 자바 파일이니까 프로그램 로직이 수행되는데 JSP보다 조금 더 편합니다.
그리고 JSP는 결과를 출력할 때 서블릿보다 유리합니다
서블릿에서 HTML 페이지를 하나 만들어내려면 out.println에서 문자열로 html 태그들을 다 넣어줬어야하지만
JSP는 그냥 HTML태그만 넣으면 됩니다.
이런 점을 보아 서블릿과 JSP는 각각 이런 장점과 단점을 가지고 있습니다.
이런 서블릿과 JSP의 장단점을 해결하기 위해서
Servlet에서는 프로그램 로직을 수행하게 하고,
그 결과를 JSP에서 출력하게 해주는 방식을 이용합니다.
이렇게 수행하는 것을 Servlet과 JSP의 연동이라고 합니다.
Servlet과 JSP연동 정리.
1)Servlet은 프로그램 로직이 수행되기에 유리하다. IDE 등에서 지원을 좀 더 잘해준다.
2)JSP는 결과를 출력하기에 Servlet보다 유리하다. 필요한 html문을 그냥 입력하면 됨.
3)프로그램 로직 수행은 Servlet에서, 결과 출력은 JSP에서 하는 것이 유리하다.
4)Servlet과 JSP의 장단점을 해결하기 위해서 Servlet에서 프로그램 로직이 수행되고,
그 결과를 JSP에게 포워딩하는 방법이 사용되게 되었다.
for Example(LogicServelt.java)
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class LogicServelt
*/
@WebServlet("/logic")
public class LogicServelt extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LogicServelt() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int v1 = (int)(Math.random()*100)+1;
int v2 = (int)(Math.random()*100)+1;
int result = v1+v2;
request.setAttribute("v1", v1);
request.setAttribute("v2", v2);
request.setAttribute("result", result);
RequestDispatcher rd = request.getRequestDispatcher("/result.jsp");
rd.forward(request, response);
}
}
for Example(result.jsp)
<%@ 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>
<%
int v1 = (int)request.getAttribute("v1");
int v2 = (int)request.getAttribute("v2");
int result = (int)request.getAttribute("result");
%>
<%= v1 %>+ <%=v2 %> = <%= result %>
</body>
</html>
위 과정은 아래의 그림과 같은 로직으로 형성이 됩니다.