반응형

 

 

 

 

 

 

 

1. 서블릿과 JSP 차이

서블릿은 자바이기 때문에 프로그램 로직을 짜기가 편리하다.

반면, JSP는 자바 코드를 사용하기 위해 스크립트릿이라든지 선언문이라든지를 통해 써야하기 때문에 번거롭다.

 

하지만, JSP는 html을 사용할 수 있기 때문에 "출력"면에서 편리하다.

서블릿에서는 html을 사용할 때 out.println에서 문자열로 html 태그를 다 넣어줘야 하기 때문에 매우 번거롭다.

 

즉, 프로그램 로직을 짜기에는 서블릿이 편하고, html을 출력하기 위해서는 JSP가 편하다.

따라서, 서블릿과 JSP를 연동하여 서블릿에서 프로그램 로직을 짜고, JSP로 포워딩한다.

 

 

 

 

2. 코드

: 2개의 랜덤 값을 더해서 출력하는 코드를 작성해본다.

 

 

package example;

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;

@WebServlet("/logic")
public class LogicServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
 
    public LogicServlet() {
        super();

    }

	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");		// 루트 : WebContent
		rd.forward(request, response);
		
	}

}

LogicServlet.java

 

: v1과 v2 랜덤값을 발생시키고, result에 그 합을 넣는다

: request에 v1, v2, result 를 담아서 보낸다.

: RequestDispatcher로 result.jsp로 forward 한다.

 

 

 

 

<%@ 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>

<!-- jsp -->
<%
	int v1 = (int)request.getAttribute("v1");
	int v2 = (int)request.getAttribute("v2");
	int result = (int)request.getAttribute("result");
%>
<%=v1 %> + <%=v2 %> = <%=result %>
<br />


<!-- jstl -->
${v1 } + ${v2 } = ${result}

</body>
</html>

result.jsp

 

 

: request 객체에서 v1, v2, result 값을 받아온다.

: JSTL로 구현도 가능하다.

 

 

 

 

 

: forward 이기 때문에 url 매핑은 바뀌지 않는다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

+ Recent posts