servlet详解(第三篇)
来源:互联网 发布:上海婚纱摄影推荐知乎 编辑:程序博客网 时间:2024/05/17 20:42
请求转发和请求包含
无论是请求转发还是请求包含,都表示由多个Servlet共同来处理一个请求。例如Servlet1来处理请求,然后Servlet1又转发给Servlet2来继续处理这个请求。
6.1请求转发
在AServlet中,把请求转发到BServlet:
public class AServlet extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{System.out.println("AServlet");RequestDispatcher rd=request.getRequestDispatcher("/BServlet");rd.forward(request,response);}}public class BServlet extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{System.out.println("BServlet");}}
6.2请求包含
public class AServlet extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{System.out.println("AServlet");RequestDispatcher rd=request.getRequestDispatcher("/BServlet");rd.include(request,response);}}public class BServlet extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{System.out.println("BServlet");}}
6.3请求转发与请求包含比较
如果在AServlet中请求转发到BServlet,那么在AServlet中就不允许再输出响应体,即不能再使用response.getWriter()和response.getOutputStream()向客户端输出,这一工作应该由BServlet来完成;如果是使用请求包含,那么没有这个限制;请求转发虽然不能输出响应体,但还是可以设置响应头的,例如:response.setContentType(”text/html;charset=utf-8”);请求包含大多是应用在JSP页面中,完成多页面的合并;请求请求大多是应用在Servlet中,转发目标大多是JSP页面;
与重定向比较:
请求转发是一个请求,而重定向是两个请求; 请求转发后浏览器地址栏不会有变化,而重定向会有变化,因为重定向是两个请求; 请求转发的目标只能是本应用中的资源,重定向的目标可以是其他应用; 请求转发对AServlet和BServlet的请求方法是相同的,即要么都是GET,要么都是POST,因为请求转发是一个请求; 重定向的第二个请求一定是GET;
1 0
- servlet详解(第三篇)
- servlet详解(第三篇)
- 第三篇:Servlet入门篇
- servlet&jsp读书笔记第三篇
- SCWCD(Servlet&Jsp learning)第三问-------JSP内置对象详解
- servlet详解(第二篇)
- servlet详解(第二篇)
- 简单servlet第三篇---使用servlet读取配置文件的内容
- JAVA学习篇--Servlet详解
- JAVA学习篇--Servlet详解
- JAVA学习篇--Servlet详解
- JAVA学习篇--Servlet详解
- JAVA学习篇--Servlet详解
- JAVA学习篇--Servlet详解
- java synchronized详解---第三篇
- angular---代码详解(第三篇)
- Servlet Servlet生命周期详解
- Servlet详解---Servlet跳转
- 分类与扩展
- 求最长有效匹配括号子串的长度(Longest Valid Parentheses)
- iOS--UINavigationController学习笔记
- link和@import的区别
- 几个Android开发中遇到的问题
- servlet详解(第三篇)
- android 的四种枚举Context.MODE_PRIVATE
- 安装Baidu Eclipse插件
- 【codevs】基础合集(二)
- oracle数据库学习1
- redis持久化探究
- Cable master(假定一个解并判断是否可行)(POJ NO.1064)
- nmcli
- HDU 5674 Function