首先,我们新建一个项目。然后在WebContent中新建jsp文件命名为regist.jsp 这个界面为用户提供输入信息的功能,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 注册界面 -->
<h1>注册新用户</h1>
<!-- action 提交请求的地址 method 处理请求的方式 -->
<form action="userService.jsp"method="get">
<table>
<tr>
<td>用户名</td>
<td>
<input type="text"name="userName"/>
</td>
</tr>
<tr>
<td>密码</td>
<td>
<input type="password"name="userPwd"/>
</td>
</tr>
<tr>
<td>爱好</td>
<td>
<input type="checkbox"name="hobby"value="1"/>看书
<input type="checkbox"name="hobby"value="2"/>打球
<input type="checkbox"name="hobby"value="3"/>健身
</td>
</tr>
<tr>
<td>
<input type="submit"/>
</td>
</tr>
</table>
</form>
</body>
</html>
效果如下图:
在上面的代码中,我们看到我们将数据提交到了userService.jsp
处理请求的方式被设定为get
<form action="userService.jsp"method="get">
我们同路径新建jsp文件,名字叫userService.jsp 代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 处理注册的jsp文件 -->
<%
String userName = request.getParameter("userName");
String userPwd = request.getParameter("userPwd");
out.print("用户名:" + userName);
out.print("密码:" + userPwd);
%>
</body>
</html>
我们用userName接收了用户提交的用户名,userPwd接受用户提交的密码,然后就是简单的打印出来,第一次输入用户名我们用英文来测试:
运行结果如图:
没有任何问题,第二次我们用中文用户名测试:
点击提交:
发现用户名乱码,接下来是解决方案:
方案一(手动解决):
userName = new String(userName.getBytes("ISO-8859-1") , "UTF-8");
将userService.jsp中的userName进行处理用getBytes方法括号里面为原来的编码类型 , 后面为目标编码类型 ,修改后代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 处理注册的jsp文件 -->
<%
String userName = request.getParameter("userName");
//手动处理中文字符的问题
userName = new String(userName.getBytes("ISO-8859-1") , "UTF-8");
String userPwd = request.getParameter("userPwd");
out.print("用户名:" + userName);
out.print("密码:" + userPwd);
%>
</body>
</html>
运行结果:
成功解决!但是这种方法一次只能处理一条数据,要想让他每次都自动处理要怎么做呢?请看方案二:
方案二(配置tomcat文件):
找到tomcat安装路径,打开其中的 conf 文件夹,编辑其中的名字叫做 server.xml 的文件找到第70行左右的叫做Connector的内容进行修改:
配置请求的字符集,加入此句话:
URIEncoding="UTF-8"
保存,重新部署服务器,启动项目,提交后即可解决。
若用post方式,则应该设置请求字符集:
request.setCharacterEncoding("UTF-8");
如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 处理注册的jsp文件 -->
<%
//设置请求的字符集
request.setCharacterEncoding("UTF-8");
String userName = request.getParameter("userName");
String userPwd = request.getParameter("userPwd");
out.print("用户名:" + userName);
out.print("密码:" + userPwd);
%>
</body>
</html>
以上便是解决方法。如有错误,欢迎指出,感谢阅读!