jsp三种跳转方式[详]

 

JSP三种页面跳转方式
        <http://blog.163.com/huyuxi0228@126/blog/static/325285332008566935493/>
      昨天在研究jsp页面跳转,费了好大的劲才完成在电视上的使用。在网上找了一些资料,加上自己的心得,跟大家分享一下。
使用JSP大约有下列三种跳转方式:
      1. response.sendRedirect(跳转地址);
      2. response.setHeader("Location","");
      3. <jsp:forward page="" />
      经过试验得到下面的一些规则:
      一. response.sendRedirect()
        此语句前不允许有out.flush(),如果有,会有异常:
        java.lang.IllegalStateException: Can&apos;t sendRedirect() after data has
        committed to the client.
         at
        com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
        ...
        跳转后浏览器地址栏变化
        如果要跳到不同主机下,跳转后,此语句后面的语句会继续执行,如同新开了线程,但是对response的操作已经无意义了;
        如果要跳到相同主机下,此语句后面的语句执行完成后才会跳转;
      二. response.setHeader("Location","")
        此语句前不允许有out.flush(),如果有,页面不会跳转。
              正在装载数据……
        跳转后浏览器地址栏变化
        此语句后面的语句执行完成后才会跳转
      三. <jsp:forward page="" />
        此语句前不允许有out.flush(),如果有,会有异常:
        java.lang.IllegalStateException: forward() not allowed after buffer has
        committed.
         at
        com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:134)
         at
        com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:101)
         at com.caucho.jsp.PageContextImpl.forward(PageContextImpl.java:836)
         ...
        跳转后浏览器地址栏不变,但是只能跳到当前主机下
        此语句后面的语句执行完成后才会跳转  
        跳转后得路径变为当前路径,图片不是绝对路径将无法显示
      JSP跳转页面详解
      在JSP中使用jsp forward Action来实现页面的跳转功能。
         语法:
      <jsp:forward page="{relativeURL|<%= exdivssion %>}"/> 或
      <jsp:forward page="{relativeURL|<%= exdivssion %>}">
      <jsp:param name="parameterName"
      value="{parameterValue|<%= exdivssion %>}"/>+</jsp:forward>
        这个action使您可以将request向前到另外一个页面。它只有一个属性,page。Page应有一个相对的URL组成。这可以是一个静态的
值或者是能够在被请求的时候计算得到的值,就如下面两个例子一般:
      <jsp:forward page="/utils/errorReporter.jsp"/>
      <jsp:forward page="<%= someJavaExdivssion %>"/>
      !supportEmptyParas]>
        现在以一个具体例子来说明:在test1.jsp中使用forward使其跳转到test2.jsp页面中。
      Test1.jsp
      <HTML>
      <HEAD>
      <TITLE>forward test</TITLE>
      !supportEmptyParas]>
      </HEAD>
      !supportEmptyParas]>
      <BODY BGCOLOR="#FFFFFF">
      <!--跳转到test2.jsp--!>
      <jsp:forward page="/test2.jsp"/>
      </BODY>
      </HTML>
      !supportEmptyParas]>
      test2.jsp
      <HTML>
      <HEAD>
      <TITLE> forward test </TITLE>
      !supportEmptyParas]>
      </HEAD>
      !supportEmptyParas]>
      <BODY BGCOLOR="#FFFFFF">
      <%out.println("这是jsp2.jsp页面产生出的输出");%>
      </BODY>
      </HTML>
      !supportEmptyParas]>
        运行test1.jsp,可在浏览器中看见:"这是jsp2.jsp页面产生出的输出"的输出信息。但是如果你在test1.jsp和test2.jsp这两个页
面中有参数传递怎么办呢?用get方式吧,不但总的长度有限制,使用现在十分不方便,而且有时候还不安全。其实我们完全可以使用jsp1.1中
给forward里提供的para属性就可以解决。现以test3.jsp和test4.jsp来说明。
      !supportEmptyParas]>
      Test1.jsp
      <HTML>
      <HEAD>
      <TITLE> forward test </TITLE>
      !supportEmptyParas]>
      </HEAD>
      !supportEmptyParas]>
      <BODY BGCOLOR="#FFFFFF">
      <jsp:forward page="/test4.jsp">
      <jsp:param name="name" value="powerman"/>
      <jsp:param name="address" value=" 北京西大街188号"/>
      </jsp:forward>
      </BODY>
      </HTML>
      !supportEmptyParas]>
      test2.jsp
      <HTML>
      <HEAD>
      <TITLE>forward test</TITLE>
      !supportEmptyParas]>
      </HEAD>
      !supportEmptyParas]>
      <BODY BGCOLOR="#FFFFFF">
      <%
      out.println("这是jsp4.jsp页面产生出的输出"+"<br>");
      out.println("姓名:"+request.getParameter("name")+"<br>");
      out.println("地址:"+request.getParameter("address")+"<br>");
      !supportEmptyParas]>
      %>
      </BODY>
      </HTML>
         运行test3.jsp,可在浏览器中看见:
         "这是jsp4.jsp页面产生出的输出
         姓名:huyuxi
         地址:郑州市未来大道499号"
      的输出信息
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值