发表于: 2020-02-09 23:37:46

1 1243


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下面那个更好

    明日计划:复习




    返回列表 返回列表
    评论

      分享到