友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

JSP入门教程(DOC格式)-第8章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






     1。  浏览器向 test。jsp 发送请求。  



                                                                                                         



     2。  test。jsp 计算客户选择的颜色,将请求转发至 red。jsp。  



                                                                                                                               



     3。  red。jsp 返回响应给浏览器。  



                                                        27 / 148  


…………………………………………………………Page 28……………………………………………………………

                                           



                                                                                  



这下知道为什么浏览器的地址没有变化了吧?因为浏览器只是执行了对 

test。jsp 的请求,test。jsp 到 red。jsp 的部分是在服务器内执行的,浏览器并 

不知道服务器里到底发生了什么,它只知道自己获得的响应是 test。jsp 发回来 

的,甚至不知道服务器还有个red。jsp。  



这就是请求转发 forward 了。例子见 lingo…sample/03…01/。  



3。3。 如果用 redirect  



test。jsp 中需要这样写:  



  

  



略过取得参数与比较参数值不提,只关注 redirect 的部分:  



response。sendRedirect(〃red。jsp〃);  



response 翻译过来就是响应,代表着 http 响应。调用 response 的 

sendRedirect(〃red。jsp〃)方法,将页面重定向到 red。jsp。  



再请大家注意一下浏览器的 url 地址:  



选择红色页面时:  



                                       28 / 148  


…………………………………………………………Page 29……………………………………………………………

                                                            



                                                                                       



选择绿色页面时:  



                                                                                       



与 forward 不同,url 地址一直在变化,红色的时候显示 red。jsp,绿色的时候 

显示 green。jsp。  



再看一下流程图吧:  



     1。  浏览器向 test。jsp 发送请求。  



                                                                                                      



     2。  test。jsp 计算客户选择的颜色,向浏览器发送一个页面重定向 

            (redirect)的响应,响应中包含red。jsp 的url 地址。  



                                                      29 / 148  


…………………………………………………………Page 30……………………………………………………………

                                                                 



                                                                                                                    



3。  浏览器根据页面重定向(redirect)响应中的red。jsp 地址,再次向服务 

      器发送请求,这次请求的就是 red。jsp 了。  



                                                                                                                  



4。  red。jsp 执行,返回响应。  



                                                          30 / 148  


…………………………………………………………Page 31……………………………………………………………

                                         



                                                                      



redirect 会触发另一个请求响应流程,第二次请求的时候是由浏览器发起对 

red。jsp 的请求,所以url 地址改变了。  



这就是页面重定向 redirect 了。例子见 lingo…sample/03…02/。  



3。4。 forward 和 redirect 的问题  



3。4。1。 绝对路径与相对路径  



    1。  如果咱们使用的 URL 网址是以“/”开头的,那么这个网址就叫做绝对路 

       径。  

   2。  如果咱们使用的 URL 网址不是“/”开头的,那么这个网址就叫做相对路 

       径。  



3。4。1。1。 相对路径  



在相对路径上,两者的表现是相同的。  



看看 lingo…sample/03…03/这个例子,如果我们去请求 relative/forward。jsp 

或 redirect。jsp,然后从这里再跳转向它下面的result/result。jsp 会怎样呢?  



    1。  forward 的例子:  



         



       这里的相对路径就是 result/result。jsp。  



                                      31 / 148  


…………………………………………………………Page 32……………………………………………………………

                                      



      因为刚刚请求的 test。jsp 是在/03…03/relative/下,所以我们的当前路 

      径就是/03…03/relative/,执行 forward 的时候会寻找当前路径下的 

      result/result。jsp,找到之后便转发请求。  



   2。  redirect 的例子:  



        



      这里的相对路径也是 result/result。jsp。  



      因为刚刚请求的 test。jsp 是在/03…03/relative/下,所以我们的当前路 

      径就是/03…03/relative/,执行 redirect 的时候会把当前路径加上 

      result/result。jsp,把结果作为重定向的地址发送给浏览器,浏览器再 

      去请求/03…03/relative/result/result。jsp,从而得到响应。  



3。4。1。2。 绝对路径  



问题出现了,绝对路径在forward 和 redirect 中出现了差别,还是刚才的情况, 

但使用绝对路径的时候写法便不同了。  



   1。  forward 的例子:  



        



      这里的绝对路径就是/relative/result/result。jsp。  



      在本地测试时,forward 把 http://localhost:8080/03…03/当作根路径, 

      在它的基础上计算绝对路径。  



      这是由 jsp 的部署方式决定的,webapp 里可以放好多项目,为了让这些 

      项目可以互不影响、独立运行,不能让请求从一个项目直接在服务器内部 

      转移到另一个项目。为了防止出现这种情况,在执行 forward 的时候干脆 

      把项目的路径当作根目录,开发者看不到其他项目,也就不会出现问题了。  



   2。  redirect 的例子:  



         



      这里的绝对路径却是/03…03/absolute/result/result。jsp。  



                                  32 / 148  


…………………………………………………………Page 33……………………………………………………………

                                         



       在本地测试时,redirect 把 h
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!