1.重定向
在Servlet中的接口HttpServletRequest提供了sendRedirect()方法用于生成302相应码和Location响应头,从而通知客户端去重新访问Location响应头指定的URL,其定义如下:
public void sendRedirect(String location ) throws IOException;
对于sendRedirect()方法不仅可以重定向到当前应用程序中的其他资源,也可重定向到一个容器中的其他应用程序中的资源。
eg:
//Servlet1.java package com.redrect; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Servlet1 extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.sendRedirect("Servlet2"); //重定向到指定路径的资源 // RequestDispatcher dis=request.getRequestDispatcher("Servlet2"); // dis.forward(request, response); } } //Servlet2.java package com.redrect; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Servlet2 extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println(" <head><title>servlet2</title></head>"); out.println(" <body>"); out.println("从Servlet2中获取请求参数name的值:"); out.println(request.getParameter("name")); out.println(" </body>"); out.println("</html>"); } }
同时要在项目中的web.xml对Servlet进行声明:
<servlet> <servlet-name>Servlet1</servlet-name> <servlet-class>com.lkh.redrect.Servlet1</servlet-class> </servlet> <servlet-mapping> <servlet-name>Servlet1</servlet-name> <url-pattern>/Servlet1</url-pattern> </servlet-mapping> <servlet> <servlet-name>Servlet2</servlet-name> <servlet-class>com.redrect.Servlet2</servlet-class> </servlet> <servlet-mapping> <servlet-name>Servlet2</servlet-name> <url-pattern>/Servlet2</url-pattern>
2.请求分派
在Servlet中定义一个接口RequestDispatcher
其方法如下:
public void forward(ServletRequest request,ServletResponse response) throws ServletException,IOException;
public void include(ServletRequest request,ServletResponse response) throws ServletException,IOException;
对于forward()方法用于将请求转发到RequestDispatcher实例封装的资源,include()方法用于将RequestDispatcher实例封装的资源作为当前响应的一部分包含进来。
获取RequestDispatcher实例的方式有两种:
(1)调用ServletContext接口提供的getRequestDispatcher(String url) 方法
(2)调用ServletRequest接口提供的getRequestDispatcher(String url) 方法
ServletContext接口提供的getRequestDispatcher(String url) 方法中的路径参数必须以”/"开头
ServletRequest接口提供的getRequestDispatcher(String url) 方法中的路径参数可以是相对路径也可为绝对路径。
eg:
只要将上面中的Servlet1.java 中的doPost()代码改为
RequestDispatcher dis=request.getRequestDispatcher("Servlet2");
dis.forward(request, response);
3.重定向和请求分派的比较:
<1>请求分派只能将请求转发给同一个web应用中的其他组件,而重定向不仅可以定向到当前应用程序中的其他资源,也可重定向到其他站点的资源上
<2>重定向的访问过程结束后,浏览器的地址栏显示的URL会发生改变,变成重定向的目标URL,而请求分派的浏览器地址栏保持初始的URL
<3>请求分派的发起者和被调者之间共享相同的request实例和response实例,属于同一个“请求/响应”而重定向的发起者和被调用者使用各自的request实例和response实例,各自属于独立的“请求/响应”过程。
相关推荐
MVC架构关键技术,请求分派去重定向。精辟的内容再次,学习就是要掌握重点 难点,其他的就轻松了
servlet请求转发、请求重定向、请求包含 获取form数据
JSPServlet的重定向技术综述 详细介绍
java servlet请求转发重定向 适合于初学者更好的了解页面跳转和原理
使用myEclipse + tomcat Servlet的简单例子,包括重定向,Session的简单使用 初学者使用......高手勿入 www.zhuyi123.cn助益信息网经常有新的信息 助益网
javaServlet请求转发和重定向.pdf
servlet中实现请求转发,用户登录,在servlet中验证用户名和密码.
通过网上总结的Servlet的转发与重定向的区别介绍。希望可以帮的上大家
本篇文章主要介绍了Servlet 实现重定向几种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要为大家详细介绍了servlet重定向的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
每个Servlet必须实现doGet()或doPost()方法(或者两者都实现),这些方法分别处理GET和POST请求。 要在Web应用程序中使用Servlet,您需要将其部署到Web服务器上。 Web服务器通常支持Java Servlet规范,并提供一个...
本包里的三个类是模拟了tomcat是如何多线程的使用同一个servlet的实例来同时使用service方法处理请求
3. web容器通过请求的URL来选择需要用哪个Servlet来处理请求(这个就是web.xml中配置的或者 @webServlet注解的作用了) 4. Servlet根据请求对象(HttpServletRequest)来决定做什么样的处理,然后通过响应对象 ...
请求转发:在最终的 servlet (TestServlet) 中,request和中转的那个servlet(ForwardServlet)中的request对象是同一个对象 重定向:在最终的 servlet (TestServlet) 中,request和中转的那个servlet(SendServlet...
Web编程(Java )-Servlet API中请求和响应的应用
创建web工程还有代码是试练,请求方式+重定向+请求转发+cookie+session+jsp(四大作用域九大内置对象)
第8~10章讨论Servlet中的事件驱动编程、过滤器,以及Model2架构;第11章展示如何利用Servlet3的文件上传特性,以及如何在客户端改善用户的体验;第12章解释如何通过编程方式将资源发送到浏览器;第13章介绍如何利用...
jsp和servlet请求与响应,jsp和servlet请求与响应,
servlet中servlet中使用和部署web应用使用和部署web应用
Servlet API 中文参考 chm,涉及Servet资料资料、API介绍,讲述Servlets概论、生命周期、解析和载入、初始化、 Servlet处理请求、多线程和映射、Servlet的卸载、Servlet映射技术、通... Servlet API 中文参考 chm,...