内容较多可按Ctrl+F搜索
0.目录
1.获取插入数据后自增长主键的值
2.Controller中返回给ajax请求字符串/json会跳转到xxx.jsp
3.ajax请求获得的json无法解析
4.在Controller中使用ServletFileUpload获取的上传文件为null
5.莫名其妙报service和dao里方法的错误
6.ajax请求拿到的数据中文乱码
7.修改嵌套标签里的某一项文本
8.layui其他样式正常,但部分组件无法显示(如开关/单选框)
9.layui弹出框请求别的页面,关闭后按钮无法点击也不报错
10.在服务器运行SQL语句时Unknown collation:’utf8mb4_0900_ai_ci ‘
11.本地正常运行,部署到服务器找不到表
1.获取插入数据后自增长主键的值
原生web写法
public int saveUData(String sql,Object[] objs){
        int rs=0,unum=-1;
        if (conn!=null){
            try{
                ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
                if (objs!=null){
                    for (int i=0;i<objs.length;i++){
                        ps.setObject(i+1,objs[i]);
                    }
                }
                rs=ps.executeUpdate();
                ResultSet generatedKeys = ps.getGeneratedKeys();
                if (generatedKeys.next()) {
                    unum=generatedKeys.getInt(1);
                }
            }catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        return unum;
    }spring-mybatis写法
    <insert id="saveUData" parameterType="cc.lslink.pojo.UData" useGeneratedKeys="true" keyProperty="unum" keyColumn="unum">
        insert into udata(upwd, utime, upath, utype, uid)
        values (#{upwd}, #{utime}, #{upath}, #{utype}, #{uid})
    </insert>注意会将自增长之后的值赋给传入对象对应的属性,可在service中处理
    @Autowired
    UDataDao udd;
    public int saveUData(UData uData) {
        udd.saveUData(uData);
        return uData.getUnum();
    }2.Controller中返回给ajax请求字符串/json会跳转到xxx.jsp
与 Spring MVC 中的视图解析器配置有关,如下面代码前缀设置为 /,表示视图的路径会从项目的根目录开始,后缀设置为 .jsp,表示视图解析时会自动添加 .jsp 后缀
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/"></property>
       <property name="suffix" value=".jsp"></property>
    </bean>可以使用@ResponseBody注解来告诉 Spring MVC 不要解析视图
或者返回ResponseEntity<String>对象来明确告诉 Spring MVC 返回的是数据而不是视图。
    @RequestMapping(value = "/login",method = RequestMethod.POST)
    @ResponseBody
    public String login(@RequestParam("uname") String uname, @RequestParam("upwd") String upwd, HttpSession session) {
        ...
        JsonMessage<User> JSM = new JsonMessage<>("300", "登录成功", user);
        return JSM.toJSONString();;
    }3.ajax请求获得的json无法解析
如在回调函数里打印data可以得到json,但打印data.code会输出undefined
八成是你没指定接收的返回值类型dataType
        $.ajax({
          url:"/getUname",
          type:"post",
          dataType: "json", //这里需要指定json,否则默认字符串
          data:{uname:uname},
          success:function(data){
            if(data.code=="201"){
              xxx
            }else if(data.code=="200"){
              xxx
            }
          },error:function(){
            console.log("ajax请求失败!!!")
          }
        });4.在Controller中使用ServletFileUpload获取的上传文件为null
如下面所示
    @RequestMapping(value = "/uploadFile",method = RequestMethod.POST)
    public void uploadFile(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
        ServletFileUpload upload = new ServletFileUpload (new DiskFileItemFactory());
        upload.setHeaderEncoding("UTF-8");
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        List<FileItem> items = upload.parseRequest(request);
        ...
    }可以改成Spring MVC 提供的MultipartResolver来处理文件上传
    <!-- 文件上传解析器 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置默认的编码格式: -->
        <property name="defaultEncoding" value="UTF-8"></property>
        <!-- 设置最大上传文件的总大小(字节) -->
        <property name="maxUploadSize" value="52428800"></property>
        <!-- 设置单个文件上传的大小: -->
        <property name="maxInMemorySize" value="52428800"></property>
    </bean>    @RequestMapping(value = "/uploadFile",method = RequestMethod.POST)
    public void uploadFile(@RequestParam("file") MultipartFile file) throws IOException, ClientException {
        String fileName = file.getOriginalFilename();
        
        ...
    }5.莫名其妙报service和dao里方法的错误
从头到尾检查dao对应的mapper文件!
即使是其他没用到的方法有错误也会报错!
6.ajax请求拿到的数据中文乱码
Controller注解里加上produces="text/html;charset=UTF-8"
    @RequestMapping(value = "/login",method = RequestMethod.POST,produces="text/html;charset=UTF-8")
    @ResponseBody
    public String login(@RequestParam("uname") String uname, @RequestParam("upwd") String upwd, HttpSession session) {
            xxx
    }7.修改嵌套标签里的某一项文本
如要在js里修改tester
<a href="javascript:;" id="userInfo">
  <img src="../uicons/default.png" id="uicon" class="layui-nav-img">
      tester
</a>使用下列方法均会出现各种问题
$("#userInfo").contents().last().replaceWith("New Text Here");
$("#userInfo").contents().last()[0].nodeValue = 'New Text Here';建议直接给tester套一层标签,然后用jquery选择器
<a href="javascript:;" id="userInfo">
  <img src="../uicons/default.png" id="uicon" class="layui-nav-img">
  <span id="userName">tester</span>
</a>
//js
$("#userName").text(user.uname);8.layui其他样式正常,但部分组件无法显示(如开关/单选框)

缺少layui.js
9.layui弹出框请求别的页面,关闭后按钮无法点击也不报错
可以参考我的另一个帖子
10.在服务器运行SQL语句时Unknown collation:’utf8mb4_0900_ai_ci ‘
版本不一致导致的
打开sql文件,将文件中的所有 utf8mb4_0900_ai_ci替换为utf8_general_ci ,utf8mb4替换为utf8
11.本地正常运行,部署到服务器找不到表
windows系统上表名、列名还是数据库名默认不区分大小写
在类Unix系统(如 Linux、Mac OS X 等)上,MySQL 默认区分大小写
可通过配置项 lower_case_table_names 修改


















