当前位置: 首页 > news >正文

Javaweb避坑指北(持续更新)

内容较多可按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中处理

    @AutowiredUDataDao 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)@ResponseBodypublic 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")@ResponseBodypublic 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 修改

http://www.lryc.cn/news/371629.html

相关文章:

  • Web前端知道:深入探索与无尽挑战
  • QT调用vs2019生成的c++动态库
  • C语言TC中有⼏个画线函数?怎么使⽤?
  • 掌握WhoisAPI,提升域名管理的效率
  • Docker与Docker-Compose详解
  • 微服务之熔断器
  • 【高校科研前沿】北京大学赵鹏军教授团队在Nature Communications发文:揭示城市人群移动的空间方向性
  • 徐州存储服务器会应用在哪些场景?
  • 个人博客搭建
  • 服务器数据库三级等保的一些修改步骤
  • Python私教张大鹏 Vue3整合AntDesignVue之DatePicker 日期选择框
  • springboot+vue前后端分离项目中使用jwt实现登录认证
  • leetcode hot100 之 编辑距离
  • 杨校老师项目之基于SpringBoot的理发店的预约管理系统
  • SpringAI学习及搭建AI原生应用
  • CobaltStrike权限传递MSF
  • 白嫖 kimi 接口 api
  • 借助ChatGPT完成课题申报书中框架思路写作指南
  • SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)
  • 重温共射放大电路
  • [DDR5 Jedec] 读操作 Read Command 精讲
  • opencv 通过滑动条调整阈值处理、边缘检测、轮廓检测、模糊、色调调整和对比度增强参数 并实时预览效果
  • 防火墙安全管理
  • MyQueue(队列)
  • 【Pytorch】一文向您详细介绍 torch.nn.DataParallel() 的作用和用法
  • Windows本地使用SSH连接VM虚拟机
  • RPC(远程过程调用):技术原理、应用场景与发展趋势
  • iSCSI和FC存储
  • MPT(merkle Patricia trie )及理解solidity里的storage
  • 【代码随想录算法训练营第三十五天】 | 1005.K次取反后最大化的数组和 134.加油站 135.分发糖果