发表于: 2020-02-09 23:37:46
1 1244
springmvc整合mybatis遇到的问题及解决小结
Contents
遇到的问题
在web.xml中<listener-class>标签报红
BeanCreationException
mybatis绑定错误
请求参数乱码问题
请求参数类型转换问题
maven平台编码问题
json格式数据问题
还没弄懂但不影响运行的问题
加载spring容器报红
参数绑定配置问题
maven依赖分析问题
遇到的问题
在web.xml中<listener-class>标签报红
解决:改用2.5的版本
Servlet3.0是J2EE6.0规范的一部分,跟随J2EE6.0一起发布,并且Tomcat7.0已经完全支持Servlet3.0 ; 平时,我们一般使用tomcat6.0,是不能够使用servelt3.0的,tomcat6.0还不能支持那些规范; 至于说,为毛线不能使用lintener-class,是因为在web-app_3_0.xsd结构定义文件中,根本就不提倡这些配置,因为Servlet3.0已经支持注解形式;
解决了报红的问题。但后来我其他部分调试好了后,改回3.0也没报错。
是少依赖的问题,输入mvn dependency:tree打依赖树:
少了spring-aspects,spring-core等依赖,加上
spring版本统一设置
mybatis绑定错误
错误:org.apache.ibatis.binding.BindingException: Invalid bound statement
找了一轮
是没有在pom.xml配置build包含 xml,导致target目录下没有userMapper.xml -by 唐小明生
我一看自己的target目录,发现还真是少mapper.xml文件
我想到了两种解决方案:
方案一:自定义一个插件,绑定某个生命周期,比如compile,然后插件目标的功能是将源码包下的xml文件copy到相应的输出目录。(现有插件是否有已有这个功能,通过简单的配置就能完成?我还不清楚)
方案二:在maven工程的src/main/resource目录下建和mapper接口类相应的包,将每个mapper.xml存在这里
这里我插件玩的不熟,所以没办法,只能手动在resources目录下建包,把每个mapper.xml手动粘贴进去
请求参数乱码问题 在web.xml添加post乱码filter
对于get请求中文参数出现乱码解决方法有两个:
修改tomcat配置文件添加编码与工程编码一致,如下:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
另外一种方法对参数进行重新编码:
String userName = new
String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码
maven平台编码问题
解决:
在pom.xml文件的设置编码即可
json格式数据问题
1.请求是json格式
debug窗里报下面的错误:
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported
浏览器报下面的错误:
HTTP Status 415 -anddescription The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.
2.请求是key/value格式
debug窗里报下面的错误:
java.lang.IllegalArgumentException: No converter found for return value of type: class com.iot.learnssm.firstssm.po.ItemsCustom
多加一个依赖jackson-databind
(之前只加了jackson-mapper-asl
的依赖, 间接依赖jackson-core-asl
,但还不够。
还没弄懂但不影响运行的问题
加载spring容器报红
web.xml节选
/classes/spring/applicationContext-*.xml
这部分字会报红,但运行起来没问题。我使用下面的那句 <param-value>classpath:spring/applicationContext-*.xml</param-value>
不报红.原因不清楚。
这里两种方式都能跑通,但是引用的路径不同:一个是引用的的输出的target目录的classes下的,一个是引用输出的target/learnssm-firstssm-1.0-SNAPSHOT
目录(相当于部署的WEBROOT或者叫做webapp),所以我觉得还是用WEB-INF下面那个更好
明日计划:复习
评论