从mySSMProject项目中积累的经验

Java-EcommerceProject:使用Spring的Java的TTS电子商务项目 立即下载

从mySSMProject项目中积累的经验

注意项目中静态资源的导出问题

  • 遇到问题:Mybatis报错 Invalid bound statement (not found)

  • 原因:Maven没有将静态资源导出,target目录下不存在mapper.xml映射文件。

  • 处理方法:在pom.xml中配置<resouirces>进行静态资源导出,代码如下。

  • 总结:当存在静态资源却找不到的时候,想想是不是没有在maven中进行配置过滤。

    <resources>
        <resource>
            <directory>src/main/java</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.*</include>
            </includes>
        </resource>
    </resources>
    

注意 mysqljdbc 8.x 版本需要配置时区(serverTimezone)

  • 遇到问题:Cause: java.sql.SQLException: The server time zone value ‘’ is unrecognized or represents more than one time zone.
  • 原因:mysql8.x的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空。
  • 处理方法:在数据库连接<datasource>的url参数后加上?characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai
  • 总结:时区参数可以设置为UTC,但是可能会发生数据库时间不同步的问题,将时区设定为本地时区即可

注意 事务处理

  • 遇到问题:查询有结果,插入返回1,但是数据库查不到值,使用另一个表就可以。
  • 原因:没有正确处理事务,另一个表使用的表类型是MyISAM,这种类型不支持事务。而我的表使用InnoDB类型,这种类型支持事务。在支持事务的情况下,mybatis的配置中,<transactionManager type="managed"/>表示将事务交由外部容器处理。<transactionManager type="JDBC"/>表示使用JdbcTransaction管理事务。
  • 处理方法:将<transactionManager type="JDBC"/>中的JDBC更改为managed,将事务交由外部处理。
  • 总结:当插入遇到问题的时候,考虑测试删除和修改,都不行的话,考虑是事务出问题了。不要想当然,有不懂得就要去查。
<environments default="development">
      <environment id="development">
          <transactionManager type="managed"/>
          <dataSource type="POOLED">
              <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
              <property name="url" value="jdbc:mysql://localhost:3306/mytest?characterEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=UTC"/>
              <property name="username" value="root"/>
              <property name="password" value="123456"/>
          </dataSource>
      </environment>
  </environments>

注意 Spring中的properties问题

  • 遇到问题:使用Spring+mybatis获取数据库的值时,通过properties方式无法连接数据库,报错Access denied for user ‘Administrator’@‘localhost’ (using password: YES),单独使用mybatis即可使用。验证properties内容无误,更换多个数据源均无效。
  • 原因:properties 中不能用 username 作为变量,这种方式会注入自己的系统环境变量的 用户名,本来是 root ,不应是那个 windows 用户名
  • 处理方法:
  • 总结

注意 Tomcat发布时包的导入问题

  • 遇到问题:部署到Tomcat后进不去Controller,使用JUnit通过Spring方式可以获取到Controller,能够正常使用。各方面代码配置都检查了没有错,更改Springmvc版本也没有用。也配置了导出lib。
  • 原因:导出lib配置错了目录lib应该放在WEB-INF下,之前放在同级了。是通过Tomcat的Log发现ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet,由此注意到应该是导包失败。
  • 处理方法:将lib目录添加到:Project Structure->Artifactes->WEB-INF 中,并导入所有外部包。
  • 总结:多找错误,有问题就会有报错,有报错就能找到方向。

注意 前端传参用的是name属性不是id

  • 遇到问题:前端网页参数传不进去,使用@RequestParam注解后报500错误,找不到参数。
  • 原因:没有给前端元素指定name属性,只使用了id属性。
  • 处理方法:添加name属性。
  • 总结:Java后端与JS要分清楚,到底是使用name还是id。

注意 Maven静态资源过滤

  • 遇到问题:学习Shiro的时候,创建shiro.ini,在JUnit测试中报错:java.io.IOException: Resource [classpath:shiro.ini] could not be found.。
  • 原因:Maven静态资源过滤只过滤了.xml和.properties。
  • 处理方法:在过滤中添加.ini过滤,或改成对resources目录全部过滤
  • 总结:当静态资源存在却找不到时,想到Maven的静态资源过滤。

配置Swagger失败

  • 遇到问题:

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'objectMapperConfigurer' defined in class path resource [springfox/documentation/spring/web/SpringfoxWebMvcConfiguration.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [springfox.documentation.spring.web.ObjectMapperConfigurer] from ClassLoader [WebappClassLoader
      context: 
      delegate: false
      repositories:
        /WEB-INF/classes/
    ----------> Parent Classloader:
    java.net.URLClassLoader@6e5e91e4
    ]
    

    在配置过程中总是找不到某些资源,或者无法创建Bean,怀疑是版本不兼容,但是降版本也没有用,找了很久找不出来。将Swagger配置类扫描进Spring就出问题,不注入容器就打不开Swagger-ui页面。

  • 原因:在配置中没有导入spring-tx,导致缺少资源。

  • 处理方法:添加依赖 spring-tx

  • 总结:只配置spring-mvc是不够的,还有tx包和aspectjweaver织入包。

实体类问题

  • 遇到问题:有些数据是多表查询出来的,但是没有承载它们的实体,不知道如何使用。
  • 原因:未建立对应VO实体类。
  • 处理方法:对于多表查询的返回结果,新建VO实体来承接。对于从网页传来的数据使用DTO来承接。
  • 总结:对于多表查询,建立实体类来承载查询结果,并添加相应的<ResultMap>来进行映射,保证字段安全对应。

注意:VO类需要添加新的ResultMap【2021年3月15日】

  • 遇到问题:在查询过程中报Comment类没有username字段,但是使用的是UserComment类,并且从页面到mapper的全过程Idea是可以跳转的。
  • 原因:mapper.xml中配置出错,使用了Comment原来的字段,并且只对Comment进行了查询,所以没有username字段。
  • 处理方法:创建UserCommentMap新的结果映射,连接VO实体与查询结果,并且使用多表查询语句对内容进行查询。
  • 总结:对自己创建的VO类要添加ResultMap进行字段映射,并编写自己的多表查询sql语句来填充VO实体。

注意:Lombok中@Data对equals()和hashCode()方法的重写实现问题

  • 遇到问题:在使用Set集合想要对两个List进行去重的时候,无法实现。
  • 原因:由 Lombok 生成的equals()方法只有在两个对象是同一个对象时,才会返回 true ,否则总为 false ,无论它们的属性是否相同。
  • 处理方法:自己重写equals()和hashCode()方法。
  • 总结:使用lombok的时候,不要继承,当需要判断的时候,要自己重写equals()和hashCode()方法。

注意:fastjson中toJSONString()方法输出空值的问题

  • 遇到问题:在向前端传递json值的时候,会缺少属性,导致前端框架报错。
  • 原因:toJSONString()方法默认序列化方式是不输出数据库中的空值的,需要第二个参数SerializerFeature.WriteMapNullValue来开启空值输出的序列化模式。
  • 处理方法:添加序列化模式,以输出值为null的字段。JSON.toJSONString(users, SerializerFeature.WriteMapNullValue);
  • 总结:在使用JSON的过程中要注意到序列化的问题。

注意:Java转JSON的过程中日期的处理

  • 遇到问题:Java对象转JSON,toJSONString()过来后Date类型值为时间戳,在页面中不能使用。
  • 原因:
  • 处理方法:
  • 总结:

注意:mapper使用注解,取不到DateTime类型值

  • 遇到问题:在 mapper 中使用注解的方式写简单sql语句,取不到 DateTime 的值
  • 原因:是在Mapper中使用注解映射sql语句时没有指定类型,导致类型不一致(可能),在获取数据库中DataTime字段时获取不到。
  • 处理方法:在Mapper中用xml进行映射,使用ResultMap进行字段映射并添加jdbcType属性指定数据库中列的类型。
  • 总结:在需要映射时间等复杂类型的场合下使用xml并定义ResultMap进行映射比较稳妥。

注意:Maven中依赖的作用域问题

  • 遇到问题:
  • 原因:
  • 处理方法:
  • 总结:在项目打成war包时,scope=provided的jar包,不会出现在WEB-INFO/lib目录下,而scope=compile的jar包,会放到WEB-INFO/lib目录。provided表示外部容器提供了这个包,所以打包时不需要这个包。还有runtime、test和system三种作用域。

注意:前端${}取值时,值中存在’:'的问题

  • 遇到问题:Jquery代码失效,任何方法都不起作用,console.log()也不能输出。
  • 原因:在获取路径var path = ${user.icon}时,由于icon的路径中是E:Cxxxx存在盘符加冒号的形式,导致JS出现错误。
  • 处理方法:将${user.icon}使用引号括起来,变成字符串。但是这样又导致了下面的问题,win中是以反斜杠作为路径分隔符的,在字符串中会被转义。
  • 总结:在后端渲染前端的值的时候,要注意后端的值是否会对JS语法造成影响。

注意:windows中分隔符为’\’,直接将路径存入数据库的话再取出来到前端会出现反斜杠转义的问题。

  • 遇到问题:在显示图片的过程中,在前端通过substring函数截取字符串,但是找不到对应的位置。
  • 原因:路径的字符串中存在反斜杠导致字符被转义,找不到需要的files路径名。
  • 处理方法:在后端存入数据库时,将反斜杠全部替换为斜杠。
  • 总结:在win中处理路径时,要注意路径分隔符的处理。
面试之项目经验 面试之项目经验 给准备面试的朋友 有机会一下会有帮助 立即下载

相关推荐

Java开发个人简历和项目经验.pdf

这是我面试公司的用过的版本,写的不好,但是项目经验不少,你们可以改改,模板挺好,就是有些字面没大写,技术上面写的有一点问题,但可以用。

tomcat类加载器测试

tomcat的类加载器 WebappClassLoader context: /oalocal delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: org.apache.catalina.loader.StandardClassLoader@c44b88 Thread.cur

xwm1000的专栏 1061

博途V17 & PLCSIM & FactoryIO 连接教程

PLCSIM V17 和 FactoryIO 连接教程前言一、软件版本二、连接步骤1. 连接PLCSIM2. 博途编程3.连接FactoryIO总结 前言 该文详细讲解了新手入门博途,并通过使用自带PLCSIM和FactoryIO实现连接。 一、软件版本 TIA Portal V17 S7-PLCSIM V17 Factory IO V2.5.1 二、连接步骤 1. 连接PLCSIM 打开PLCSIM 进入项目模式 新建仿真项目 2. 博途编程 将F

soledad_chao的博客 2万+

谈谈Java开发中遇到的资源文件路径问题(二)

在 谈谈Java开发中遇到的资源文件路径问题(一) 中,我们已经聊了开发JavaSe应用程序的相对路径问题。 现在就聊聊开发web应用时,相对路径的问题吧。 这是我在myeclipse中新建的web工程的路径:D:\JAVA\MyEclipse10\ThreeDaysWeb 这是我tomcat服务器的路径(我的tomcat服务器是myeclipse集成进来的): D:\JAVA\M

QQ1130141391的专栏 3116

代付系统/代付系统源码/支付宝代付系统/API代付系统

简介: 其他站买的,没有做测试,源码是JAVA的,附带了安装文档,需要的拿无售后 源码下载地址https://www.skpan.cn/2QnIARSZDxG 代付系统/代付系统源码/支付宝代付系统/API代付系统 系统流程: 后台开通代理——开通商户——商户做代付(后台手工提交和 api 提交两种方式) 1、纯代付系统 2、支持个人支付宝全自动 3、支持单笔/批量/API接口方式代付 4、支持白名单、谷歌验证 5、收付款模式采用自动回调/自动转账 一、运营平台 商户管.

刀客源码网 5573

SAP COPA实战:手把手教你用CMOD增强搞定自定义特性派生(以客户字段为例)

本文详细介绍了在SAP COPA模块中通过CMOD增强实现自定义特性派生的全流程,以客户字段为例,展示了从特性设计、SPRO配置到特性派生逻辑实现的完整步骤。重点讲解了如何利用CMOD增强技术解决业务需求,提升获利能力段分析的灵活性和准确性。

weixin_30275415的博客 428

Mybatis 读取数据库时返回为空/date类型报错

最近开始从零搭建springboot 服务器并定义好数据库数据相应读取的接口 记录自己遇到的问题,避免以后踩坑* 使用mybatis 的过程中,遇到了一些问题,相关的配置不再多赘述 我的代码是根据mybatis generator 生成的文件再做修改处理的 读取为空问题: 我出错的问题是因为mapper文件中的字段和实体类属性没有很好的照应 在mapper.xml 文件中 <resultMap id="BaseResultMap" type="com.xxx.entity.Warehouse"...

zzzznone的博客 3722

别再被骚扰了!手把手教你彻底卸载阿里云盾(安骑士)并封禁其IP段

本文详细指导如何彻底卸载阿里云盾(安骑士)并封禁其IP段,帮助用户夺回服务器控制权。从识别监控组件到执行官方卸载脚本,再到手动清理残留文件和配置iptables规则,确保完全阻断云盾通信。适用于追求极致性能或需要完全自主控制的环境。

weixin_42525551的博客 450

tomcat容器中类的加载器

打印某个类的加载器树型结构如下: WebappClassLoader   context: /xxx   delegate: false   repositories:     /WEB-INF/classes/ ----------&gt; Parent Classloader: org.apache.catalina.loader.StandardClassLoader@5dce...

hello world 210

AUTOSAR进阶图解==>AUTOSAR_SWS_ECUStateManager

AUTOSAR ECU State Manager 摘要 AUTOSAR ECU状态管理器(EcuM)是Classic Platform 4.4.0规范中的核心模块,负责管理ECU的整个生命周期,包括启动、运行、关机和睡眠等状态转换。EcuM通过协调各基础软件模块的初始化过程,确保系统可靠运行。 主要功能包括: 启动管理 - 控制从硬件初始化到应用运行的完整启动序列 状态转换 - 管理RUN/POST_RUN/SHUTDOWN等状态切换 唤醒验证 - 区分真实与虚假唤醒事件 关机序列 - 确保安全关机保存关

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 2468

Python爬虫应对Cloudflare防护:5秒盾+Turnstile验证码实战(AST反混淆+指纹模拟,成功率95%)

Cloudflare 5秒盾+Turnstile验证码的防护核心,是通过“前端JS挑战+多维度指纹校验”确认请求来源的真实性。用AST反混淆还原CF的验证逻辑,避免执行无用代码导致的验证失败;基于真实浏览器采集指纹,确保指纹维度100%匹配真人环境;结合轻量级JS引擎和自动化工具,模拟完整的浏览器执行环境。该方案的绕过成功率可达95%(剩余5%主要是IP或请求频率导致的风控),适用于绝大多数部署CF防护的网站。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1715

严重: Error loading WebappClassLoader context:异常的解决方法

使用Eclipse+tomcat6.0,部署项目后,启动报错: 严重: Error loading WebappClassLoader context: /springmvc delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: org.apache.catalina.l

zmm0420的专栏 1万+

Claude Desktop新功能:让非技术人士也能自主编程

摘要: Anthropic近日在Claude桌面应用中集成了Claude Code功能,显著降低了非技术用户的使用门槛。Claude Code作为代理式编程工具,支持多任务并行处理、Git隔离和可视化会话管理,无需命令行操作即可实现代码调试、重构等复杂任务。新增的“计划模式”通过先分析后执行的流程,确保安全性,使产品经理、数据分析师等非开发者也能参与技术工作。这一更新标志着AI技术正打破专业壁垒,让领域专家无需编码背景即可利用高级工具,推动技术民主化。

独立开发,substack顶级编辑 1538

Hessian/Burlap: is an unknown class in WebappClassLoader

警告(并不是错误):警告: Hessian/Burlap:'com.shine.exp.dto.ExpIdCardDTO' is an unknown class in WebappClassLoader   delegate: false   repositories:     /WEB-INF/classes/ ----------> ParentClassloader: java.

zgyzgyzgy3338759的专栏 2万+

使用 Simulink 进行电力电子系统的大信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。大信号模型仿真的目的是通过模拟系统在非线性条件下的真实行为,评估其瞬态响应、稳态性能以及对不同负载和输入电压变化的响应。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的大信号模型仿真。背景介绍。

xiaoheshang_123的博客 303

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

struts开发时遇到的问题

[size=large]今天做了一个struts的例子,在运行tomcat时控制台中打印出了以下信息:[/size] [b][color=red]严重: Error loading WebappClassLoader[/color] context: /StrutsTest delegate: false repositories: /WEB-INF/classe...

iteye_8188的博客 227

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

springboot,spring反射加载类踩坑

文章目录报错的地方编写个测试项目,idea执行测试项目,jar执行结论: 报错的地方 在使用springboot启动项目的时候,有通过反射加载类,当时大概使用的这个方法: o = Class.forName("com.example.demo.User",true,ClassLoader.getSystemClassLoader()).newInstance(); 但是本地idea测试的时候是...

你就像甜甜的益达 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

网站开发流程

网站开发流程 技术准备 为了完成这个j2ee项目,需要掌握如下技术,当然也可以以本项目为驱动,哪里不懂,学哪里,其实这也是最好的学习方式(带着目标去学习) Java:Java基础和Java中级的大部分内容 前端:HTML,CSS,JAVASCRIPT,JQUERY J2EE:TOMCAT,SERVLET,JSP,Filter 数据库:MySQL 步骤2: 开...

zhangbijun1230的专栏 1427

聚合果项目ssm经验总结

1、Spring中@Cacheable的用法@Cacheable注解有三个参数,value是必须的,还有key和condition。第一个参数,也就是value指明了缓存将被存到什么地方。 任何存储在缓存中的数据为了高速访问都需要一个key。spring默认使用被@Cacheable注解的方法的签名来作为key,当然你可以重写key,自定义key可以使用SpEL表达式。 @Cacheable的最后

夏季版 3798

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 223

【JVM】对象内存布局

HotSpot JVM 中,Java 对象内存布局由对象头(12字节,含Mark Word与压缩Klass Pointer)、实例数据及对齐填充构成,总大小为8字节倍数。对象头支持锁状态动态复用,指针压缩使引用仅4字节,但堆超32GB时失效。实例字段按类型优先级重排序以减少间隙,最小对象大小为16字节。通过JOL工具可精准验证布局,理解锁机制、GC、伪共享等底层行为。

2301_79732484的博客 149

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 328

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 115
上一篇: 学习Shiro
下一篇: layer 弹窗
一只小小翠
博客等级 码龄9年 154粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值