文档章节

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

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

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
Apache与Tomcat有什么关系和区别

经常在用apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系,在用tomcat的时候总出现apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总结...

天下杰论
2015/06/03
0
1
9.java web的发展 javaweb是什么 J2EE发展历史 规范 J2EE是什么 发展背景 组件标准 J2EE好处作用 Servlet 含义 本质 发展 java在web中的发展 servlet工作流程 java 开发web项目发展 javaBean jsp

javaweb 本质上来说就是使用java 语言来解决企业web应用中一系列技术体系与规范; jdk1.2 playground 此版本中把java技术体系拆分为三个方向 J2SE J2EE J2ME 这个大家都知道 其中之一的J2EE,...

noteless
06/29
0
0
linux web篇---之三--tomcat

一、java概述 1、java的四个独立却又相关的技术: java程序设计语言: java源程序 java API: 以连接java的库文件,官方提供很多库文件,以提高java的开发速度,通过API连接到相应的库文件。...

kuang_hp
07/04
0
0
从无到有项目开发过程—前期准备(软件的选用)

服务器系统:centos 6.5 2. 反向代理:nginx-1.9.3 反向代理服务器是在服务器端设定的,主要用于隐藏服务器的真正信息和重定向请求。代理接受到请求时,判断代理服务器的配置信息,根据配置,...

aliza1226
2015/08/12
0
1
Apache/Tomcat/JBOSS/Nginx区别

先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。 ...

Sheamus
2015/02/06
0
0
【J2EE】之常用的接口和协议

前言 初接触J2EE,会遇到很多之前没有遇到过的术语,下面我们来简单地汇总一下这些接口和协议吧。 各大接口和协议详解 JDBC 1.定义:Java数据库连接 2.地位:用于Java应用程序连接数据库的标...

m18633778874
04/26
0
0
apache和tomcat区别

经常在用apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系,在用tomcat的时候总出现apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总结...

Yamazaki
2012/09/26
0
0
六、JSP的由来以及与Servlet的关系

JavaWeb在有了Servlet这项技术以后,就可以编写动态网页了。在动态网页中,一般来说样式是不变的,变化的是数据。如果程序员在Servlet类中写了大量的静态代码,例如out.println("<html>");这...

Wakeeee_
07/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

pbgo: 基于Protobuf的迷你RPC/REST框架

https://www.oschina.net/p/pbgo

chai2010
12分钟前
0
0
rsync工具介绍、常用选项以及通过ssh同步

linux下的文件同步工具 rsync rsync是非常实用的一个同步工具,可以从a机器到b机器传输一个文件,也可以备份数据,系统默认没有这个工具,要使用命令 yum install -y rsync 安装。 rsync的命...

黄昏残影
27分钟前
0
0
OSChina 周四乱弹 —— 表妹要嫁人 舅妈叮嘱……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @哈哈哈哈哈嗝:一定要听——The Pancakes的单曲《咁咁咁》 《咁咁咁》- The Pancakes 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :...

小小编辑
今天
34
4
流利阅读笔记30-20180719待学习

重磅:让人类得老年痴呆的竟是它? Lala 2018-07-19 1.今日导读 去年奥斯卡最佳动画长片《寻梦环游记》里有一句经典台词:“比死亡更可怕的,是遗忘”。在电影中,年迈的曾祖母会重复说一样的...

aibinxiao
今天
3
0
1.16 Linux机器相互登录

Linux机器之间以密码方式互相登录 运行命令#ssh [ip address],标准命令:#ssh [username]@ip, 如果没有写用户名,则默认为系统当前登录的用户 命令#w查看系统负载,可查看到连接到该主机的...

小丑鱼00
今天
0
0
about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部