Javaweb避坑指北(持续更新)

news2024/11/30 8:51:43

内容较多可按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 修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1815321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

期权费的核心是什么

期权费的核心 在涉足股票期权投资的领域时&#xff0c;投资者们往往会将焦点首先锁定在期权费这一显性成本上。然而&#xff0c;实际操作中&#xff0c;一个更为核心且决定性的考量因素是&#xff0c;目标股票是否具备通过个股期权策略进行买入的潜在价值。特别是&#xff0c;…

NFTScan 正式上线 Sei NFTScan 浏览器和 NFT API 数据服务

2024 年 6 月 12 号&#xff0c;NFTScan 团队正式对外发布了 Sei NFTScan 浏览器&#xff0c;将为 Sei 生态的 NFT 开发者和用户提供简洁高效的 NFT 数据搜索查询服务。NFTScan 作为全球领先的 NFT 数据基础设施服务商&#xff0c;Sei 是继 Bitcoin、Ethereum、BNBChain、Polyg…

数据安全“大考”,双一流高校们来交卷!

又是一年高考落幕 埋头题山卷海的考生们 终于迎来“大解放”&#xff01; 在数字化浪潮中 众高校面临的重要考试 ——“数据安全大考”还在继续 如何作答&#xff1f; 这些双一流高校交出高分答卷&#xff01; 数据分类分级如何开展落地&#xff1f; 难点分析&#xff1…

python游标卡尺什么梗

python游标卡尺什么梗&#xff1f;下面给大家介绍一下这个梗&#xff1a; 因为 python 是通过缩进来区分代码块的&#xff08;而不是{}或者是其他符号&#xff09;&#xff0c;而不是像其他程序语言&#xff0c;缩进仅仅为了可读性。导致打印出来的 python 代码&#xff08;比…

神经气体生长算法【GNG】

当德国计算神经学家 Bernd Fritzke 在其 1995 年的开创性论文中提出后来被称为神经气体生长&#xff08;GNG&#xff09;的算法时&#xff0c;机器学习还是一个相对较新的领域&#xff0c;并且受到实际神经科学的极大启发。 当时&#xff0c;神经科学正处于一个突破性的时代—…

目标检测:将yolo标注的txt文本转为VOC标注的xml文件

1、准备工作 目标检测数据的标注分为两种格式&#xff1a; xml 解释性标签&#xff0c;左上角右下角的坐标txt 记事本文件&#xff0c;类别x&#xff0c;y中心坐标w&#xff0c;h的相对值 需要准备的数据有&#xff1a; 其中images为图像数据&#xff0c;labels为txt文本信息…

【Python】已解决报错:NameError: name ‘xxx‘ is not defined

【Python】已解决报错&#xff1a;NameError: name ‘xxx‘ is not defined &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大…

C++学习笔记(23)——二叉树进阶

系列文章 http://t.csdnimg.cn/QDR3y 目录 系列文章[TOC](目录) 1. 二叉树的优势2. 二叉搜索树概念3. 二叉搜索树操作1. 二叉搜索树的查找2. 二叉搜索树的插入——地址链接重设3. 二叉搜索树的删除——地址链接重设 4. 二叉搜索树的应用——以key为载体&#xff0c;承载复杂信…

618家用智能投影仪推荐:这个高性价比品牌不容错过

随着科技的不断进步&#xff0c;家庭影院的概念已经从传统的大屏幕电视逐渐转向了更为灵活和便携的家用智能投影仪。随着618电商大促的到来&#xff0c;想要购买投影仪的用户们也开始摩拳擦掌了。本文将从投影仪的基础知识入手&#xff0c;为您推荐几款性价比很高的投影仪&…

QGroupbox,Grid Layout,button 水平延伸 布局

实验 sizePolicy水瓶延伸 拖入一个groupbox控件 在groupbox控件中拖入一个grid layout 控件 然后拖入3个pushButton 使其水平排列&#xff0c; 设置button3的 sizePolicy 水平延展 为1 效果

工程项目管理系统:高效、专业的工程管理软件

在当今快速发展的工程行业&#xff0c;有效的项目管理是确保项目成功的关键。鸿鹄工程项目管理系统&#xff0c;基于Spring Cloud、Spring Boot、Mybatis、Vue和ElementUI技术栈&#xff0c;提供了一个全面、高效的解决方案&#xff0c;以应对复杂的工程项目管理挑战。 项目背景…

精益思维在人工智能中的应用体现

随着AI技术的广泛应用&#xff0c;如何提高其效率、降低成本、优化性能&#xff0c;成为了业界关注的焦点。精益思维作为一种追求卓越、持续改进的管理理念&#xff0c;其在人工智能中的应用正逐渐展现出巨大的潜力。 一、数据精益化管理。数据是AI技术的核心&#xff0c;而数据…

JavaScript知识之函数

javascript函数 在JavaScript基础之上提供了部分函数,同时也可以自定义函数,JavaScript基础详见之前的文章javascript基础知识 自定义函数 //关键字 函数名 参数列表 函数体 function test(a,b,c){alert(a":"b":"c) }function test1(a,b){return a;//不…

一文读懂Samtec分离式线缆组件选型 | 快速攻略

【摘要/前言】 2023年&#xff0c;全球线缆组件市场规模大致在2100多亿美元。汽车和电信行业是线缆组件最大的两个市场&#xff0c;中国和北美是最大的两个制造地区。有趣的是&#xff0c;特定应用&#xff08;即定制&#xff09;和矩形组件是两个最大的产品组。 【Samtec产品…

huggingface_hub LocalEntryNotFoundErroringface

报错详细 LocalEntryNotFoundError: An error happened while trying to locate the file on the Hub and we cannot find the requested files in the local cache. Please check your connection and try again or make sure your Internet connection is on.问题说明 在…

肾合养生秘诀:告别手心热出汗的困扰

如果将我们的身体比作一支精心编排的交响乐团&#xff0c;那么各个器官便是乐团中不可或缺的乐器和乐手&#xff0c;而气血则如同乐团中的乐谱和指挥棒&#xff0c;引领着整个乐团的演奏。当乐谱缺失&#xff0c;指挥棒失灵&#xff0c;或者乐团的协作出现问题&#xff0c;某些…

CAN转PROFINET,轻松实现降本增效!AGV行业必备连接通信方案大揭秘!

随着工厂自动化发展以及柔性制造系统、自动化立体仓库的广泛应用&#xff0c;已作为管理离散型装配、物流、仓储等系统不可或缺的自动化搬运装卸工具&#xff0c;智能化AGV系统可根据ERP订单进行仓库配料、分料、产品装配以及出入库、包装物流等环节。 AGV由导航系统、传感器系…

超声波风速风向传感器

TH-WQX2随着科技的不断发展&#xff0c;气象监测设备也在不断创新和完善。其中&#xff0c;超声波风速风向传感器以其独特的设计优势&#xff0c;在气象监测领域中脱颖而出&#xff0c;成为越来越多用户的首选。本文将详细阐述超声波风速风向传感器的设计优势&#xff0c;以便读…

3d模型交易的哪个网站好?

推荐一个国内的优秀专为3D模型交易服务的网站&#xff1a;老子云模型服务平台。 老子云3D可视化与模型优化服务平台https://www.laozicloud.com/ 老子云是以AMRT核心自主引擎构建的一家3D全栈技术服务平台&#xff0c;集合3D模型云处理、模型交易、模型应用、开发者服务、3D技…

ant-design-vue 的modal.confirm突然无法自动关闭

这个是我当前的版本 &#xff0c;点击不能 关闭&#xff0c; 版本的问题 修改 &#xff1a; "vue": "~3.2.0", 重新下包就ok了 参考 &#xff1a; antdesign的modal.confirm突然无法自动关闭_antdesign confirm点击后不关闭-CSDN博客