[Web] Servlet - JSP 연동하기

  Servlet은 java이기 떄문에 프로그램 로직이 수행되기에 유리하다. IDE 등에서 지원을 좀 더 잘 해준다. JSP는 결과를 출력하기에 Servlet보다 유리하다. 필요한 html문을 그냥 입력하면 된다. 즉, 프로그램 로직 수행은 서블릿, 결과 출력에는 JSP에서 하는 것이 유리하다. 이러한 장단점을 해결하기 위해서 JSP와 서블릿의 연동이 필요하다. 프로그램 로직은 서블릿에서 수행되고 그 결과는 JSP로 포워딩 하는 방법이 사용된다.

예제 : LogicServlet에서 1부터 100 사이 random 값 2개와 그 값의 합을 구한후 그 결과는 result.jsp에 포워딩 한다.

[LogicServlet]

1
2
3
4
5
6
7
8
9
10
11
12
13
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        int rand1 = (int)(Math.random()*100)+1;
        int rand2 = (int)(Math.random()*100)+1;
        int result = rand1+rand2;
        
        request.setAttribute("rand1", rand1);
        request.setAttribute("rand2", rand2);
        request.setAttribute("result", result);
        
        RequestDispatcher rd = request.getRequestDispatcher("/result.jsp");
        rd.forward(request, response);
    }
cs

[result.jsp]

1
2
3
4
5
6
<%
    int rand1 = (int)request.getAttribute("rand1");
    int rand2 = (int)request.getAttribute("rand2");
    int result = (int)request.getAttribute("result");
%>
<%=rand1 %>+<%=rand2 %> = <%=result %>
cs

* jsp에서는 자바코드를 줄이는 것을 목표로 하고 있다. 이를 위해 나온 것이 el 등의 문법이다. 위 코드는 아래와도 같이 쓸 수 있다!

1
${rand1 }+${rand2 }=${result }
cs



No comments:

Powered by Blogger.