document.location的一点思考

今天练习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中读取不到

 

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

猜你喜欢

转载自niuyiwen.iteye.com/blog/2286642