`
ericslegend
  • 浏览: 85566 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jsp 跳转及数据传输问题

    博客分类:
  • Java
阅读更多
<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设置的属性。
 
JspServlet之间的跳转:
Jsp跳转Servlet可以使用<jsp:forward page=”URL” />或者response.sendRedirect(URL)都可以,它们之间的区别上面已经说明了。
 
Servlet跳转Jsp
²        getRequestDispatcherforward(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页面及页面跳转问题

    ajax 提交数据到后台jsp页面及页面跳转问题 我logincheck.jsp页面取传参数代码: String user=request.getParameter("user1"); String pwd=request.getParameter("pwd1"); login.jsp input 取2参数何用ajax 传给...

    基于JSP的学生管理系统

    初学者对数据库的增删改查.页面跳转,数据传输.

    Spring MVC注解与数据绑定(含源码及结果图)

    1、有如下一个订单信息页面order.jsp(置于/WEB-INF/jsp目录下),按以下步骤实现一个使用POJO类型完成表单数据传输的SpringMVC数据绑定项目。 (1) 创建一个Order类来封装上述订单信息,其中各个属性的名称和数据类型...

    Java web 期末大作业,完成度100%附带文档.

    本次项目主要以本学期所学内容为基础,采用servlet+jsp+jdbc的技术以及mvc模式进行项目开发,本次开发的内容主要以实现CRUD核心功能为主的教务管理系统,分为学生端和教师端,前端采用jquery进行数据传输以及处理,...

    SSM+MAVEN+MYSQL框架整合原理+源码

    3.在控制层调用业务逻辑层(service),数据持久层(DAO)返回控制层,请求完成获取一个结果,设置一个要跳转的视图,(ModelAndView装载并传输数据,设置视图) 4.核心控制器调用 视图解析器:ViewResolver解析...

    基于JavaWeb的期刊管理系统+课设报告.zip

    6. Json数据传输 ## 前端 1. jsp 2. js 3. css 4. Ajax请求(请求Json) 编写 1. 完成数据库建立 2. 完成BookDao 3. 完成BookService 4. 完成JSP初始界面 5. 完成期刊删除以及首页展示 6. 编写WebUtils类,转化...

    java面试题

    2、可以将各个框架进行有效的管理和控制,让数据传输安全。 spring的IOC和DI? 答:控制反转和依赖注入是spring的两大基础作用。主要是将所有组件在spring提供的外部容器中加载。提高安全性,减低耦合性,使各个...

    JAVA 范例大全 光盘 资源

    实例199 JSP与Servlet之间的跳转 644 实例200 简单的JSP多人聊天室 653 实例201 Servlet生成的动态图片 658 实例202 简单的JSP上传文件 661 实例203 用Servlet获取Web服务器信息 666 实例204 可选择的图形...

    数飞电子公文管理系统.rar

    对于超过预期办理时间未办理,或办理人已明确外出无法处理等原因,相关人员可执行跳转操作,跳转操作自动跳过当前办理人员。 公文会签: 需要同时两人以上的领导批阅的问题可采用此功能。 公文归档: 已经办结的...

    《Android应用开发》个人总结报告.doc

    对一些点击、选中、按键等处理的事件 ,界面之间的 跳转Intent管理,通过Bundle对数据在界面之间进行传输。 Android的界面显示同样也是基于控件的。通常是用View(包括ViewGroup)控件配上XM L的样式来做的。具体...

    解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

    也就是说,如果抛出了ClientAbortException异常,那就跳转到“ignored.jsp”这个页面,这个页面中什么内容都没有。 还有一种办法是在页面进行try..catch,之后什么都不做 异常原因分析: stream对应的类是...

    Lerx 网站内容管理系统 v5.5.zip

    ★能获得每篇文章的调查统计数据及详细报表。 12.每篇文章均拥有独立的评论模块。支持匿名评论,支持评论后审核通过模式,支持文章发布者管理评论,支持前台管理员评论管理。 13.拥有强壮的栏目树功能,移动、排序...

Global site tag (gtag.js) - Google Analytics