老师,在这个添加的功能实现中,视频中老师添加的都是英文字段的,
我自己写出来这个功能之后,试着添加中文字段的username,可是在数据库中显示的是乱码,
然后我进行问题的排查,在控制台打印信息,发现在提取表单数据的时候就是打印的问号(说明是乱码)
我想问:浏览器,jsp页面,服务器之间的编码的关系是怎么样的?
这个是我添加功能的servlet
package com.sunxin.web.servlet;
import com.sunxin.pojo.Users;
import com.sunxin.service.UserManagerService;
import com.sunxin.service.impl.UserManagerServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
@WebServlet("/AddUser.do")
public class UserAddServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String flag = req.getParameter("flag");
if ("adduser".equals(flag)){
//调用这个AddUserManager方法
this.AddUserManager(req,resp);
}
}
//定义一个处理这个添加功能的方法
private void AddUserManager(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
try{
//实例化service接口
UserManagerService ums = new UserManagerServiceImpl();
ums.AddUserFunction(this.getThisPageUser(req));
//排查的代码
System.out.println("**************************************");
System.out.println(this.getThisPageUser(req).getUsername());
System.out.println("**************************************");
resp.sendRedirect("ok.jsp");
}catch (Exception e){
e.printStackTrace();
resp.sendRedirect("error.jsp");
}
}
//定义一个获取User对象的方法的
private Users getThisPageUser(HttpServletRequest req){
//修改tomcat的编码方式
try {
req.setCharacterEncoding("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String username = req.getParameter("username");
String userpwd = req.getParameter("userpwd");
String usersex = req.getParameter("usersex");
String phonenumber = req.getParameter("phonenumber");
String qqnumber = req.getParameter("qqnumber");
//装进一个user对象中
Users user = new Users();
user.setUsername(username);
user.setUserpwd(userpwd);
user.setUsersex(usersex);
user.setPhonenumber(phonenumber);
user.setQqnumber(qqnumber);
return user;
}
}
这个是页面的代码
<%--
Created by IntelliJ IDEA.
User: asus
Date: 2020/8/5
Time: 9:32
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link href="css/select.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.idTabs.min.js"></script>
<script type="text/javascript" src="js/select-ui.min.js"></script>
<script type="text/javascript" src="editor/kindeditor.js"></script>
<script type="text/javascript" src="My97DatePicker/WdatePicker.js"></script>
<script type="text/javascript">
$(document).ready(function(e) {
$(".select1").uedSelect({
width : 345
});
});
function save(){
window.location='ok.html';
}
</script>
<script type="text/javascript">
KE.show({id:"ecp",width:"800px",height:"300px"});
</script>
</head>
<body>
<div class="place">
<span>位置:</span>
<ul class="placeul">
<li><a href="#">用户管理</a></li>
<li><a href="#">添加用户</a></li>
</ul>
</div>
<div class="formbody">
<div class="formtitle"><span>基本信息</span></div>
<form action="AddUser.do" method="post" accept-charset="utf-8">
<input type="hidden" name="flag" value="adduser"/>
<ul class="forminfo">
<li>
<label>用户名</label>
<input name="username" type="text" class="dfinput" /></li>
<li>
<li>
<label>密码</label>
<input name="userpwd" type="text" class="dfinput" /><i></i></li>
<li>
<label>性别</label><cite/>
<input name="usersex" type="radio" value="1" checked="checked" />男
<input name="usersex" type="radio" value="0" />女
</li>
<li>
<label>联系方式</label>
<input name="phonenumber" type="text" class="dfinput" />
</li>
<li>
<label>QQ号</label>
<input name="qqnumber" type="text" class="dfinput" />
</li>
<li>
<label> </label>
<input name="" type="submit" class="btn" value="确认保存" />
</li>
</ul>
</form>
</div>
</body>
</html>