servlet请求转发、包含以及重定向

请求转发:

方式一:

  ServletContext对象.getRequestDispatcher(目标资源的URI).forward(request,response);

  目标资源的URI "/servlet/GetParam" 必须以"/"开头,否则报错,此"/"就表示的是当前应用(绝对路径表示法)

方式二:

  request.getRequestDispatcher(目标资源的URI).forward(request,response);

  目标资源的URI "/servlet/GetParam" 如果以"/"开头,就表示的是当前应用(绝对路径表示法)。

  GetParam" 如果不以"/"开头,就表示相对路径。相对路径:两个绝对路径去掉前面相同的部分

由源组件转发到目标组件时,容器会清空源组件输出的数据。响应头信息是不清空的,客户端地址栏URL不变

编码原则:不要在转发前后向页面输出数据,也不要关闭输出流。

1     public void forward(HttpServletRequest request,
2             HttpServletResponse response) throws ServletException, IOException {
3 //        方式一
4 //        RequestDispatcher rd=getServletContext().getRequestDispatcher("/servlet/NewPage");
5 //        方式二
6         RequestDispatcher rd=request.getRequestDispatcher("NewPage");
7
8         rd.forward(request, response);
9     }

包含(动态包含):

request.getRequestDispatcher(目标资源的URI).include(request,response);

由源组件包含到目标组件时,容器会清空目标组件的头,所以源组件设置的头才有效。响应体信息是不清空的。

编码原则:不要在目标组件中设置响应头。

1     public void include(HttpServletRequest request,
2             HttpServletResponse response) throws ServletException, IOException{
3         RequestDispatcher rd=request.getRequestDispatcher("/servlet/NewPage");
4         rd.include(request, response);
5     }

重定向:

response.sendRedirect("/../...")

目标资源的URI /应用名/路径.. 绝对路径,"/"后跟应用名

客户端跳转,request中数据不传递!客户端地址栏URL改变。

1     public void redirect(HttpServletRequest request,
2             HttpServletResponse response) throws IOException{
3         response.sendRedirect("/WebProjectName/newURL");
4     }
时间: 2024-10-29 14:18:54

servlet请求转发、包含以及重定向的相关文章

请求转发 和 URL 重定向

五 请求转发 和 URL 重定向 1 请求转发和重定向 干什么用? 是我们在java后台servlet中 由一个servlet跳转到 另一个 servlet/jsp 要使用的技术 前端发送请求到后台 : A 浏览器地址栏输入链接 B a标签 <a href="url地址">跳转</a> C form表单 <form action="url地址" method="get/post"> <input type

servlet请求转发到另一个servlet

servlet请求转发到另一个servlet,并传递数据 . 1.通过request.setAttribute("key",value)给request加信息. 2.通过request.getRequestDispather(目标servlet).forward(request,response) 传递制定servlet. 3.在另一个servlet中通过request.getAttribute("key")来获取附加信息的值.

servlet请求转发与重定向的区别

1.请求转发(forward) request.getRequestDispatcher("parameter").forward(request,response);跳转到指定的服务器资源,地址栏URL不变,请求响应不变. 2请求包含(include)request.getRequestDispatcher("parameter").include(request,response);跳转到指定的服务器资源且包含之前的资源,地址栏URL不变,请求响应不变. 注* 

Servlet - 请求转发和重定向

1. 请求转发 作用: 实现多个servlet联动操作处理请求, 这样避免代码冗余, 让servlet的职责更加明确 使用: request.getRequestDispatcher("路径地址").forward(request, response); 特点: 一次请求, 浏览器地址不改变 注意: 请求转发后直接return结束即可 2. 重定向 作用: 解决了表单重复提交的问题, 以及当前servlet无法处理的请求的问题 使用: response.sendRedirect(&qu

Servlet 请求转发和重定向的区别

重定向和转发有一个重要的不同:当使用转发时,服务器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求.因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变.重定向的速度比转发慢,因为浏览器还得发出一个新的请求.同时,由于重定向方式产生了一个新的请求,所以经过一次重 定向后,request内的对象将无法使用. 怎么选择是重定向还是转发呢

servlet请求转发与重定向的区别------用生活实例来形象说明两者的区别

1,请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保持,地址栏的URL地址会改变. 2,请求转发:服务器行为,request.getRequsetDispatcher().forward(requset,response);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变.(服务器内部转发,所有客户端看不到地址栏的改变) 下面举个生活中的实例来说明: 请求重定向:就好比我们找一个A广告公司给设计名片,A明确告诉我

javaWeb中request请求转发和response重定向

1.访问资源 运用forward方法只能重定向到同一个Web应用程序中的一个资源. 而sendRedirect方法可以让你重定向到任何URL. 2.request.get Forward代码中的"/uu"则代表相对与WEB应用的路径. 举例: Servlet 和 目标文件的包路径: Servlet  代码:中 doPost 和doGet代码: request 重定向url地址 或者是是相对于 本项目 (WEB13)  http:localhost:8080/WEB13+url     

请求转发与响应重定向

转发在服务器端完成的:重定向是在客户端完成的 转发的速度快:重定向速度慢 转发的是同一次请求:重定向是两次不同请求 转发不会执行转发后的代码:重定向会执行重定向之后的代码 转发地址栏没有变化:重定向地址栏有变化 转发必须是在同一台服务器下完成:重定向可以在不同的服务器下完成 如果不理解请看下面: 请求--转发 地址不变,数据存在请求中 客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther

Servlet请求转发RequestDispatcher接口

在Servlet中,利用RequestDispatcher对象,可以将请求转发给另外一个Servlet或JSP页面,甚至是HTML页面,来处理对请求的响应. 一,RequestDispatcher接口方法简介 1,RequestDispatcher对象由Servlet容器来创建,封装一个由路径所标识的服务器资源. 2,RequestDispatcher接口中定义了二种方法用于请求转发: forward(ServletRequest,ServletResponse)方法: 将请求转发给服务器上另外