会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132359个问题
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 1231楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 1234楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 1237楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 1239楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 1242楼

老师,在这个添加的功能实现中,视频中老师添加的都是英文字段的,

我自己写出来这个功能之后,试着添加中文字段的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" />男&nbsp;&nbsp;&nbsp;&nbsp;
            <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>&nbsp;</label>
            <input name="" type="submit"  class="btn" value="确认保存" />
        </li>
    </ul>
    </form>
</div>

</body>
</html>


JAVA 全系列/第五阶段:JavaWeb开发/Web实战案例 1243楼
JAVA 全系列/第五阶段:JavaWeb开发/JSP技术详解 1244楼
JAVA 全系列/第五阶段:JavaWeb开发/Ajax技术详解(旧) 1245楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637