栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

尚筹网项目(IDEA)中遇到的问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

尚筹网项目(IDEA)中遇到的问题

一、环境搭建过程

对于不知道详细信息的依赖可以到https://mvnrepository.com/网站查询。使用关键词搜索,然后在搜索结果列表中选择适合的使用。

1.关于多个模块之间依赖的问题

各个模块建立好之后,需要引入模块之间的依赖,难免会出现先报错:某某某jar包缺失,依赖信息不可用
比如:先对component模块进行打包,出现如下的报错:

The POM for common-util:jar:1.0-SNAPSHOT is missing, no dependency information available
The POM for admin-entity:jar:1.0-SNAPSHOT is missing, no dependency information available

明显是引入依赖时,本地仓库中找不到对应的jar包,所以要先将依赖的jar包install,安装到本地仓库;每次这些模块中的内容发生修改时,要重新进行install;建议打包jar包时从最底层的依赖开始install,依次向上,这样确保需要的jar包都会存在于maven仓库中,不会出现某某某jar包丢失的情况。

2.关于MyBatis逆向工程的问题

最开始逆向工程生成Mapper接口中的方法较少,没有根据主键查询的一些方法,但数据库中制表时已经设置好了相关的主键。
问题出在了Mysql驱动的版本上了,貌似超过6.0的版本(我开始用的8.x.x版本的)就不会生成根据主键查询方法,将驱动修改为6.0以下的版本即可:



     mysql
     mysql-connector-java
     5.1.38

还需要注意的一个问题,不同数据库连接中的driverClass:

driverClass="com.mysql.jdbc.Driver"    			//  mysql-connector-java的version < 6 
driverClass="com.mysql.cj.jdbc.Driver"    	    //  mysql-connector-java的version > 6
3.关于SpringMVC环境下的Ajax请求的问题

解决方法见3.2和3.3
SpringMVC主要利用类型转换器(MessageConverter)将前台信息转换成开发者需要的格式。然后在相应的Controller方法接收参数前添加@RequestBody注解,进行数据转换,或在方法的返回值类型处添加@ResponseBody注解,将返回信息转换成相关格式的数据
首先前端ajax中:
①如果传入的是json字符串,要设置content-type为application/json; charset=utf-8,后端用@RequestBody注解解析后进行接收
②如果直接传入json对象,content-type不用设置,默认为application/x-www-form-urlencoded,后端也不需要用注解进行解析接收

3.1 刚开始就是 JSON.stringify() 的用法不熟,然后一直死磕contentType ,百度了好久巨坑
开始时,为了测试后端能否接受到json数据,前端输入了一个数组,用了个JSON的一个转字符串的函数,后端一直接收不到报415错误(请求的配置都正确),最后只能用String来接收(后面证实这一想法是错误的,虽然他的确是个字符串)
测试代码如下:
前端:

$("#btn2").click(function () {
                // 准备要发送的数据
                var arrary = [5, 8, 12];
                // 必须将目标先转换成JSON字符串
                var arrayStr = JSON.stringify(arrary);
                $.ajax({
                    url: "${pageContext.request.contextPath}/test/two.html",
                    data: arrayStr,
                    type: "post",
                    dataType: "json",
                    contentType:"application/json; charset=utf-8",
                    // 告诉服务器当前请求的请求体是JSON格式
                    success: function (response) {
                        alert(response);
                    },
                    error: function (response) {
                        alert(response);
                    }
                });
            });

后端:

    @ResponseBody
    @RequestMapping(value = "/test/two.html", method = RequestMethod.POST)
    public String testAjax02(@RequestBody String integers){
    	// 之前一直用Integer[] 来接收,一直报415
    	// 前端JSON.stringify(arrary) -->  要用String来接收
        System.out.println(integers);
        return integers;
    }

3.2 紧接着当前端发送一些复杂对象时,后端的@RequestBody注解仍然无法用对应的自定义类接收参数,找了好久都发现不到那里错了,最后问题锁定在@RequestBody注解上(此时并未配置mvc:annotation-driven/自动注解标签,其实配了,但命名空间写错了,结果等于没开!)
这里参考了博客
用的是jackson在SpringMVC框架下进行JSON字符串的传输,给pom中配了fastjson依赖显然没用(注:fastjson也是一种配置方式,与jackson类似 )
通过jackson包中的一些注解可以在请求、响应过程中把java对象和json对象(可能叫JSON字符串更准确一些)进行互转,要使用此种方式需要引入以下三个jar包配置在pom中:

jackson-annotations
jackson-core
jackson-databind

最重要的还是要在mvc配置文件中对相应的注解进行配置,为处理器适配器(HandlerAdapter)配置类型转换器列表MessageConverter,并在其中添加需要的类型转换器。这样当请求到达处理器适配器层时,配置的@RequestBody注解与@ResponseBody注解就会利用具体的类型转换器MessageConverter将请求信息转换为指定的格式。

   

        
            
                application/json;charset=UTF-8
            
        
    



        
            
                
                
            
        

配置好之后,这样@RequestBody注解就可以解析请求中发来的JSON字符串,并用对应的类来接收;而@ResponseBody注解也能够把java类转换成JSON字符串,发给客户端进行后续操作。
3.3 后面再仔细查找了博客,发现通过配置mvc:annotation-driven/自动注解标签可以进行多种类型数据格式转换,因为自动注解配置默认加载了7种类型转换器
而如果不使用自动注解配置,只是单独配置了JSON转换器,配置@RequestBody的参数只能接收并解析JSON格式的数据,如3.2所述,如果想解析或组装其他类型的数据,则需要添加新的类型转换器
要注意的是:如果配置了mvc:annotation-driven/自动注解标签(命名空间http一定要写对,IDEA自动补全时有多个,一定要写对,不然配置无效,当时就是没写对,才有了3.1和3.2的乌龙!),则表明使用SpringMVC提供的注解型配置,那么这种情况就不需要配置类型转换器了,因为SpringMVC已经默认初始化了7种转换器

未完待续…
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785338.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号