Servlet编程实例2

简介: 上次实验中利用HttpServletRespon.sendRedict()方法来实现页面的转跳,而这种重定向请求的方法无法传递缓存的内容。所以为了做出改进,这次使用RequestDispatcher()方法来转发请求。
上次实验中利用HttpServletRespon.sendRedict()方法来实现页面的转跳,而这种重定向请求的方法无法传递缓存的内容。
所以为了做出改进,这次使用RequestDispatcher()方法来转发请求。
dopost()方法修改如下:
img_a94b9a5867ed03189b2948ca916fd401.png
 实验结果如下:
img_1dc45976de2b165a3d729f9bd6728b49.png
 可以看到此次只产生了一个请求响应。而且表单提交的信息能完整显示。

整个处理流程总结如下:浏览器的请求首先发送给LoginServlet,LoginServlet处理完毕之后会将requset和response对象传递给success.jsp(这个传递的过程被称为请求转发),整个过程只涉及一次服务器与浏览器之间的交互,也就是说只有一次请求响应,在整个转发过程中,各组件共享同一组请求和响应对象。

缺点:

转发只能在同一应用的组件之间进行,而不能在不同应先的组件之间进行。而sendRedict()方法是可以转发给其他应用地址的。

区别:

那么sendRedict()方法和forword方法的不同在于:

RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中。RequestDispatcher接口中定义了两个方法:include/forward

由于<jsp:include>只能指定固定的jsp文件名,不能动态指定jsp文件名。我们需要把<jsp:include>翻译为Java code – RequestDispatcher.include();

用法:

<% request.getRequestDispatcher(filename).include(request, response); />

服务器端的重定向可以有两种方式,一是使用HttpServletResponse的sendRedirect()方法,一是使用RequestDispatcher的forward()方法.

HttpServletResponse.sendRedirect()方法将响应定向到参数location指定的、新的URL。location可以是一个绝对的URL,如response.sendRedirect("http: //Java.sun.com")也可以使用相对的URL。如果location以“/”开头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。这种重定向的方法,将导致客户端浏览器的请求URL跳转。从浏览器中的地址栏中可以看到新的URL地址,作用类似于上面设置 HTTP响应头信息的实现。

RequestDispatcher.forward()方法将当前的request和response重定向到该 RequestDispacher指定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处理在Servlet中处理,处理的结果转向到一个JSP页面进行显示。这样看起来类似于Servlet链的功能,但是还有一些区别。一个RequestDispatcher对象可以把请求发送到任意一个服务器资源,而不仅仅是另外一个Servlet。 include()方法将把Request Dispatcher资源的输出包含到当前输出中。

注意,只有在尚未向客户端输出响应时才可以调用forward()方法,如果页面缓存不为空,在重定向前将自动清除缓存。否则将抛出一个IllegalStateException异常。

 

简单用法:

RequestDispatcher rd;
       rd = getServletContext().getRequestDispatcher("/Expired.jsp");
       rd.forward(request,response);

 





目录
相关文章
|
4月前
|
前端开发 小程序 Java
探索研究Servlet 实例
【9月更文挑战第23天】
36 11
|
6月前
|
安全 Java API
Java中的Servlet编程详解
Java中的Servlet编程详解
|
8月前
|
Java
Servlet 教程 之 Servlet 实例 1
Servlet是Java类,用于处理HTTP请求,常用于扩展`HttpServlet`。
57 3
|
8月前
|
Java Unix 应用服务中间件
Servlet 教程 之 Servlet 实例 3
Servlet是Java写的HTTP服务程序,用于扩展HTTP请求。在Tomcat的默认目录结构下,Servlet应用的类文件需放在WEB-INF/classes里。以`com.myorg.MyServlet`为例,对应的`.class`文件应在此路径下。配置`web.xml`,添加Servlet和映射,。
57 2
|
8月前
|
存储 Java 应用服务中间件
第 2 章 Servlet 编程
第 2 章 Servlet 编程
106 0
|
SQL 前端开发 Java
JSP网上订餐管理系统myeclipse开发sql数据库BS模式java编程servlet技术mvc框架
JSP 网上订餐管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助servlet技术mvc框架,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
84 0
|
安全 Java 编译器
【Java Web编程 八】深入理解Servlet常用对象
【Java Web编程 八】深入理解Servlet常用对象
141 1
|
存储 Java
【Java Web编程 十一】深入理解Servlet监听器
【Java Web编程 十一】深入理解Servlet监听器
134 0
【Java Web编程 十一】深入理解Servlet监听器
|
Java 数据安全/隐私保护
【Java Web编程 十】深入理解Servlet过滤器
【Java Web编程 十】深入理解Servlet过滤器
141 0
|
前端开发 Java 应用服务中间件
【Java Web编程 七】Servlet基本概念和生命周期
【Java Web编程 七】Servlet基本概念和生命周期
177 0