JSP 점프 방식

4837 단어 jsp
1:RequestDispatcher.forward()
       서버 쪽 에서 작 동 합 니 다.forward()를 사용 할 때 Servlet engine 는 현재 Servlet 에서 HTTP 요청 을 전달 합 니 다.  or jsp  다른 Servlet JSP 나 일반 HTML 파일 로 이동
       다음 과 같이 매개 변 수 를 전달 할 수 있 습 니 다.
RequestDispatcher rd = context.getRequestDispatcher("/jsp/forward.jsp?name=zhangsan");
RequestDispatcher rd = context.getRequestDispatcher("/F?name=jingjing");

 
             다시 지정 하면 브 라 우 저 주소 표시 줄 URL 이 변 하지 않 습 니 다.

     : servlet

         

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		ServletContext context = getServletContext();
		//forward() jsp 
		RequestDispatcher rd = context.getRequestDispatcher("/jsp/forward.jsp?name=zhangsan");
		//forward()    servlet F servlet url-pattern  servlet        
	    //RequestDispatcher rd = context.getRequestDispatcher("/F?name=jingjing");
		request.setAttribute("info", "hello");  //    
		rd.forward(request, response);
	}
경로 앞 에"/"가 있어 야 합 니 다. , "/"항목 이름 그렇지 않 으 면 다음 과 같은 이상 을 보고 합 니 다.
java.lang.IllegalArgumentException: Path F does not start with a "/" character
	com.org.MyServlet.doGet(MyServlet.java:31)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 
forward.jsp 에서 인 자 를 얻 은 것 은:
  String name = request.getParameter("name");
 servlet      :
  String name = request.getParameter("name");
  String info = (String)request.getAttribute("info");

:response.sendRedirect()

        ,sendRedirect() , servlet?name=zhangsan

        URL

       : jsp

            

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		response.sendRedirect("jsp/forward.jsp");
                  //   
                  //response.sendRedirect("jsp/forward.jsp?name=zhangsan");
	}
            servlet
         
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		response.sendRedirect("F");
		//     
		//response.sendRedirect("F?name=zhagnsan");
	}
 
비교:
      a)두 개 모두 페이지 의 이동 forward 를 실현 할 수 있 습 니 다.용기 에서 제어 권 의 방향 입 니 다.클 라 이언 트 브 라 우 저 주소 표시 줄 에 방향 을 바 꾼 주 소 를 표시 하지 않 습 니 다.
        response.sendRedirect()는 완전한 점프 입 니 다.브 라 우 저 는 점프 주 소 를 얻 고 요청 링크 를 다시 보 냅 니 다.그러면 브 라 우 저의 주소 표시 줄 에서 점프 후의 링크 주 소 를 볼 수 있 습 니 다.
       b)둘 다 jsp 나 servlet 로 넘 어 갈 수 있다.  매개 변 수 를 전달 할 수 있 습 니 다.
        그러나 response.sendRedirect()가 뛰 면 뒤의 코드 는 더 이상 실행 되 지 않 습 니 다.
       예:
   
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();

		out.println("hello kity");   //    
		response.sendRedirect("F?name=zhagnsan");
		out.println("good");         //    
	}
         전 자 는 더욱 효율 적 이 고 전자 가 기본 적 인 수 요 를 만족 시 킬 수 있 을 때 RequestDispatcher.forward()방법 을 사용 합 니 다.
3.다른 점프 방식
       a)HTTP header 의 Location 속성 을 수정 하여 방향 을 바꾼다.
       b)주소 표시 줄 을 직접 수정 하여 페이지 의 방향 을 바 꿉 니 다.
       c)jsp 설정 후 몇 초 후 자동 방향 변경
 response.setHeader("refresh","3;url=forward2.jsp");
 :             。
 

좋은 웹페이지 즐겨찾기