ITKeyword,专注技术干货聚合推荐

注册 | 登录

回看JSP——解决提交form表单出现的乱码问题

u011024652 分享于 2016-07-19

推荐:jsp中form表单提交到serlvet中文乱码问题

问题描述: 在jsp中,已经设置编码方式,如下: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ page contentType="text/html;charset=

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

最近又开始把JSP重新拿出来学一遍,有了不少的收货,有些之前没注意到的小细节也发现了解决的方法,比如form表单的乱码问题。乱码问题在写web程序时很常见,也很让人头疼,有时候一个疏忽就会出现乱码,接下来我主要讲一下我学到的解决方法。

(一)使用post请求提交表单出现乱码问题

现在有如下的代码,这段代码会使用post方式 提交相应的内容到request.jsp这个页面。

推荐:form表单提交服务器,数据获取乱码问题

今天做练习的时候用form表单获取数据,传到服务器然后通过jsp回传到客户端。 中间出现了乱码的问题 在jsp中写的中文是正常显示的,只有获取到的数据是乱码的,那

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户注册</title>
</head>
<body>
	<h1>用户注册</h1>
	<hr/>
	
	<form action="request.jsp" method="post">
		用户名:
		<input type="text" name="userName" /> <br/>
		爱好:
		<input type="checkbox" name="favorite" value="read">阅读
		<input type="checkbox" name="favorite" value="music">音乐
		<input type="checkbox" name="favorite" value="dance">跳舞	<br/>
		
		<input type="submit" value="提交"/>
	</form>
	
</body>
</html>
requst.jsp的代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>request内置对象</title>
</head>
<body>
	<h1>request内置对象</h1>
	<hr/>
	用户名:<%=request.getParameter("userName") %><br/>
	爱好:
	<%
		String[] favorites = request.getParameterValues("favorite");
		if(null != favorites) {
			for(String favorite : favorites) {
				out.println(favorite + "  ");
			}
		}
	%>
	<br/>
	
</body>
</html>
对于从reg.jsp提交过来的请求,如果只是使用requst.getParameter(String name)的方式来获取userName的参数值,如果userName的值里面包含中文,那么获取到的值就会出现乱码现象。出现这个问题的原因是提交表单时tomcat服务器(以tomcat为例)默认提交的字符编码是ISO-8859,但是中文的编码为UTF-8,request.jsp收到请求时未给request请求设置字符集,而要解决这个问题,就需要服务器端的最开始处将请求的数据设置为“UTF-8”就行了,输入如下语句:request. setCharacterEncoding(“UTF-8”);这样用户在服务器端获取到的中文数据就不再是乱码了。注意在使用setCharacterEncoding方法设置字符编码时设置的编码要与请求页面的字符编码一致。

(二)通过URL传递参数出现的乱码问题

很多时候会通过URL来传递请求参数,如下对reg.jsp的代码做了修改:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户注册</title>
</head>
<body>
	<h1>用户注册</h1>
	<hr/>
	
	<form action="request.jsp" method="post">
		用户名:
		<input type="text" name="userName" /> <br/>
		爱好:
		<input type="checkbox" name="favorite" value="read">阅读
		<input type="checkbox" name="favorite" value="music">音乐
		<input type="checkbox" name="favorite" value="dance">跳舞	<br/>
		
		<input type="submit" value="提交"/>
	</form>
	<a href="request.jsp?userName=李四">通过URL方式提交参数</a>
	
</body>
</html>
添加了一个超链接,指向的也是request.jsp,传递了一个userName为李四的参数,这时通过request.getParameter(String name)方式获取参数值时也会出现乱码,而要解决这个乱码可以通过修改服务器的配置来实现,以tomcat服务器为例,修改tomcat 目录-> conf-> server.xml,修改如下内容:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>
添加一个URIEncoding的配置即可。
还有更多的解决form表单乱码的方法可以参考 这篇文章

推荐:tomcat里面表单以get方式提交出现中文乱码解决方法

在tomcat的conf文件夹下的conf中找到server.xml文件,添加标红的字符即可 <Connector port="8080" protocol="HTTP/1.1"                 connectionTimeout="200

最近又开始把JSP重新拿出来学一遍,有了不少的收货,有些之前没注意到的小细节也发现了解决的方法,比如form表单的乱码问题。乱码问题在写web程序时很常见,也很让人头疼,有时候一个疏忽就会出

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。