<jsp:forward> 使用同一个 request ,是在服务器端跳转,浏览器显示的是第一个页面的名字,因为客户端(浏览器)不知道它在服务器端跳转了。
Response.sendRedirect 是两个不同的 request ,是在客户端跳转,浏览器显示的是跳转后的页面的名字。因为它是从客户端跳转到第二个页面的。
使用 forward 时,由于只是发送一次 request 请求, request 设置的属性( setAttribute )依然能保留在下一个页面。
使用 sendRedirect 时,由于发送两次 request 请求,所以在下一个不能获取 request 属性。但可以通过重写 URL 的方式将内容传递过去。
下面举例说明:
tian.jsp
<%request.setAttribute(
"river",
"redwater");
request.setAttribute(
"country",
"daguaiwan");
%>
<jsp:forward page=
"fengshan.jsp" />
donglan.jsp
<%request.setAttribute(
"river",
"redwater");
request.setAttribute(
"country",
"daguaiwan");
%>
<a href=
"fengshan.jsp">fengshan</a>
bama.jsp
<%request.setAttribute(
"river",
"redwater");
request.setAttribute(
"country",
"daguaiwan");
response.sendRedirect(
"fengshan.jsp");
%>
fengshan.jsp
<%=request.getAttribute(
"river")%><br/>
<%=request.getAttribute(
"country")%>
redwater
daguaiwan
null
null
null
null
结果分析:
tiane.jsp是通过forward跳转到fengshan.jsp的,这两个页面享用的是同一个request,故fengshan.jsp可以接收到tiane.jsp通过 request设置的属性。
而donglan.jsp是通过href发送了另外的request请求,bama.jsp是通过sendRedirect跳转,用的也是另外的request请求,故fengshan.jsp不可以接收到这两个页面通过 request设置的属性。
Jsp和Servlet之间的跳转:
从Jsp跳转Servlet可以使用<jsp:forward page=”URL” />或者response.sendRedirect(URL)都可以,它们之间的区别上面已经说明了。
从Servlet跳转Jsp:
² getRequestDispatcher的forward(request, response)方法,这里也只是发送了一次请求,可以在下一个页面接受request设置的属性。
² response.sendRedirect(URL),这里发送了两次请求,不可以在下一个页面接受request设置的属性。
例子如下:
servlettiane.jsp
<%request.setAttribute(
"river",
"redwater");
request.setAttribute(
"country",
"daguaiwan");
%>
<jsp:forward page=
"/tiane" />
servletbama.jsp
<%request.setAttribute(
"river",
"redwater");
request.setAttribute(
"country",
"daguaiwan");
response.sendRedirect(
"/ForwardRedirect/tiane");
%>
Tiane.java
publicclass Tiane extends HttpServlet {
publicvoid doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// response.sendRedirect("/ForwardRedirect/fengshan.jsp");
this.getServletConfig().getServletContext()
.getRequestDispatcher("/fengshan.jsp").forward(request, response);
}
publicvoid doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
再在web.xml中配置servlet:
<servlet>
<servlet-name>tiane</servlet-name>
<servlet-class>com.dvnchina.test.Tiane</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>tiane</servlet-name>
<url-pattern>/tiane</url-pattern>
</servlet-mapping>
分享到:
相关推荐
ajax 提交数据到后台jsp页面及页面跳转问题 我logincheck.jsp页面取传参数代码: String user=request.getParameter("user1"); String pwd=request.getParameter("pwd1"); login.jsp input 取2参数何用ajax 传给...
初学者对数据库的增删改查.页面跳转,数据传输.
1、有如下一个订单信息页面order.jsp(置于/WEB-INF/jsp目录下),按以下步骤实现一个使用POJO类型完成表单数据传输的SpringMVC数据绑定项目。 (1) 创建一个Order类来封装上述订单信息,其中各个属性的名称和数据类型...
本次项目主要以本学期所学内容为基础,采用servlet+jsp+jdbc的技术以及mvc模式进行项目开发,本次开发的内容主要以实现CRUD核心功能为主的教务管理系统,分为学生端和教师端,前端采用jquery进行数据传输以及处理,...
3.在控制层调用业务逻辑层(service),数据持久层(DAO)返回控制层,请求完成获取一个结果,设置一个要跳转的视图,(ModelAndView装载并传输数据,设置视图) 4.核心控制器调用 视图解析器:ViewResolver解析...
6. Json数据传输 ## 前端 1. jsp 2. js 3. css 4. Ajax请求(请求Json) 编写 1. 完成数据库建立 2. 完成BookDao 3. 完成BookService 4. 完成JSP初始界面 5. 完成期刊删除以及首页展示 6. 编写WebUtils类,转化...
2、可以将各个框架进行有效的管理和控制,让数据传输安全。 spring的IOC和DI? 答:控制反转和依赖注入是spring的两大基础作用。主要是将所有组件在spring提供的外部容器中加载。提高安全性,减低耦合性,使各个...
实例199 JSP与Servlet之间的跳转 644 实例200 简单的JSP多人聊天室 653 实例201 Servlet生成的动态图片 658 实例202 简单的JSP上传文件 661 实例203 用Servlet获取Web服务器信息 666 实例204 可选择的图形...
对于超过预期办理时间未办理,或办理人已明确外出无法处理等原因,相关人员可执行跳转操作,跳转操作自动跳过当前办理人员。 公文会签: 需要同时两人以上的领导批阅的问题可采用此功能。 公文归档: 已经办结的...
对一些点击、选中、按键等处理的事件 ,界面之间的 跳转Intent管理,通过Bundle对数据在界面之间进行传输。 Android的界面显示同样也是基于控件的。通常是用View(包括ViewGroup)控件配上XM L的样式来做的。具体...
也就是说,如果抛出了ClientAbortException异常,那就跳转到“ignored.jsp”这个页面,这个页面中什么内容都没有。 还有一种办法是在页面进行try..catch,之后什么都不做 异常原因分析: stream对应的类是...
★能获得每篇文章的调查统计数据及详细报表。 12.每篇文章均拥有独立的评论模块。支持匿名评论,支持评论后审核通过模式,支持文章发布者管理评论,支持前台管理员评论管理。 13.拥有强壮的栏目树功能,移动、排序...