document.location的一点思考

本文深入探讨了在使用不同页面跳转方式时,JSTL标签在请求中绑定数据的传递差异。通过具体案例分析,揭示了`document.location`跳转方式下数据无法正确传递的原因,以及`request.getRequestDispatcher`方式的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天练习jstl标签的时候发现一个有意思的问题:

 

题目要求:tag1.jsp中往request中绑定一个list, tag2.jsp中读取list输出

 

我的代码:   

 

tag1.jsp中的js函数

 

             function toNextPage(){
                    <%
                           List<String> list = new ArrayList<String>();
                           list.add("first");
                           list.add("second");
                           list.add("third");
                           request.setAttribute("list", list);
                           request.getRequestDispatcher("tag2.jsp").forward(request, response);
                    %>
                    //document.location = "tag2.jsp";
             }

 

 

     tag2.jsp中的代码:

 

       <c:forEach var="i" begin="1" end="5" step="2">
              ${i }<br>
       </c:forEach>
       <c:forEach items="${requestScope.list }" var="str">
              ${ str}<br>
       </c:forEach>
       <%
              List<String> list = (List)request.getAttribute("list");
              for(String s : list){
       %>
                     <%=s %><br>
       <%
              }
        %>

 

 

运行结果:

       tag1.jsp中使用document.location方式跳转的话, tag2.jsp中不论是jstl方式还是java方式都不会读出任何数据; 如果使用request.getRequestDispatcher("tag2.jsp").forward(request, response);方式转发的话, tag2.jsp中不论是jstl还是java都能读取到正确的数据.

 

由此猜想: document.loaction=”” 这种方式跳转的话, 是否就不是一次请求了呢? 所以在request中绑定的数据在tag2.jsp中读取不到

 

 

在百度上搜了一下, 没有得到相关的结论, 所以把思考写出来, 奇文共欣赏, 疑义相与析. 希望各路大神能够不吝教导~~~给我释疑解惑一下

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值