Springmvc分页

Springmvc分页

目录

[TOC]来生成目录:


结构图

这里写图片描述

JAR包

这里写图片描述

spring-common.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">

    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="你的地址"/>
        <property name="username" value="test"/>
        <property name="password" value="test"/>
    </bean>

    <!--
            2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源

            MyBatis定义数据源,同意加载配置
        -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:config/mybatis-config.xml" />
    </bean>

    <!--
            3. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory

            basePackage:指定sql映射文件/接口所在的包(自动扫描)
        -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.test.cn.mapper"></property>
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>

    <!--
            4. 事务管理 : DataSourceTransactionManager dataSource:引用上面定义的数据源
        -->
    <bean id="txManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 5. 使用声明式事务
             transaction-manager:引用上面定义的事务管理器
         -->
    <tx:annotation-driven transaction-manager="txManager" />

</beans>

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

    <!-- 注解扫描包 -->
    <context:component-scan base-package="com.test.cn" />

    <!-- 开启注解 -->
    <mvc:annotation-driven />

    <!--
            配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd
        -->

    <!-- 定义跳转的文件的前后缀 ,视图模式配置-->
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
        <property name="prefix" value="/web/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- 上传文件拦截,设置最大上传文件大小   10M=10*1024*1024(B)=10485760 bytes -->  
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <property name="defaultEncoding" value="UTF-8"/> 
        <property name="maxUploadSize" value="10485760" />
    </bean>


    <!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException
            该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 -->  
    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">  
        <property name="exceptionMappings">  
            <props>  
                <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 -->  
                <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop>  
            </props>  
        </property>  
    </bean>  

</beans>

mybatis-config.xml

<?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>
    <!-- 实体类,简称 -设置别名 
        <typeAliases>
            <typeAlias alias="Contact" type="com.tyzd.pact.model.Contact" />
        </typeAliases>-->
    <typeAliases>
        <!--批量扫描配置别名,别名就是类名-->
        <package name="com.test.cn.entity"/>
    </typeAliases>

    <!-- 实体接口映射资源 -->
    <!-- 说明:如果xxMapper.xml配置文件放在和xxMapper.java统一目录下,mappers也可以省略,因为org.mybatis.spring.mapper.MapperFactoryBean默认会去查找与xxMapper.java相同目录和名称的xxMapper.xml
        <mappers>
            <mapper resource="com/tyzd/pact/mapper/ContactMapper.xml" />
        </mappers>-->
    <!--批量加载mapper,这里的mapper.java必须和mapper.xml名称相同-->
    <mappers>
        <package name="com.test.cn.mapper"/>
    </mappers>

</configuration>  

log4j.properties

### set log levels ### 
log4j.rootLogger = info , Console , D
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=INFO
log4j.logger.java.sql.Statement=INFO
log4j.logger.java.sql.PreparedStatement=INFO
#output2file
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender 
log4j.appender.D.File = D:/logs/log.log 
log4j.appender.D.Append = true 
log4j.appender.D.Threshold = INFO ## \u8F93\u51FAinfo\u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7 
log4j.appender.D.layout = org.apache.log4j.PatternLayout 
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n 

we.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Springmvc_1</display-name>

  <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:config/spring-*.xml</param-value>
    </context-param>


    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:config/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


    <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>


    <filter>
        <filter-name>encodingFilter</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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <welcome-file-list>
        <welcome-file>web/index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

index.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>测试</title>
</head>
<script
    src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>
<body>

    <!-- 分页测试  start -->
    <div>
        <table border="1">
            <tr>
                <td align="center"><input type="text" value="0"
                    style="display: none;" /> <input class="inbtnone" type="button"
                    value="第一页" /> <input class="nextnone" type="button" value="下一页" />
                    <input class="prevnone" type="button" value="上一页" /></td>
                <td><input class="insert_num" type="text" value="${pagecount }"
                    style="text-align: right;"
                    onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
                    onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" />条记录/页</td>
            </tr>
            <tr>
                <td style="color: blue;"><label></label> <label
                    class="l_f_pageNum"><c:if test="${ not empty pageNum}">
                            <input class="l_f_inp_pageNum" type="text" value="${pageNum+1 }"
                                style="text-align: right;"
                                onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
                                onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" />
                        </c:if> <c:if test="${empty pageNum}">1</c:if> </label> <label>页/</label> <label></label> <label class="l_f_totalPage">${totalPage }</label> <label></label>
                </td>
            </tr>
            <c:if test="${ not empty list}">
                <c:forEach var="user" items="${list}" varStatus="st">
                    <tr>
                        <td align="center">${user.username }</td>
                        <td align="center">${user.fullname }</td>
                    </tr>
                </c:forEach>
            </c:if>
        </table>
    </div>
    <!-- 分页测试  end -->


</body>

<!-- 分页测试  start -->
<script type="text/javascript">
// 第一页按钮点击事件
$('.inbtnone').click(function(){
    var p = $(this).prev().val();
    var p1;
    if($('.insert_num').val()==''){
        p1 = 10;
    }else{
        p1 = $('.insert_num').val();
    }
    $.ajax({
            type:"post",
            url:'<%=basePath%>u_user/getAllUser',
            data : {
                page : p,
                pagecount : p1
            },
            success : function(data) {
                location.reload();
            },
            error : function(requst){
                location.reload();
            }
        });
    });
// 下一页按钮点击事件
$('.nextnone').click(function(){
    var p = $(".l_f_pageNum").children(".l_f_inp_pageNum").val();
    p = parseInt(p) + 1;
    var p1;
    if($('.insert_num').val()==''){
        p1 = 10;
    }else{
        p1 = $('.insert_num').val();
    }
    $.ajax({
            type:"post",
            url:'<%=basePath%>u_user/getAllUser',
            data : {
                page : p,
                pagecount : p1
            },
            success : function(data) {
                location.reload();
            },
            error : function(requst){
                location.reload();
            }
        });
    });
// 上一页按钮点击事件
$('.prevnone').click(function(){
    var p = $(".l_f_pageNum").children(".l_f_inp_pageNum").val();
    p = parseInt(p) - 1;
    var p1;
    if($('.insert_num').val()==''){
        p1 = 10;
    }else{
        p1 = $('.insert_num').val();
    }
    $.ajax({
            type:"post",
            url:'<%=basePath%>u_user/getAllUser',
            data : {
                page : p,
                pagecount : p1
            },
            success : function(data) {
                location.reload();
            },
            error : function(requst){
                location.reload();
            }
        });
    });
// 每页记录数,回车事件
$('.insert_num').bind('keypress',function(ev){
    if(ev.keyCode==13) {
        var p = $(".l_f_pageNum").children(".l_f_inp_pageNum").val();
        p = parseInt(p);
        var p1;
        if($('.insert_num').val()==''){
            p1 = 10;
        }else{
            p1 = $('.insert_num').val();
        }
        $.ajax({
            type:"post",
            url:'<%=basePath%>u_user/getAllUser',
                data : {
                    page : p,
                    pagecount : p1
                },
                success : function(data) {
                    location.reload();
                },
                error : function(requst) {
                    location.reload();
                }
            });
        }
    });
// 每页记录数,失去焦点事件
$(".insert_num").blur(function(){
    var p = $(".l_f_pageNum").children(".l_f_inp_pageNum").val();
    p = parseInt(p);
    var p1;
    if($('.insert_num').val()==''){
        p1 = 10;
    }else{
        p1 = $('.insert_num').val();
    }
    $.ajax({
        type:"post",
        url:'<%=basePath%>u_user/getAllUser',
            data : {
                page : p,
                pagecount : p1
            },
            success : function(data) {
                location.reload();
            },
            error : function(requst) {
                location.reload();
            }
        });
});
// 跳转页,回车事件
$('.l_f_inp_pageNum').bind('keypress',function(ev){
    if(ev.keyCode==13) {
        var p = $(".l_f_pageNum").children(".l_f_inp_pageNum").val();
        p = parseInt(p);
        var p1;
        if($('.insert_num').val()==''){
            p1 = 10;
        }else{
            p1 = $('.insert_num').val();
        }
        $.ajax({
            type:"post",
            url:'<%=basePath%>u_user/getAllUser',
                data : {
                    page : p,
                    pagecount : p1
                },
                success : function(data) {
                    location.reload();
                },
                error : function(requst) {
                    location.reload();
                }
            });
        }
    });
// 跳转页,失去焦点事件
$(".l_f_inp_pageNum").blur(function(){
    var p = $(".l_f_pageNum").children(".l_f_inp_pageNum").val();
    p = parseInt(p);
    var p1;
    if($('.insert_num').val()==''){
        p1 = 10;
    }else{
        p1 = $('.insert_num').val();
    }
    $.ajax({
        type:"post",
        url:'<%=basePath%>u_user/getAllUser',
            data : {
                page : p,
                pagecount : p1
            },
            success : function(data) {
                location.reload();
            },
            error : function(requst) {
                location.reload();
            }
        });
    });
</script>
<!-- 分页测试  end -->






</html>

U_userController:

package com.test.cn.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.test.cn.entity.U_user;
import com.test.cn.service.U_userService;
import com.test.cn.util.PageBean;

@Controller
@RequestMapping("u_user")
public class U_userController {

    @Autowired
    private U_userService u_userService;

    @RequestMapping("/getAllUser")
    public String getAllUser(HttpServletRequest request,
            HttpServletResponse response, int page, int pagecount)
            throws Exception {
        PageBean<U_user> bean = u_userService.getAllUser(page-1, pagecount);
        request.getSession().setAttribute("list", bean.getList());
        request.getSession().setAttribute("pageNum", bean.getPageNum());
        request.getSession().setAttribute("totalPage", bean.getPages());
        request.getSession().setAttribute("pagecount", pagecount);
        return "index";
    }

}

U_user.java

package com.test.cn.entity;

import java.util.Date;

public class U_user {

    int id;
    String username;
    String fullname;
    String userpass;
    int roleId;
    Date create_time;
    Date update_time;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getFullname() {
        return fullname;
    }

    public void setFullname(String fullname) {
        this.fullname = fullname;
    }

    public String getUserpass() {
        return userpass;
    }

    public void setUserpass(String userpass) {
        this.userpass = userpass;
    }

    public int getRoleId() {
        return roleId;
    }

    public void setRoleId(int roleId) {
        this.roleId = roleId;
    }

    public Date getCreate_time() {
        return create_time;
    }

    public void setCreate_time(Date create_time) {
        this.create_time = create_time;
    }

    public Date getUpdate_time() {
        return update_time;
    }

    public void setUpdate_time(Date update_time) {
        this.update_time = update_time;
    }

}

UuserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.cn.mapper.UuserMapper">

    <resultMap type="U_user" id="u_userResultMap">
        <id property="id" column="id"></id>
        <result property="username" column="username"></result>
        <result property="fullname" column="fullname"></result>
        <result property="userpass" column="userpass"></result>
        <result property="roleId" column="roleId"></result>
        <result property="create_time" column="create_time"></result>
        <result property="update_time" column="update_time"></result>
    </resultMap>

    <select id="getAllUser" parameterType="map" resultType="U_user">
        SELECT * FROM u_user limit ${page},${pagecount}
    </select>

    <select id="getAllUserByCount" resultType="int">
        SELECT count(*) FROM u_user
    </select>
</mapper>

UuserMapper.java

package com.test.cn.mapper;

import java.util.List;
import java.util.Map;

import com.test.cn.entity.U_user;

public interface UuserMapper {

    public List<U_user> getAllUser(Map<String, String> map) throws Exception;

    public int getAllUserByCount() throws Exception;

}

U_userService.java

package com.test.cn.service;

import com.test.cn.entity.U_user;
import com.test.cn.util.PageBean;

public interface U_userService {

    public PageBean<U_user> getAllUser(int page, int pagecount)
            throws Exception;

    public int getAllUserByCount() throws Exception;

}

U_userServiceImpl.java

package com.test.cn.serviceimpl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.test.cn.entity.U_user;
import com.test.cn.mapper.UuserMapper;
import com.test.cn.service.U_userService;
import com.test.cn.util.PageBean;

@Transactional
@Service
public class U_userServiceImpl implements U_userService {

    private UuserMapper mapper;

    @Resource
    public void setMapper(UuserMapper mapper) {
        this.mapper = mapper;
    }

    public PageBean<U_user> getAllUser(int page, int pagecount)
            throws Exception {
        int count = this.getAllUserByCount();
        int pages = (count % pagecount == 0) ? (count / pagecount)
                : ((count / pagecount) + 1);
        page = page < 0 ? 0 : page;
        page = (page > (pages - 1)) ? (pages - 1) : page;
        Map<String, String> map = new HashMap<String, String>();
        map.put("page", (page * pagecount) + "");
        map.put("pagecount", pagecount + "");
        List<U_user> list = mapper.getAllUser(map);
        PageBean<U_user> pageBean = new PageBean<U_user>(list);
        pageBean.setPageNum(page);// 第几页
        pageBean.setPageSize(pagecount);// 每页记录数
        pageBean.setPages(pages);// 总页数
        pageBean.setSize(list.size());// 当前页的数量
        pageBean.setTotal(count);// 总计录数
        pageBean.setList(list);// 结果集
        return pageBean;
    }

    public int getAllUserByCount() throws Exception {
        int count = mapper.getAllUserByCount();
        return count;
    }
}

运行效果图

这里写图片描述
好的了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值