项目基于Maven+SpringMVC+Springboot+MyBatis+Bootstrap的组合,快速开发一个完整的CRUD功能,除过对框架组合的基本使用外,还涉及到Bootstrap搭建页面,pageHelper分页插件,MyBatis逆向工程使用,Rest风格的URI,@ResponseBody注解完成AJAX等。
遇到的问题:
1.在html页面的js代码中使用equals方法比较字符串是否相等,但是js没有equals方法,改为使用==
2.表单输入框的name写错,导致controller无法读取表单提交的数据
3.设置代理拦截器没有规定不拦截哪些静态资源以及不拦截登录页面,导致静态资源和登录页面被拦截
4.在controller层跳转到首页使用注解@ResponseBody,这个注解导致return直接返回字符串,无法跳转到html页面(该注解用于将Controller的方法返回的对象,通过适当HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;如果返回到页面是map或者json或者list等,加上@ResponseBody准没错,如果你想跳转到一个页面,那么千万别@ResponseBody, 因为这个注解会将你返回的东西放到response的body数据中去,换句话说,你返回的页面将以字符串的形式写到页面上,而不是跳转到这个页面!)
4.在前端页面中把静态资源的路径写错,导致无法加载样式
5.SpringBoot集成Pagehelper分页插件无法分页,无论pageSize传什么,后台查询数据都是全量查询返回,没有做到分页的效果
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.4</version>
</dependency>
改成
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
或者添加配置文件使分页合理化
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--指明数据库 4.0.0以后不需要设置此属性-->
<!--<property name="dialect" value="oracle"/>-->
<!-- 该参数默认为false -->
<!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
<!-- 和startPage中的pageNum效果一样-->
<property name="offsetAsPageNum" value="true"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
<property name="rowBoundsWithCount" value="true"/>
<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
<!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
<property name="pageSizeZero" value="true"/>
<!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
<!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
<!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
<property name="reasonable" value="true"/>
<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
<!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
<!-- 不理解该含义的前提下,不要随便复制该配置 -->
<property name="params" value="pageNum=start;pageSize=limit;"/>
<!-- 支持通过Mapper接口参数来传递分页参数 -->
<property name="supportMethodsArguments" value="true"/>
<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
<property name="returnPageInfo" value="check"/>
</plugin>
</plugins>
</configuration>
6.引入 <artifactId>pagehelper-spring-boot-starter</artifactId>报错
原因:本地仓库为阿里云时无法下载改jar包,建议改成国外的源地址
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
7.SpringBoot已经默认引入了HiddenHttpMethodFilter,可在SpringBoot启动日志里看到该Filter的启动信息。可以直接使用restful风格的请求
8.在controller里面使用User user时,请求参数要和User实体类里面同名,不然读取不到值,造成无法修改添加
9.在修改借书信息的日期时,把string类型的转换成Date出错