-
[부스트코스/back-end] 2. DB연결 웹앱 : forward, servlet&JSP 연동Front-end/부스트코스 : 웹 프로그래밍 2020. 3. 23. 21:41
< 포워드(forward) 란? >
- 요청을 받은 서버가 요청의 일부를 다른 서버에게 넘겨주는 작업
- forward와 redirect의 차이점? 리다이렉트는 서버가 클라이언트에게 새로 요청할 곳을 알려주는 작업이면서 URL이 변경되고, 포워드는 요청받은 서버가 전부 처리하는 것이 아니라 다른 서버에게 맡기는 것 (URL이 바뀌지 않음)
- 요청이 1개인지 요청이 2개인지 아는 것이 중요함!
#front
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int dice = (int)(Math.random()*6)+1; request.setAttribute("dice", dice); RequestDispatcher requestDispatcher = request.getRequestDispatcher("/NextServlet"); requestDispatcher.forward(request, response); }
#next
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>form</title></head>"); out.println("<body>"); int dice = (Integer)request.getAttribute("dice"); out.println("dice : " + dice); for(int i = 0; i < dice; i++) { out.print("<br>hello"); } out.println("</body>"); out.println("</html>"); }
Servlet과 JSP 연동
- servlet은 프로그램 로직 수행에 유리함
- JSP는 결과 출력에 유리함
- 둘의 장단점을 해결하기 위해 서블릿에서 프로그램 로직을 수행하고 그 결과를 JSP에게 포워딩하는 방법을 사용
- 이 방법을 '서블릿과 JSP 연동'이라고 함
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 requestDispatcher = request.getRequestDispatcher("/result.jsp"); requestDispatcher.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> <% int v1 = (int)request.getAttribute("v1"); int v2 = (int)request.getAttribute("v2"); int result = (int)request.getAttribute("result"); %> <%=v1%> + <%=v2 %> = <%=result %> </body> </html>
강의 : https://www.edwith.org/boostcourse-web/lecture/16705/
'Front-end > 부스트코스 : 웹 프로그래밍' 카테고리의 다른 글
부스트코스 서포터즈 2기 수료 ✨ (0) 2020.04.01 [부스트코스/back-end] 2. DB연결 웹앱 : redirect (0) 2020.03.21 [부스트코스] 2. DB연결 웹앱 : JSP 내장객체 (0) 2020.03.21 [부스트코스] 2. DB연결 웹앱 : JSP란? (0) 2020.03.15 [부스트코스] 2. DB 연결 웹앱 : WEB UI 개발 (0) 2020.03.07