java jsp 中 表单用 get 提交 怎样解决中文乱码问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java jsp 中 表单用 get 提交 怎样解决中文乱码问题?相关的知识,希望对你有一定的参考价值。

这个与tomcat有关系,因为tomcat对于post请求,可以通过request.setCharacterEncoding来设置编码,如果不设置,默认为iso-8859-1编码,如果采用get提交方式,它会永远使用iso-8859-1编码。这需要在tomcat的配置文件server.xml进行配置:
<Connector URIEncoding="GB2312"
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
/>
设置它的URIEncoding就可以解决此问题。
参考技术A 您可以了触以下几个函数,这个对页面上的参数转码非常有帮助:
Java编程script中存在几种对URL字符串停止编码的窍门:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的功能各不相同。
希望对你有所帮助~!
参考技术B 在接受信息的页面里 写 <%request.setCharacterEncoding("GBK")%>

关于JSP中form的get和post提交方式

两者都是可以的,区别在于get是从服务器拿数据,post是向服务器送数据。
get不安全,由于参数会放在url中,大家能够看到,且数据量不能大于2kb(有限制)。
post是通过httppost机制,将表单内各个字段与内容放在消息头里一起传送,所以是相对安全的,且数据量在100kb以下。
get用request.querystring获取变量值。post用request.form提交数据(这里要注意的是,由于默认是get,所以必须是服务器端有对post发送的http请求进行处理的情况下)。
参考技术A 当用户向服务器发送请求时,包括两部分:请求首部和消息体。
  get()方法把参数放在请求首部,而post()方法把参数放在消息体。
  这就导致有两点不一样:第一,get()方法传递的参数可以被任何人在地址栏中看到,而post()方法不可以被看到。第二,由于请求首部的信息容量是有限的,所以get()方法传递的参数是有限的,而post()方法可以向服务器传递任意多个参数。
另外,当你想要把当前页面的内容建立书签时,使用get()方法是可以的,而是用post方法是不可以的。
参考技术B get提交就是地址后面带一串参数提交,post提交不会在地址中显示参数,能用post提交的就尽量用post提交方式,安全点!

以上是关于java jsp 中 表单用 get 提交 怎样解决中文乱码问题?的主要内容,如果未能解决你的问题,请参考以下文章

java 在jsp中怎样获取servlet中的数据

jsp中怎样获得表单中radio的回显信息?

Java Web用get提交表单能跳过登陆页面直接通过验证,要避免此情况,编写servlt时可以怎样处理?

JSP简单练习-获取表单数据

java form表单提交到另一个jsp页面,但页面不跳转过去,求指点

java程序如何获取POST方式提交的数据?