会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132474个问题
Python 全系列/第一阶段:Python入门/Python入门(动画版) 30421楼
Python 全系列/第十五阶段:Python 爬虫开发/分布式爬虫 30423楼
大数据全系列/(旧)第二十一阶段:项目五 PB级音乐数据中心数仓综合项目/机器详细信息统计及日活跃用户统计 30424楼

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

我自己写出来这个功能之后,试着添加中文字段的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实战案例 30429楼

image.png

springbootmybatis.zip

老师,<link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/>

还有6b3c2569b2c122c703185c9bef23dda.png也导入了,做spring和JDBC结合无问题,我将源码复制进去还是报这个错,idea用的2019.3版本的

JAVA 全系列/第九阶段:Spring Boot实战/Spring Boot 30430楼

老师我的这个没有缺少jar,静态资源也可以加载到。为什么不行啊

# 配置连接超时
connect_timeout=10
# 网络工作的超时, 一次连接的超时时长。
network_timeout=30
# 连接中的使用字符集
charset=UTF-8
# tracker的http协议端口,和FastDFS中的tracker服务的配置文件tracker.conf中的http.server_port一致
http.tracker_http_port=8080

# tracker服务器的所在地址。 就是IP:port
tracker_server=192.168.86.132:22122
-----------------------------------------------------------------------------------------------------
package com.bjsxt.fdfs.test;

import org.csource.common.MyException;
import org.csource.fastdfs.*;


import java.io.IOException;

public class TestInitClient {

    public static void main(String[] args) {
        //创建FastDFS Java客户端
        try {
            //加载客户端配置文件,就是刚定义的conf配置文件
            ClientGlobal.init("src/main/resources/test/fdfs.conf");
            //创建Tracker服务器的客户端连接对象,
           TrackerClient trackerClient = new TrackerClient();

           //通过Tracker客户端对象,获取Tracker服务端对象
            TrackerServer trackerServer = trackerClient.getConnection();

            //通过Tracker客户端和服务端对象,获取Storage服务端对象
            StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);

            //通过Tracker服务端对象和Storage服务端对象,来创建Storage客户端访问对象,实现文件的上传和下载
            //最终使用的,由于文件处理的对象
            StorageClient storageClient = new StorageClient(trackerServer,storageServer);

            System.out.println("trackerClient:"+trackerClient);
            System.out.println("trackerServer:"+trackerServer);
            System.out.println("storageServer:"+storageServer);
            System.out.println("storageClient:"+storageClient);

        }catch (IOException e1){ //配置文件找不到之类。 IO异常
            e1.printStackTrace();
        }catch (MyException e2){ //FastDFS的java客户端API定义的自定义异常
            //如: tracker服务器连接错误, Storage服务器连接错误
            e2.printStackTrace();
        }
    }

}

image.png

image.png

JAVA 全系列/第十一阶段:分布式RPC调用和分布式文件存储/FastDFS 30432楼
JAVA 全系列/第三阶段:数据库编程/Oracle 数据库的使用 30433楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 30435楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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