Daily coding

Servlet : include 방식과 forward방식 본문

Front-end/비동기통신

Servlet : include 방식과 forward방식

sunnnkim 2020. 1. 18. 16:22

Include & forward 

: include / forward 할 서블릿은 꼭 등록이 되어있어야함

  ( @webServlet("/이름") )

 

1. include : 

 : 서블릿에 다른 서블릿을 끼워 넣음  (페이지 이동x)

   뷰에 뿌려지는 url 주소는 처음 열었던 서블릿으로 되어있음

   뷰를 따로따로 만들어놓고 붙여놓을 수 있음

 

* 사용법 

- getRequestDispatcher 소속의 include() 함수 사용

 

  RequestDispatcher dis = req.getRequestDispatcher("include"); // web.xml에 등록된 이름으로

  dis.include(req, resp);

 

*** include 하는 서블릿에는 printwriter를 close하면 안됨, 

-> 불러온 후 닫아버려서, 뒷 부분이 적용이 안되기 때문에  

 

	// include 서블릿 불러오기
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("hello Servlet doGet");
		
		// include (가져오기), forward (이동하다)
		// include / forward 할 서블릿은 꼭 등록이 되어있어야함 ( @webServlet("/이름") )
		
		// include : 뷰를 따로따로 만들어놓고 붙여놓을 수 있음
		// 뷰에 뿌려지는 url 주소는 처음 열었던 서블릿으로 되어있음 (이경우는 hello) 
		
		resp.setContentType("text/html; charset=UTF-8");
		PrintWriter pw = resp.getWriter();
		
		pw.println("<html>");
		pw.println("<head>");
		pw.println("<title>제목</title>");
		pw.println("<body>");
		
		pw.println("<h1>Hello Servlet Start</h1>");
		
		// include : 붙여넣기, 해당 서블릿을 중간에 끼워넣음 (페이지 이동x)
		RequestDispatcher dis = req.getRequestDispatcher("include"); // web.xml에 등록된 이름으로
		dis.include(req, resp);
	
		pw.println("<h1>Hello Servlet End</h1>");
		
		pw.println("</body>");
		pw.println("</head>");
		pw.println("</html>");
		pw.close();
		
	
	}

 

 

2. forward : 페이지 이동하기

 : 사용시 다른 서블릿 또는 html/jsp 등으로 이동됨

   앞뒤로 다른 태그가 있어도 표시되지 않고 다른 페이지로 이동하게 됨

(그동안 했던 페이지 이동 방식)

	// include 서블릿 불러오기
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
        
		// forward : 페이지 이동하기
		// 앞뒤로 다른 태그가 있어도 표시되지 않고 다른 페이지로 이동하게 됨

		resp.setContentType("text/html; charset=UTF-8");
		PrintWriter pw = resp.getWriter();
		
		pw.println("<html>");
		pw.println("<head>");
		pw.println("<title>제목</title>");
		pw.println("<body>");
		
		pw.println("<h1>Hello Servlet Start</h1>");
		
		// forward  : 전진하기, 중간에 끼워넣지 않고 해당 서블릿으로 이동함
		RequestDispatcher dis = req.getRequestDispatcher("forward");
		dis.forward(req, resp);
		
		pw.println("<h1>Hello Servlet End</h1>");
		
		pw.println("</body>");
		pw.println("</head>");
		pw.println("</html>");
		pw.close();
		
	
	}

 

'Front-end > 비동기통신' 카테고리의 다른 글

JSP : JSP 개념과 기본  (0) 2020.01.20
Servlet : Cookie와 Session  (0) 2020.01.18
Servlet : 정리  (0) 2020.01.18
Servlet : servlet 과 jsp 연결하기  (0) 2020.01.18
Servlet : Java에서 데이터 보내는방식 2 ( forward )  (0) 2020.01.18