资讯专栏INFORMATION COLUMN

jsp的参数传递和编码问题

Yu_Huang / 2236人阅读

摘要:今天在学习的回复页面的过程中,希望将待回复的父贴的标题传递到回复页面,但是一直都出现问题,在解决问题的过程中顺便复习了一下页面传递以及的编码问题。

今天在学习BBS的回复页面的过程中,希望将待回复的父贴的标题传递到回复页面,但是一直都出现问题,在解决问题的过程中顺便复习了一下页面传递以及jsp的编码问题。

首先,jsp中传递参数有四种方法:
1、form表单
2、request.setAttribute();和request.getAttribute();
3、超链接:name
4、通过forward进行request转发


    

其中form表单一般需要submit提交,但是经过查阅资料发现,form可以嵌套一个超链接,将需要提交的参数用隐藏域的方式提交过去,达到post点击提交的目的。分两种情况:
A.超链接的提交地址和form表单的提交地址是一致的:

首页 ...

B.超链接的提交地址和form表单的提交地址不一致的:

首页 ...

除此之外,jsp要经过3次的“编码”,第1阶段会用 pageEncoding,第2阶段会用utf-8至utf-8,第3阶段就是由Tomcat出来的网页, 用的是contentType

第1阶段, 是jsp编译成.java,它会根据pageEncoding的设定编码jsp,结果是由指定的编码方案翻译JAVA源码(即.java).
第2阶段, 是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是Unicode的编码的.class文件
第3阶段, 是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType中charset的设置就发挥了功效.

最初的构想是,通过超链接url,使用get方式传递帖子的id,父贴pid以及父贴title三个参数,最终发现id和pid可以正常传递,但是title是null或者乱码。通过修改pageEncoding和contentType为utf-8解决问题。但是utf8所占位数较长,如果使用get方式传递参数容易遇到url过长的http400错误(不同浏览器能允许的长度不同,在ie中无法打开,但是在chrome中却能正常打开网页)。
尝试用form结合超链接以post方式传递字符串参数,注意form可以包含 table 反之不成立
最后检验成功,方法可行。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68271.html

相关文章

  • JavaWeb 乱码问题终极解决方案!

    摘要:经常有读者在公众号上问乱码的问题,昨天又有一个小伙伴问及此事,其实这个问题很简单,但是想要说清楚却并不容易,因为每个人乱码的原因都不一样,给每位小伙伴都把乱码的原因讲一遍也挺费时间的,因此,松哥今天决定写一篇文章,和大伙好好捋捋中的乱码问题 经常有读者在公众号上问 JavaWeb 乱码的问题,昨天又有一个小伙伴问及此事,其实这个问题很简单,但是想要说清楚却并不容易,因为每个人乱码的原因...

    canger 评论0 收藏0
  • 超详细Java面试题总结(四 )之JavaWeb基础知识总结

    摘要:系列文章请查看超详细的面试题总结一之基础知识篇超详细的面试题总结二之基础知识篇超详细的面试题总结三之集合篇常见问题下面的都是自己之前在学习的时候总结的,对于巩固的基础知识应该有很大帮助。注意多线程的并发的读写类属性会导致数据不同步。 系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(...

    Leo_chen 评论0 收藏0
  • Servlet第四篇【request对象常用方法、应用】

    摘要:浏览器的中文数据提交给服务器,以编码对中文编码,当我在读取数据的时候,拿到的当然是乱码。接下来使用方式传递中文数据,把表单的方式改成即可当我们访问的时候,又出现乱码了于是我按照上面的方式,把对象设置编码为试试结果还是乱码。 什么是HttpServletRequest HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信...

    raise_yang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<