getRequestDispatcher 和sendRedirect区别及路径问题
sendRedirect是页面重定向,地址栏信息改变,可以跳转到任意网页。
这两条网上都查得到,但看着比较乱,现提供我测试的结果(仅供参考):
1.getRequestDispatcher分成两种,可以用request调用,也可以用getServletContext()调用
不同的是request.getRequestDispatcher(url)的url可以是相对路径也可以是绝对路径。
而this.getServletContext().getRequestDispatcher(url)的url只能是绝对路径。
- SecondServlet
- request.setAttribute("lover", "tom");
- request.getSession().setAttribute("lovered", "joe");
- request.getRequestDispatcher("/third?name=jay").forward(request, response);
- 或
- request.getRequestDispatcher("third?name=jay").forward(request, response);
- 或
- this.getServletContext().getRequestDispatcher("/third?name=jay").forward(request, response);
- ThirdServlet
- PrintWriter out = response.getWriter();
- String name = request.getParameter("name");
- out.println(request.getContextPath()+"<hr/>");
- out.println("name="+name+"<hr/>");
- out.println("lover="+request.getAttribute("lover")+"<hr/>");
- out.println("lovered="+request.getSession().getAttribute("lovered")+"<hr/>");
结果显示,地址栏信息仍为http://localhost:8080/Test/second,这三种方式都可以传值到第二个Servlet。
2.sendRedirect只能用response调用,可以用相对路径(直接用),也可以用相对路径(需加应用路径)
- SecondServlet
- request.setAttribute("lover", "tom");
- request.getSession().setAttribute("lovered", "joe");
- response.sendRedirect("third?name=jay");
- 或
- response.sendRedirect(request.getContextPath()+"/third?name=jay");
- ThirdServlet
- PrintWriter out = response.getWriter();
- String name = request.getParameter("name");
- out.println(request.getContextPath()+"<hr/>");
- out.println("name="+name+"<hr/>");
- out.println("lover="+request.getAttribute("lover")+"<hr/>");
- out.println("lovered="+request.getSession().getAttribute("lovered")+"<hr/>");
结果显示,地址栏信息变为http://localhost:8080/Test/third?name=jay,只有request.getAttribute("lover")获取不到值,session范围及url路径后的传值在第二个Servlet都可以获取到值。
- response.sendRedirect("http://www.baidu.com");
getRequestDispatcher 和sendRedirect区别及路径问题的更多相关文章
- JSP的getRequestDispatcher()与sendRedirect()的区别
getRequestDispatcher()与sendRedirect()的区别 1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ; r ...
- 细谈getRequestDispatcher()与sendRedirect()的区别
问题?细谈getRequestDispatcher()与sendRedirect()的区别 首先我们要知道: (1)request.getRequestDispatcher()是请求转发,前后页面共享 ...
- 织梦CMS(dedecms)栏目属性及系统封面模板、列表模板、文章模板区别和路径设置解答
问题一:(织梦"栏目管理"的"常规选项"中3个栏目属性分析?) 织梦CMS的栏目属性分成三种, -->最终列表栏目 -->频道封面 -->外部 ...
- getRequestDispatcher()与sendRedirect()的区别
1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ; response.sendRedirect()是重新定向,前后页面不是一个request ...
- request.getRequestDispatcher()和response.sendRedirect()区别
一.request.getRequestDispatcher().forward(request,response): 1.属于转发,也是服务器跳转,相当于方法调用,在执行当前文件的过程中转向执行目标 ...
- Javaweb中的请求路径的相关总结
重定向和转发相对路径和绝对路径问题 注意:转发和重定向的URLString前有加 / 为绝对路径 反之为相对路径 1.假设通过表单请求指定的Url资源 action="LoginServ ...
- HttpServlet RequestDispatcher sendredirect和forward
Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的的通用接口 ...
- 关于tomcat内路径跳转的一些思考
初学jsp+servlet时经常碰上的几个错误:404.路径正确但页面没有任何内容.样式和图片丢失. 这几个错误曾经让我在debug时头大,现在总结一下,其实它们都跟路径有关,正是因为没有处理好路径跳 ...
- Servlet学习笔记06——什么是转发,路径,状态管理?
1.include指令 (1)作用: 告诉容器,在将jsp转换成Servlet时,将 某个文件的内容插入到该指令所在的位置. (2)语法: <%@ include file="&quo ...
随机推荐
- .NET设计规范一:设计规范基础
http://www.cnblogs.com/yangcaogui/archive/2012/04/18/2447049.html 前一段时间阅读了“.NET设计规范”这本书,读后给我的感觉是规范对开 ...
- QtGui.QSplitter
A QtGui.QSplitter lets the user control the size of child widgets by dragging the boundary between t ...
- excel 获取中文拼音首字母
excel 获取中文拼音首字母 CreateTime--2018年5月31日08:50:42 Author:Marydon 1.情景展示 想要获取姓名的拼音首字母 2.实现方式 通过使用excel ...
- Spring 基于Aspectj切面表达式
package com.proc; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; im ...
- Redis总结(七)Redis运维常用命令(转载)
redis 服务器端命令 redis 127.0.0.1:6380> time ,显示服务器时间 , 时间戳(秒), 微秒数 1) "1375270361" 2) &quo ...
- DropDownList 添加“请选择”
this.DDLUsers.Items.Insert(0, new ListItem("", ""));
- keil写STM32程序出现literal treated as "long long"
在Keil MDKARM中 unsigned int value2=0x80000000; unsigned int value4=2147483648; value2编译时不产生警告,而value4 ...
- FPGA的EPCS 配置的2种方法 FPGA下载程序的方法(EPCS)
使用主动串行配置模式对Cyclone FPGA进行配置前,必须将配置文件写入串行配置器件EPCS.将配置文件写入EPCS的方法有三种: (1)在Quartus II的Programmer中,通过专门与 ...
- Apache重启报警,不存在虚拟主机目录(httpd.conf打开了一些扩展)
Apache重启时报警: AH00112: Warning: DocumentRoot [/usr/local/apache/docs/dummy-host.example.com] does not ...
- MySQL慢查询查找和调优测试
MySQL慢查询查找和调优测试,接下来详细介绍,需要了解的朋友可以参考下.本文参考自:http://www.jbxue.com/db/4376.html 编辑 my.cnf或者my.ini文件,去除 ...