servlet请求转发、包含以及重定向
2015-08-19 11:27
190 查看
请求转发:
方式一:
ServletContext对象.getRequestDispatcher(目标资源的URI).forward(request,response);
目标资源的URI "/servlet/GetParam" 必须以"/"开头,否则报错,此"/"就表示的是当前应用(绝对路径表示法)
方式二:
request.getRequestDispatcher(目标资源的URI).forward(request,response);
目标资源的URI "/servlet/GetParam" 如果以"/"开头,就表示的是当前应用(绝对路径表示法)。
GetParam" 如果不以"/"开头,就表示相对路径。相对路径:两个绝对路径去掉前面相同的部分
由源组件转发到目标组件时,容器会清空源组件输出的数据。响应头信息是不清空的,客户端地址栏URL不变
编码原则:不要在转发前后向页面输出数据,也不要关闭输出流。
包含(动态包含):
request.getRequestDispatcher(目标资源的URI).include(request,response);
由源组件包含到目标组件时,容器会清空目标组件的头,所以源组件设置的头才有效。响应体信息是不清空的。
编码原则:不要在目标组件中设置响应头。
重定向:
response.sendRedirect("/../...")
目标资源的URI /应用名/路径.. 绝对路径,"/"后跟应用名
客户端跳转,request中数据不传递!客户端地址栏URL改变。
博客园博客:欠扁的小篮子
方式一:
ServletContext对象.getRequestDispatcher(目标资源的URI).forward(request,response);
目标资源的URI "/servlet/GetParam" 必须以"/"开头,否则报错,此"/"就表示的是当前应用(绝对路径表示法)
方式二:
request.getRequestDispatcher(目标资源的URI).forward(request,response);
目标资源的URI "/servlet/GetParam" 如果以"/"开头,就表示的是当前应用(绝对路径表示法)。
GetParam" 如果不以"/"开头,就表示相对路径。相对路径:两个绝对路径去掉前面相同的部分
由源组件转发到目标组件时,容器会清空源组件输出的数据。响应头信息是不清空的,客户端地址栏URL不变
编码原则:不要在转发前后向页面输出数据,也不要关闭输出流。
public void forward(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 方式一 // RequestDispatcher rd=getServletContext().getRequestDispatcher("/servlet/NewPage"); // 方式二 RequestDispatcher rd=request.getRequestDispatcher("NewPage"); rd.forward(request, response); }
包含(动态包含):
request.getRequestDispatcher(目标资源的URI).include(request,response);
由源组件包含到目标组件时,容器会清空目标组件的头,所以源组件设置的头才有效。响应体信息是不清空的。
编码原则:不要在目标组件中设置响应头。
public void include(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ RequestDispatcher rd=request.getRequestDispatcher("/servlet/NewPage"); rd.include(request, response); }
重定向:
response.sendRedirect("/../...")
目标资源的URI /应用名/路径.. 绝对路径,"/"后跟应用名
客户端跳转,request中数据不传递!客户端地址栏URL改变。
public void redirect(HttpServletRequest request, HttpServletResponse response) throws IOException{ response.sendRedirect("/WebProjectName/newURL"); }
博客园博客:欠扁的小篮子
相关文章推荐
- MyBatis中可以用以下的方式来传递多个参数
- Actionbar&Toolbar 自定义Menu 布局--ActionProvider的使用
- 【LeetCode】20_Valid Parentheses
- Linux环境进程间通信(五): 共享内存
- 【knockout】ko绑定click事件传多个参数,
- 第四章 函数和递归入门
- Android之学习安卓每天成长笔记
- 七夕Azure来相会,《Microsoft Azure部署与管理指南》亚马逊8月20日首发!
- android基本架构
- 字符串问题(三)
- Android 如何判断电池电量是否充足
- java爬取网页内容 简单例子
- Ubuntu Linux 安装 .7z 解压和压缩文件
- hdoj 3065 病毒侵袭持续中 【AC自动机 基础题】【输出每个模式串出现的次数】
- 在VS里面写SQL语句将数据插入到Oracle里面
- 读取Java文件到byte数组的三种方式
- TabHost的用法
- Xcode各种版本下载
- CSE(Corrupted State Exceptions) 严重异常处理办法
- 阿里巴巴实习生笔试题目