后台分页的页码安全(超过总页数,页码为非数字)检查问题
来源:互联网 发布:流星小说网络骑士 编辑:程序博客网 时间:2024/05/01 14:26
后台分页的页码安全(超过总页数,页码为非数字)检查问题
解决办法使用校验器:
如果页码没大于接收页码参数类型的最大值,但是页码大于总页数。
就在业务层进行判断
// 如果当前页大于总页数,那么就把最后一页的就是当前页if (page > pageBean.getTotalPage()) {page = pageBean.getTotalPage();pageBean.setPage(page);}if (page <= 0) {page = 1;pageBean.setPage(page);}
如果当页码小于等于0并且是负数,那么就把当前页设置为第一页
// 如果当页码小于等于0并且是负数,那么就把当前页设置为第一页if (page <= 0) {page = 1;pageBean.setPage(page);}
如果页码为非数字,使用数据校验及类型转换器(我这是数校验并跳转到提示页面)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"><validators><field name="page"><field-validator type="conversion"><message key="你输入的是无效的页码" /></field-validator></field></validators>
完整代码
实体:
package cn.dental.domain;/** * 用户实体类 * * @author 吕小刚 * @version V1.0 */public class User {private Long id;//编号,统一long类型private String name;//姓名public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
分页实体:
package cn.dental.utils;import java.util.ArrayList;import java.util.List;/** * 分页查询 * * @author 吕小刚 * @version V1.0 * @param <T> */public class PageBean<T> {/** 当前页 */private Integer page;/** 每页显示/条数 */private Integer limit;/** 总页数 */private Integer totalPage;/** 总记录数 */private Long totalCount;/** 分页查询集合数据 */private List<T> pageList = new ArrayList<T>();// =============== getXxx()/setXxx()/** * 获取:当前页 */public Integer getPage() {return page;}/** 设置:当前页 */public void setPage(Integer page) {this.page = page;}/** 获取:每页显示/条数 */public Integer getLimit() {return limit;}/** 设置:每页显示/条数 */public void setLimit(Integer limit) {this.limit = limit;}/** 获取:总页数 */public Integer getTotalPage() {return totalPage;}/** 设置:总页数 */public void setTotalPage(Integer totalPage) {this.totalPage = totalPage;}/** 获取:总记录数 */public Long getTotalCount() {return totalCount;}/** 设置:总记录数 */public void setTotalCount(Long totalCount) {this.totalCount = totalCount;}/** 获取:分页查询集合数据 */public List<T> getPageList() {return pageList;}/** 设置:分页查询集合数据 */public void setPageList(List<T> pageList) {this.pageList = pageList;}}
Dao层
package cn.dental.dao;import java.util.List;import cn.dental.domain.User;/** * User持久层接口 * * @author 吕小刚 * @version V1.0 */public interface UserDao {/** * 查询所有用户信息 * * @return 返回用户 */public List<User> findAll();/** * 分页查询 * * @param page * 页码(当前页) * @param limit * 每页显示条数 * @return 返回分页查询出来的数据 */public List<User> findAll(Integer page, Integer limit);/** 查询总记录数 */public Long findCount();}
package cn.dental.dao.impl;import java.util.List;import javax.annotation.Resource;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.stereotype.Repository;import cn.dental.dao.UserDao;import cn.dental.domain.User;/** * User持久层实现类 * * @author 吕小刚 * @version V1.0 */@Repository("userDaoImpl")@SuppressWarnings("unchecked")public class UserDaoImpl implements UserDao {@Resourceprivate SessionFactory sessionFactory;protected Session getSession() {return sessionFactory.getCurrentSession();}public List<User> findAll() {return getSession().createQuery("from User u").list();}public List<User> findAll(Integer page, Integer limit) {if (page == null) {return null;}List<User> list = getSession().createQuery(//"from User u")//.setFirstResult(page)//.setMaxResults(limit)//.list();if (list != null && list.size() > 0) {return list;}return null;}public Long findCount() {Long count = (Long) getSession().createQuery(//"select count(u) from User u")//.uniqueResult();if (count != null) {return count;}return null;}}
Service层
package cn.dental.service;import java.util.List;import cn.dental.domain.User;import cn.dental.utils.PageBean;/** * User服务层接口 * * @author 吕小刚 * @version V1.0 */public interface UserService {/** 查询所有用户信息 */public List<User> findAll();/** * * 分页查询 * * @param page * 页码(当前页) * @param limit * 每页显示条数 * @return 返回分页查询出来的数据集合 */public PageBean<User> findAll(Integer page);}
Action层
package cn.dental.action;import javax.annotation.Resource;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import cn.dental.domain.User;import cn.dental.service.UserService;import cn.dental.utils.PageBean;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;/** * User的Action类 * * @author 吕小刚 * @version V1.0 * */@SuppressWarnings("serial")@Controller("userAction")@Scope("prototype")public class UserAction extends ActionSupport implements ModelDriven<User> {// =================== Service实例@Resourceprivate UserService userService;// =================== 创建模型驱动对象private User model = new User();private int page;// 接收页码public User getModel() {return model;}public Integer getPage() {return page;}public void setPage(Integer page) {this.page = page;}// =================== Action处理方法/** 查询所有信息 */public String findAll() {// List<User> userList = userService.findAll();PageBean<User> pageBeanUser = userService.findAll(page);// ActionContext.getContext().getValueStack().set("userList", userList);ActionContext.getContext().getValueStack().set("pageBeanUser", pageBeanUser);return "findAll";}}
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"><validators><field name="page"><field-validator type="conversion"><message key="你输入的是无效的页码" /></field-validator></field></validators>
jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>分页查询</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"></head><body><div align="center"><table border="1"><tr><td>编号</td><td>姓名</td></tr><s:iterator var="pageBeanUserList" value="pageBeanUser.pageList"><tr><td><s:property value="#pageBeanUserList.id" /></td><td><s:property value="#pageBeanUserList.name" /></td></tr></s:iterator></table><p>第<s:property value="pageBeanUser.page" />/共<s:property value="pageBeanUser.totalPage" />页</p><form action="user_findAll.action?page=${page}" enctype="multipart/form-data" method="post"><input type="text" name="page" value=""><input type="submit" value="添加"/> </form></div></body></html>
<%@page import="com.opensymphony.xwork2.ActionContext"%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>错误提示</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"></head><body><h1>错误</h1><!-- 数据校验提示 --><s:fielderror fieldName="page"/></body></html>
阅读全文
0 0
- 后台分页的页码安全(超过总页数,页码为非数字)检查问题
- 总页数,页码,起始记录数之间的关系
- rdlc报表设置页码及总页数
- 根据当前页码、总页数,设置页码并实现页码切换功能
- 统计页码数字问题
- springMVC分页页码过多的问题
- GridView实现数字页码分页
- 分页参数 的页码
- 数字页码的css样式问题
- ppt制作:加总页数&&首页不显示页码
- 快速为PPT2003的每页加上总页码
- dataTables分页页码缓存问题
- 分页页码
- 分页页码
- 分页条中显示数字页码的计算方法
- 简单的分页页码编写
- 页码数字的编程统计
- Java 利用poi给word添加页眉页脚,页眉左边为公司logo图片,右为公司全称,页脚左为公司地址,右为页码总页数
- BOM浏览器对象模型
- Mysql官方参考文档(MySQL 5.7 Reference Manual )
- 【English】 再见,英语
- Unity导航是否到达目的地的方法,(包括有些不可能到达的目的地)
- TensorFlow1.1搭建自编码网络
- 后台分页的页码安全(超过总页数,页码为非数字)检查问题
- POJ 1804 Brainman、 EOJ 3234 Sort(归并排序+逆序对)
- 4197: [Noi2015]寿司晚宴
- maven3.5+hadoop2.7.3统计米骑测试日志KPI指标(二)
- python计算机视觉配置:decoder jpeg not available
- while,do while循环
- #!/usr/bin/python的作用
- 文章标题
- flex布局