jsp中get请求与post请求编码统一问题(1.0)
统一请求的编码:request
- 前提:register.jps页面:
<form action="show.jsp" method="post">
//默认为get的提交方式
<%--<form action="show.jsp">--%>
用户名:<input type="text" name="uname"/><br/>
密码:<input type="password" name="upwd"/><br/>
年龄:<input type="text" name="uage"/><br/>
爱好:<br/>
<input type="checkbox" name="uhobbies" value="足球">足球,
<input type="checkbox" name="uhobbies" value="篮球">篮球,
<input type="checkbox" name="uhobbies" value="乒乓球">乒乓球<br/>
<input type="submit" value="注册">
</form>
show.jsp页面:
<%
//设置post编码(只对post方式有效)
request.setCharacterEncoding("utf-8");
String name = request.getParameter("uname");
//进行转码
// name = new String(name.getBytes("iso-8859-1"), "utf-8");
int age = Integer.parseInt(request.getParameter("uage"));
String pwd = request.getParameter("upwd");
String[] hobbies = request.getParameterValues("uhobbies");
%>
注册成功,信息如下: <br>
姓名:<%=name%><br/>
年龄:<%=age%><br/>
密码:<%=pwd%><br/>
爱好:<br/>
<%
if (hobbies != null) {
for (String hobby : hobbies) {
out.print(hobby + " ");
}
}
%>
请求的方式不一样,返回请求的编码也不一样
get方式请求出现乱码 解决:
a.统一每一个变量的编码
new String(旧编码,新编码);例如:
name = new String(name.getBytes("iso-8859-1"), "utf-8");
Tomcat7的默认编码是iso-8859-1,如果文件中指定使用utf-8,会报错
b.一次性修改server.xml,一次性更改Tomcat默认编码(utf-8)
在Tomcat的server.xml中修改,在:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
后面改,添加后为:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
注意,以上方法仅适用于get的请求方式
post方式:
request.setCharacterEncoding("utf-8");