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

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

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






        

          

          title  

        



      meta 部分用来指定当前 html 的编码格式,注意这一段要放在head 标签 

       中,并且放到head 标签的最前面,如果不是最前面 ie 下可能会出现问题, 

      尤其是在 title 中有中文的情况下。  



完成了以上三段检验,我们才能保证输出的 jsp 页面会正常显示中文。  



                                                      



例子在 lingo…sample/02…02/下,正常显示的页面 index。jsp,还留了一个乱码 

页面 index_wrong。jsp。  



                                   22 / 148  


…………………………………………………………Page 23……………………………………………………………

                                               



2。2。2。  POST 乱码  



先把 form 里加上 method=〃POST〃,让 form 提交的时候使用 POST 方式。  



发送请求的时候,使用的编码是 iso…8859…1,意味着只有英文是有效字符,这 

个限制是因为当初指定 http 标准的成员都来自英语国家,所以如果使用默认的 

方式从请求获取数据,中文一定会全部变成乱码。  



如果不信,你可以在刚才的例子里输入中文,然后提交:  



                                                                  



提交结果就会变成这样:  



                                                                  



怎么解决呢?我们要 jsp 最前面加上一条 java 语句,设置请求的字符编码。  



   



于是,那些乱码都正常了:  



                                                                  



例子在 lingo…sample/02…03/下。  



2。2。3。 GET 乱码  



直接点击超链接,form 的默认提交方式都是GET。  



POST 方式下的解决方式还算简单,因为 POST 方式下提交的数据都是以二进制的 

方式附加在http请求的body部分发送,只需要在后台指定编码格式就足矣解决。  



                                          23 / 148  


…………………………………………………………Page 24……………………………………………………………

                                         



GET 方式下会将参数直接附加到 url 后面,这部分参数无法使用 

request。setCharacterEncoding()处理,结果就是 get 形式的所有中文都变成了 

乱码。  



                                                         



这时再也没有简便方法了,只能对这些中文一个一个进行转换,使用 new  

String(bytes; 〃gb2312〃)进行转码。  



   



如我们所见,先从 request 中获得参数,接着把字符串按照 iso…8859…1 编码打 

散成 byte 数组,然后用 gb2312 编码组合成新字符串,最后打印出来就是正常的 

中文了。  



写在一起就变成了:  



   



这样做的缺点,是从请求中取得的所有中文都需要转码,非常烦琐。  



所以大家千万不要像这样测试,把中 

文参数写到超链接中,form 尽量使用 method=〃POST〃,这样只需要设置 

request。setCharacterEncoding()就可以应付中文乱码问题。  



例子在 lingo…sample/02…04/下。  



经历了这些只有非英语体系国家才能遇到的波折之后,我们的 jsp 终于可以接受 

请求中的参数,并正常响应了。下面将要进行更复杂的请求响应流程。  



                                     24 / 148  


…………………………………………………………Page 25……………………………………………………………

                                             



                    第 3 章 请求的跳转与转发  



注意  



应用广泛,而又没几个人明白的东西上场了,这章就只讨论这一个问题。  



如果你确认自己明白下面这个问题,请直接进入下一章:第 4 章 四个作用域。  



    1。  forward; redirect 的区别。  



3。1。 范例  



这次用户可以在首页选择自己喜欢的颜色,进入对应的页面。  



                                                       



选择绿色,会进入绿色界面:  



                                                       



选择红色,会进入红色界面:  



                                                       



好的,这里我们会看到四个页面:  



    1。  index。jsp 中选择颜色,点击按钮后提交到 test。jsp。  

    2。  test。jsp 取得用户选择的颜色,根据颜色值显示对应的页面。  

    3。  如果选择了红色,就显示 red。jsp。  

    4。  如果选择了绿色,就显示 green。jsp。  



在这里例子里,index。jsp,red。jsp,green。jsp 中的内容都是一样的,所有的 

玄机都在 test。jsp 中。  



                                         25 / 148  


…………………………………………………………Page 26……………………………………………………………

                                             



现在面临的问题是如何在 test。jsp 决定实现 red。jsp 或者 green。jsp,我们可 

以在forward 和 redirect 中任选其一。  



3。2。 如果用 forward  



test。jsp 中需要这样写:  



  

  

          



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



request。getRequestDispatcher(〃red。jsp〃)。forward(request; response);  



首先调用 request 的 getRequestDispatcher()方法,获得对应 red。jsp 的转发 

器,然后调用 forward()方法执行请求转发。结果用户看到的就是 red。jsp 中的 

结果了,一个红色的页面。  



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



选择红色页面时:  



                                                                 



选择绿色页面时:  



                                                                 



                                         26 / 148  


…………………………………………………………Page 27……………………………………………………………

                                                              



于是,无论转发至 red。jsp 还是 green。jsp,地址栏上显示的都是 test。jsp。  



这是为什么呢?通过下面的流程图会让我们容易理解:  



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



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