使用JAVA SSM框架遇到的一些坑

分页操作

使用MyBatis 分页插件 - PageHelper

在使用前先导包

1
2
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

在Impl中使用

1
2
3
4
5
public PageInfo<Role> selectRoleByPager(List roleDatas, int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
PageInfo<Role> info = new PageInfo<>(roleDatas);
return info;
}

不传值时记得定义分页变量,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@AuthMethod
@RequestMapping(value="/admin/roleSearch.html",method=RequestMethod.POST)
public String searcerUsers(Model model,String roleInfo) {
// 获取到所有的角色记录信息
List<Role> Roles = roleService.selectroleBySearch(roleInfo);
//搜索加上分页变量
int pageNum = 1;
int pageSize = 10;
PageInfo<Role> roles = roleService.selectRoleByPager(Roles,pageNum, pageSize);
System.err.println("测试"+roles);
System.err.println("测试"+roleInfo);
model.addAttribute("Roles", roles);
return "admin/role";
}

在jsp中引用时如下:

1
2
3
4
5
6
7
8
9
10
11
12
//数据列表${Roles.list}
//数据长度${Roles.total}
//记录页数${Roles.pageNum}
//总页数${Roles.pages}
//下一页${Roles.nextPage}
//上一页${Roles.prePage}
总共有<span>${Roles.total}</span>记录,当前页<span> ${Roles.pageNum} / ${Roles.pages} </span>页
<a href="${pageContext.request.contextPath}/admin/roleManager.html?pageNum=1&pageSize=10" type="button" class="btn btn-default">首页</a>
<a href="${pageContext.request.contextPath}/admin/roleManager.html?pageNum=${Roles.prePage}&pageSize=10" type="button" class="btn btn-default">上一页</a>
<a href="${pageContext.request.contextPath}/admin/roleManager.html?pageNum=${Roles.nextPage}&pageSize=10" type="button" class="btn btn-default">下一页</a>
<a href="${pageContext.request.contextPath}/admin/roleManager.html?pageNum=${Roles.pages}&pageSize=10" type="button" class="btn btn-default">尾页</a>

c:forEach的报错

原因是jsp页面没有引用下面这行代码

1
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

提交中文数据乱码

首先确定项目和数据库编码均为UTF-8格式,页面中也有设置编码格式为UTF-8

  1. 针对页面中乱码的处理,在web.xml中添加spring框架的编码过滤器配置:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
  2. 针对mybatis做数据更新产生的乱码处理,在数据库配置后加编码限制:
    1
    ?useUnicode=true&characterEncoding=utf8
    经测试,可以完美解决“中文乱码”的问题。