文档章节

java servlet拾遗(2)-请求转发、包含、重定向

haoran_10
 haoran_10
发布于 2016/07/15 16:38
字数 564
阅读 12
收藏 1

Servlet对象全部由Servlet容器创建,并且Servlet对象的service()方法也由容器调用,那么一个Servlet对象能否直接调用另外一个Servlet对象的service()方法?很遗憾,不行。一个servlet对象无法获得另外一个servlet对象的引用,只能通过Servlet容器调用。假如一个请求,需要两个Servlet对象的service方法共同完成,该怎么做呢?

Servlet提供了三种方法:

 

一、请求转发

  • Servlet A对象先对请求做a处理,然后把请求转发到其他Web组件,如Servlet B对象,由Servlet B对象继续完成后续操作
  • javax.servlet.RequestDispatcher 接口,命名上可以看出来,请求路由接口,使用public void forward(ServletRequest request, ServletResponse response)  throws ServletException, IOException;进行转发
  • javax.servlet.RequestDispatcher  两种获取方式 
  1. 调用ServletContext 的 public RequestDispatcher getRequestDispatcher(String path); path表示绝对路径,即以"/"开头的路径
  2. 调用ServletRequest  的 public RequestDispatcher getRequestDispatcher(String path);path表示相对路径,即相对于当前源Servlet组件的路径,不以"/开头
  • Servlet A对象转发到Servlet B对象时,ServletRequest ,ServletResponse,都是共用的,而HttpServletRequest 自定义的方法,则是不通用的,这个少稍微注意。

 

二、包含

  •  Servlet Main 输出时,需要包含header,leftNav,footer,多么典型的应用
  • javax.servlet.RequestDispatcher 接口 public void include(ServletRequest request, ServletResponse response)  throws ServletException, IOException; 使用这个方法,则可以包含这些通用页面或者组件

 

三、重定向

  • 请求转发、包含,都是本应用内使用,如果需要使用其他的服务,则需要使用重定向。
  • 用户请求Servlet对象时,Servlet对象处理业务后,返回http 状态码 302,响应中还包含了一个URL,客户端则会自动再次请求另外一个URL,并接收响应结果。
  • javax.servlet.http.HttpServletResponse 的public void sendRedirect(String location) throws IOException; String location表示重定向的地址,以http://开头的地址则是绝对地址,可以是本应用,也可以是外部的web应用,以/开头,则是本地web 绝对地址应用
  • 典型的应用,登陆时包含一个地址,登录成功之后,直接重定向到这个地址,省的用户再次点击。

© 著作权归作者所有

共有 人打赏支持
haoran_10
粉丝 25
博文 88
码字总数 80846
作品 0
杭州
程序员
servlet/jsp基础复习

servlet就是一个普通的Java类,类对象由服务器(容器)创建,实现请求,响应交互数据。 实现第一个servlet继承HTTPservlet重写doget,dopost方法。其实servlet执行处理请求时候都会调用父类s...

hello_hp
2017/10/20
0
0
115个Java面试题和答案——终极列表(下)

第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP。 ...

LCZ777
2014/04/23
0
0
超详细的Java面试题总结之JavaWeb基础知识总结

Servlet总结: 在Java Web程序中,Servlet主要负责接收用户请求HttpServletRequest,在doGet(),doPost()中做相应的处理,并将回应HttpServletResponse反馈给用户。Servlet可以设置初始化参数,...

Java互联网架构师
08/29
0
0
Jsp 和 Servlet 有什么不同?

面试中被问到了 Jsp 和 Servlet 有什么不同?在这里总结分享下。 回答思路先分别进行基本介绍,然后分析说明两者相同点和不同点。 基本介绍 Servlet: Servlet 是一种服务器端的Java应用程序...

几个栗子
08/22
0
0
JSP——Java Server Pages

简介 1. Jsp技术:Jsp是一种 html代码+ Java代码 + Jsp页面代码的技术,而且其不用像Servlet哪样需要配置访问路径。 2. Jsp执行原理:第一次访问服务器web项目中的jsp页面时,会首先把jsp页面...

江左煤郎
09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

主流的消息队列MQ比较,详解MQ的4类应用场景

目前主流的MQ 1.ZeroMQ 号称最快的消息队列系统,尤其针对大吞吐量的需求场景。 扩展性好,开发比较灵活,采用C语言实现,实际上只是一个socket库的重新封装,如果做为消息队列使用,需要开发...

游人未归
48分钟前
2
0
React 服务器渲染原理解析与实践

网盘下载地址 React 服务器渲染原理解析与实践 本套课程,讲解了React中SSR技术的整个搭建思路及流程,完整的从原理上讲清楚了SSR的概念,重点在于讲解编写SSR框架遇到的各种知识点,以及细节...

qq__2304636824
今天
2
0
Jenkins使用

clean install -Dmaven.test.skip=true

1713716445
今天
1
0
多线程

1. 多线程概念。并发和并行的概念。 多线程指的是一段时间内cpu同时执行多个线程。一个程序至少运行>=1个进程,进程就是运行中的程序,而一个进程至少运行>=1个线程,线程是操作系统能调度的...

鱼想吃肉
今天
3
0
HBase 表修复在线方式和离线方式

一、在线修复 1.1 使用检查命令 $ ./bin/hbase hbck 该命令可完整修复 HBase 元数据信息;存在有错误信息会进行输出; 也可以通过如下命令查看详细信息: $ ./bin/hbase hbck -details 1.2 ...

Ryan-瑞恩
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部