在IDEA创建一个maven项目
pom.xml
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.example</groupId>
- <artifactId>lzxzyssm</artifactId>
- <packaging>war</packaging>
- <version>1.0-SNAPSHOT</version>
- <name>lzxzyssmMaven Webapp</name>
- <url>http://maven.apache.org</url>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
- <maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version>
- <!--添加jar包依赖-->
- <!--1.spring 5.0.2.RELEASE相关-->
- <spring.version>5.0.2.RELEASE</spring.version>
- <!--2.mybatis相关-->
- <mybatis.version>3.4.5</mybatis.version>
- <!--mysql-->
- <mysql.version>5.1.44</mysql.version>
- <!--pagehelper分页jar依赖-->
- <pagehelper.version>5.1.2</pagehelper.version>
- <!--mybatis与spring集成jar依赖-->
- <mybatis.spring.version>1.3.1</mybatis.spring.version>
- <!--3.dbcp2连接池相关 druid-->
- <commons.dbcp2.version>2.1.1</commons.dbcp2.version>
- <commons.pool2.version>2.4.3</commons.pool2.version>
- <!--4.log日志相关-->
- <log4j2.version>2.9.1</log4j2.version>
- <log4j2.disruptor.version>3.2.0</log4j2.disruptor.version>
- <slf4j.version>1.7.13</slf4j.version>
- <!--5.其他-->
- <junit.version>4.12</junit.version>
- <servlet.version>4.0.0</servlet.version>
- <lombok.version>1.18.2</lombok.version>
-
- <mybatis.ehcache.version>1.1.0</mybatis.ehcache.version>
- <ehcache.version>2.10.0</ehcache.version>
-
- <redis.version>2.9.0</redis.version>
- <redis.spring.version>1.7.1.RELEASE</redis.spring.version>
- <jackson.version>2.9.3</jackson.version>
- <jstl.version>1.2</jstl.version>
- <standard.version>1.1.2</standard.version>
- <tomcat-jsp-api.version>8.0.47</tomcat-jsp-api.version>
- <commons-fileupload.version>1.3.3</commons-fileupload.version>
- <hibernate-validator.version>5.0.2.Final</hibernate-validator.version>
-
- <shiro.version>1.3.2</shiro.version>
- </properties>
-
-
-
- <dependencies>
- <!--1.spring相关-->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-tx</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-aspects</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>${spring.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${spring.version}</version>
- </dependency>
-
-
- <!--2.mybatis相关-->
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis</artifactId>
- <version>${mybatis.version}</version>
- </dependency>
- <!--mysql-->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>${mysql.version}</version>
- </dependency>
- <!--pagehelper分页插件jar包依赖-->
- <dependency>
- <groupId>com.github.pagehelper</groupId>
- <artifactId>pagehelper</artifactId>
- <version>${pagehelper.version}</version>
- </dependency>
- <!--mybatis与spring集成jar包依赖-->
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis-spring</artifactId>
- <version>${mybatis.spring.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>${spring.version}</version>
- </dependency>
-
- <!--mybatis与ehcache整合-->
- <dependency>
- <groupId>org.mybatis.caches</groupId>
- <artifactId>mybatis-ehcache</artifactId>
- <version>${mybatis.ehcache.version}</version>
- </dependency>
- <!--ehcache依赖-->
- <dependency>
- <groupId>net.sf.ehcache</groupId>
- <artifactId>ehcache</artifactId>
- <version>${ehcache.version}</version>
- </dependency>
-
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>${redis.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-redis</artifactId>
- <version>${redis.spring.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-annotations</artifactId>
- <version>${jackson.version}</version>
- </dependency>
-
- <!--3.dbcp2连接池相关-->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-dbcp2</artifactId>
- <version>${commons.dbcp2.version}</version>
- <exclusions>
- <exclusion>
- <artifactId>commons-pool2</artifactId>
- <groupId>org.apache.commons</groupId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-pool2</artifactId>
- <version>${commons.pool2.version}</version>
- </dependency>
-
- <!--springmvc依赖-->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>${spring.version}</version>
- </dependency>
-
- <!--4.log日志相关依赖-->
-
- <!-- log4j2日志相关依赖 -->
- <!-- log配置:Log4j2 + Slf4j -->
- <!-- slf4j核心包-->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>${slf4j.version}</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- <version>${slf4j.version}</version>
- <scope>runtime</scope>
- </dependency>
-
- <!--核心log4j2jar包-->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-api</artifactId>
- <version>${log4j2.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-core</artifactId>
- <version>${log4j2.version}</version>
- </dependency>
- <!--用于与slf4j保持桥接-->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-slf4j-impl</artifactId>
- <version>${log4j2.version}</version>
- </dependency>
- <!--web工程需要包含log4j-web,非web工程不需要-->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-web</artifactId>
- <version>${log4j2.version}</version>
- <scope>runtime</scope>
- </dependency>
-
- <!--需要使用log4j2的AsyncLogger需要包含disruptor-->
- <dependency>
- <groupId>com.lmax</groupId>
- <artifactId>disruptor</artifactId>
- <version>${log4j2.disruptor.version}</version>
- </dependency>
-
- <!--5.其他-->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <!--<scope>test</scope><!––>-->
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>${servlet.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <version>${lombok.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>jstl</groupId>
- <artifactId>jstl</artifactId>
- <version>${jstl.version}</version>
- </dependency>
- <dependency>
- <groupId>taglibs</groupId>
- <artifactId>standard</artifactId>
- <version>${standard.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-jsp-api</artifactId>
- <version>${tomcat-jsp-api.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>${commons-fileupload.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-validator</artifactId>
- <version>${hibernate-validator.version}</version>
- </dependency>
-
- <!--shiro依赖-->
- <dependency>
- <groupId>org.apache.shiro</groupId>
- <artifactId>shiro-core</artifactId>
- <version>${shiro.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.shiro</groupId>
- <artifactId>shiro-web</artifactId>
- <version>${shiro.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.shiro</groupId>
- <artifactId>shiro-spring</artifactId>
- <version>${shiro.version}</version>
- </dependency>
- </dependencies>
- <build>
- <finalName>lzxzyssm</finalName>
- <resources>
- <!--解决mybatis-generator-maven-plugin运行时没有将XxxMapper.xml文件放入target文件夹的问题-->
- <resource>
- <directory>src/main/java</directory>
- <includes>
- <include>**/*.xml</include>
- </includes>
- </resource>
- <!--解决mybatis-generator-maven-plugin运行时没有将jdbc.properites文件放入target文件夹的问题-->
- <resource>
- <directory>src/main/resources</directory>
- <includes>
- <include>*.properties</include>
- <include>*.xml</include>
- </includes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>${maven.compiler.plugin.version}</version>
- <configuration>
- <source>${maven.compiler.source}</source>
- <target>${maven.compiler.target}</target>
- <encoding>${project.build.sourceEncoding}</encoding>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.mybatis.generator</groupId>
- <artifactId>mybatis-generator-maven-plugin</artifactId>
- <version>1.3.2</version>
- <dependencies>
- <!--使用Mybatis-generator插件不能使用太高版本的mysql驱动 -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>${mysql.version}</version>
- </dependency>
- </dependencies>
- <configuration>
- <overwrite>true</overwrite>
- </configuration>
- </plugin>
-
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>3.1.0</version>
- </plugin>
- <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
- <plugin>
- <artifactId>maven-resources-plugin</artifactId>
- <version>3.0.2</version>
- </plugin>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.8.0</version>
- </plugin>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.22.1</version>
- </plugin>
- <plugin>
- <artifactId>maven-war-plugin</artifactId>
- <version>3.2.2</version>
- </plugin>
- <plugin>
- <artifactId>maven-install-plugin</artifactId>
- <version>2.5.2</version>
- </plugin>
- <plugin>
- <artifactId>maven-deploy-plugin</artifactId>
- <version>2.8.2</version>
- </plugin>
- </plugins>
- </build>
- </project>
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
- version="3.1">
- <display-name>Archetype Created Web Application</display-name>
- <!-- Spring和web项目集成start -->
- <!-- spring上下文配置文件 -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring-context.xml</param-value>
- </context-param>
- <!-- 读取Spring上下文的监听器 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- Spring和web项目集成end -->
-
- <!-- 中文乱码处理 -->
- <filter>
- <filter-name>encodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <async-supported>true</async-supported>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
-
- <!-- Spring MVC servlet -->
- <servlet>
- <servlet-name>SpringMVC</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <!--此参数可以不配置,默认值为:/WEB-INF/springmvc-servlet.xml-->
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring-mvc.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- <!--web.xml 3.0的新特性,是否支持异步-->
- <async-supported>true</async-supported>
- </servlet>
- <servlet-mapping>
- <servlet-name>SpringMVC</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- </web-app>
generatorConfig.xml
- "1.0" encoding="UTF-8" ?>
- generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
- "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
- <generatorConfiguration>
-
- <properties resource="jdbc.properties"/>
-
-
- <classPathEntry
- location="D:\\temp\\mvn_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar"/>
-
-
- <context id="infoGuardian">
-
- <commentGenerator>
- <property name="suppressAllComments" value="true"/>
- <property name="suppressDate" value="true"/>
- commentGenerator>
-
-
- <jdbcConnection driverClass="${jdbc.driver}"
- connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
-
-
- <javaTypeResolver>
-
- <property name="forceBigDecimals" value="false"/>
- javaTypeResolver>
-
-
-
-
- <javaModelGenerator targetProject="src/main/java" targetPackage="com.liao.model">
-
- <property name="enableSubPackages" value="false"/>
-
- <property name="constructorBased" value="true"/>
-
- <property name="trimStrings" value="false"/>
-
- <property name="immutable" value="false"/>
- javaModelGenerator>
-
-
- <sqlMapGenerator targetProject="src/main/java" targetPackage="com.liao.mapper">
-
- <property name="enableSubPackages" value="false"/>
- sqlMapGenerator>
-
-
-
-
-
- <javaClientGenerator targetProject="src/main/java" targetPackage="com.liao.mapper" type="XMLMAPPER">
-
- <property name="enableSubPackages" value="false"/>
-
- <table schema="" tableName="t_struts_class" domainObjectName="StrutsClas"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
-
-
- context>
- generatorConfiguration>
数据库配置文件: jdbc.properties
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8
- jdbc.username=root
- jdbc.password=123456
spring-mybatis.xml
- "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:tx="http://www.springframework.org/schema/tx"
- xmlns:aop="http://www.springframework.org/schema/aop"
- 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.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
-
-
- <context:annotation-config/>
-
- <context:component-scan base-package="com.liao"/>
-
- <context:property-placeholder location="classpath:jdbc.properties"/>
-
- <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="${jdbc.driver}"/>
- <property name="url" value="${jdbc.url}"/>
- <property name="username" value="${jdbc.username}"/>
- <property name="password" value="${jdbc.password}"/>
-
- <property name="initialSize" value="10"/>
-
- <property name="maxTotal" value="100"/>
-
- <property name="maxIdle" value="50"/>
-
- <property name="minIdle" value="10"/>
-
-
- <property name="maxWaitMillis" value="-1"/>
- bean>
-
-
-
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
-
- <property name="dataSource" ref="dataSource"/>
-
- <property name="mapperLocations" value="classpath*:com/liao/**/mapper/*.xml"/>
-
- <property name="typeAliasesPackage" value="com/liao/**/model"/>
-
- <property name="plugins">
- <array>
- <bean class="com.github.pagehelper.PageInterceptor">
- <property name="properties">
- <value>
- helperDialect=mysql
- value>
- property>
- bean>
- array>
- property>
- bean>
-
-
-
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
-
-
- <property name="basePackage" value="com/liao/**/mapper"/>
- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
- bean>
-
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource"/>
- bean>
- <tx:annotation-driven transaction-manager="transactionManager"/>
- <aop:aspectj-autoproxy/>
- beans>
spring-context.xml
- "1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
-
-
- <import resource="spring-mybatis.xml">import>
- beans>
spring-mvc-xml:
- "1.0" encoding="UTF-8"?>
- <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"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns="http://www.springframework.org/schema/beans"
- 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-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
-
- <context:component-scan base-package="com.liao"/>
-
-
- <mvc:annotation-driven/>
-
-
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
-
- <property name="viewClass"
- value="org.springframework.web.servlet.view.JstlView">property>
- <property name="prefix" value="/WEB-INF/jsp/"/>
- <property name="suffix" value=".jsp"/>
- bean>
-
-
-
-
-
-
-
- <aop:aspectj-autoproxy/>
- beans>
PageBean
- package com.liao.utils;
-
- import javax.servlet.http.HttpServletRequest;
- import java.io.Serializable;
- import java.util.Map;
-
- public class PageBean implements Serializable {
-
- private static final long serialVersionUID = 2422581023658455731L;
-
- //页码
- private int page=1;
- //每页显示记录数
- private int rows=10;
- //总记录数
- private int total=0;
- //是否分页
- private boolean isPagination=true;
- //上一次的请求路径
- private String url;
- //获取所有的请求参数
- private Map<String,String[]> map;
-
- public PageBean() {
- super();
- }
-
- //设置请求参数
- public void setRequest(HttpServletRequest req) {
- String page=req.getParameter("page");
- String rows=req.getParameter("rows");
- String pagination=req.getParameter("pagination");
- this.setPage(page);
- this.setRows(rows);
- this.setPagination(pagination);
- this.url=req.getContextPath()+req.getServletPath();
- this.map=req.getParameterMap();
- }
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public Map<String, String[]> getMap() {
- return map;
- }
-
- public void setMap(Map<String, String[]> map) {
- this.map = map;
- }
-
- public int getPage() {
- return page;
- }
-
- public void setPage(int page) {
- this.page = page;
- }
-
- public void setPage(String page) {
- if(null!=page&&!"".equals(page.trim()))
- this.page = Integer.parseInt(page);
- }
-
- public int getRows() {
- return rows;
- }
-
- public void setRows(int rows) {
- this.rows = rows;
- }
-
- public void setRows(String rows) {
- if(null!=rows&&!"".equals(rows.trim()))
- this.rows = Integer.parseInt(rows);
- }
-
- public int getTotal() {
- return total;
- }
-
- public void setTotal(int total) {
- this.total = total;
- }
-
- public void setTotal(String total) {
- this.total = Integer.parseInt(total);
- }
-
- public boolean isPagination() {
- return isPagination;
- }
-
- public void setPagination(boolean isPagination) {
- this.isPagination = isPagination;
- }
-
- public void setPagination(String isPagination) {
- if(null!=isPagination&&!"".equals(isPagination.trim()))
- this.isPagination = Boolean.parseBoolean(isPagination);
- }
-
- /**
- * 获取分页起始标记位置
- * @return
- */
- public int getStartIndex() {
- //(当前页码-1)*显示记录数
- return (this.getPage()-1)*this.rows;
- }
-
- /**
- * 末页
- * @return
- */
- public int getMaxPage() {
- int totalpage=this.total/this.rows;
- if(this.total%this.rows!=0)
- totalpage++;
- return totalpage;
- }
-
- /**
- * 下一页
- * @return
- */
- public int getNextPage() {
- int nextPage=this.page+1;
- if(this.page>=this.getMaxPage())
- nextPage=this.getMaxPage();
- return nextPage;
- }
-
- /**
- * 上一页
- * @return
- */
- public int getPreivousPage() {
- int previousPage=this.page-1;
- if(previousPage<1)
- previousPage=1;
- return previousPage;
- }
-
- @Override
- public String toString() {
- return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", isPagination=" + isPagination
- + "]";
- }
- }
PageTag
- package com.liao.tag;
-
- import com.liao.utils.PageBean;
-
- import javax.servlet.jsp.JspException;
- import javax.servlet.jsp.JspWriter;
- import javax.servlet.jsp.tagext.BodyTagSupport;
- import java.io.IOException;
- import java.util.Map;
- import java.util.Map.Entry;
- import java.util.Set;
-
- public class PageTag extends BodyTagSupport{
- private PageBean pageBean;// 包含了所有分页相关的元素
-
- public PageBean getPageBean() {
- return pageBean;
- }
-
- public void setPageBean(PageBean pageBean) {
- this.pageBean = pageBean;
- }
-
- @Override
- public int doStartTag() throws JspException {
- // 没有标签体,要输出内容
- JspWriter out = pageContext.getOut();
- try {
- out.print(toHTML());
- } catch (IOException e) {
- e.printStackTrace();
- }
- return super.doStartTag();
- }
-
- private String toHTML() {
- StringBuffer sb = new StringBuffer();
- // 隐藏的form表单---这个就是上一次请求下次重新发的奥义所在
- // 上一次请求的URL
- sb.append(");
- sb.append(" ");
- // 上一次请求的参数
- Map<String, String[]> paramMap = pageBean.getMap();
- if(paramMap != null && paramMap.size() > 0) {
- Set<Entry<String, String[]>> entrySet = paramMap.entrySet();
- for (Entry<String, String[]> entry : entrySet) {
- // 参数名
- String key = entry.getKey();
- // 参数值
- for (String value : entry.getValue()) {
- // 上一次请求的参数,再一次组装成了新的Form表单
- // 注意:page参数每次都会提交,我们需要避免
- if(!"page".equals(key)) {
- sb.append(" ");
- }
- }
- }
- }
- sb.append("");
-
- // 分页条
- sb.append("
"
); - sb.append("
- );
- sb.append(" href='javascript:gotoPage(1)'>首页");
- sb.append("
- );
- sb.append(" href='javascript:gotoPage("+pageBean.getPreivousPage()+")'><");// less than 小于号
- sb.append("
- >
"); - sb.append("
- 尾页
"); - sb.append("
- 到第);
- sb.append(" type='text' id='skipPage' name='' />页");
- sb.append("
- );
- sb.append(" href='javascript:skipPage()'>确定");
- sb.append("
- 共"
+pageBean.getTotal()+"条"); - sb.append("");
-
- // 分页执行的JS代码
- sb.append("");
-
- return sb.toString();
- }
- }
- <?xml version="1.0" encoding="UTF-8" ?>
-
- <taglib xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
- version="2.0">
-
- <description>liao 1.1 core library</description>
- <display-name>liao core</display-name>
- <tlib-version>1.1</tlib-version>
- <short-name>liao </short-name>
- <uri>http://jsp.veryedu.cn</uri>
-
- <tag>
- <name>page</name>
- <tag-class>com.liao .tag.PageTag</tag-class>
- <body-content>JSP</body-content>
- <attribute>
- <name>pageBean</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- </tag>
-
- </taglib>
在UserMapper.xml中新建一条查询sql
- <select id="listPager" resultMap="BaseResultMap" parameterType="com.liao.model.User" >
- select
- <include refid="Base_Column_List" />
- from t_oa_user
- <where>
- <if test="name!=null">
- and name like concat('%',#{name},'%')
- </if>
- </where>
- </select>
UserMapper接口方法
List<User> listPager(User user);
业务逻辑层接口
- package com.liao.biz;
-
- import com.liao.model.User;
- import com.liao.utils.PageBean;
-
- import java.util.List;
-
- public interface UserBiz {
- int deleteByPrimaryKey(Long id);
-
- int insert(User record);
-
- int insertSelective(User record);
-
- User selectByPrimaryKey(Long id);
-
- int updateByPrimaryKeySelective(User record);
-
- int updateByPrimaryKey(User record);
-
- List
listPager(User user, PageBean page); - }
实现接口
- package com.liao.biz.impl;
-
- import com.liao.biz.UserBiz;
- import com.liao.mapper.UserMapper;
- import com.liao.model.User;
- import com.liao.utils.PageBean;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
-
- import java.util.List;
-
-
- @Service
- public class UserBizImpl implements UserBiz {
- @Autowired
- private UserMapper userMapper;
-
- @Override
- public int deleteByPrimaryKey(Long id) {
- return userMapper.deleteByPrimaryKey(id);
- }
-
- @Override
- public int insert(User record) {
- return userMapper.insert(record);
- }
-
- @Override
- public int insertSelective(User record) {
- return userMapper.insertSelective(record);
- }
-
- @Override
- public User selectByPrimaryKey(Long id) {
- return userMapper.selectByPrimaryKey(id);
- }
-
- @Override
- public int updateByPrimaryKeySelective(User record) {
- return userMapper.updateByPrimaryKeySelective(record);
- }
-
- @Override
- public int updateByPrimaryKey(User record) {
- return userMapper.updateByPrimaryKey(record);
- }
-
- @Override
- public List
listPager(User user, PageBean page) { - return userMapper.listPager(user);
- }
- }
.编写切面
- package com.liao.aspect;
-
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import com.liao.utils.PageBean;
- import org.aspectj.lang.ProceedingJoinPoint;
- import org.aspectj.lang.annotation.Around;
- import org.aspectj.lang.annotation.Aspect;
- import org.springframework.stereotype.Component;
-
- import java.util.List;
-
- @Aspect
- @Component
- public class PageAspect {
- @Around("execution(* *..*Biz.*Pager(..))")
- public Object invoke(ProceedingJoinPoint args) throws Throwable {
- PageBean pageBean = null;
-
- Object[] args1 = args.getArgs();
- for (Object param:args1) {
- if (param instanceof PageBean){
- pageBean = (PageBean) param;
- break;
- }
- }
-
- if(pageBean!=null && pageBean.isPagination())
- PageHelper.startPage(pageBean.getPage(),pageBean.getRows());
-
- Object proceed = args.proceed();
- if(pageBean!=null && pageBean.isPagination()){
- PageInfo info = new PageInfo((List) proceed);
- pageBean.setTotal((int) info.getTotal());
- }
- return proceed;
- }
- }
web层控制器
- package com.liao.web;
-
- import com.liao.biz.UserBiz;
- import com.liao.model.User;
- import com.liao.utils.PageBean;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.servlet.ModelAndView;
-
- import javax.servlet.http.HttpServletRequest;
- import java.util.List;
-
- /**
- * @author 云村小威
- * @site blog.csdn.net/Justw320
- * @create 2023-09-08 11:56
- */
- @Controller
- @RequestMapping("/users")
- public class UserController {
- @Autowired
- private UserBiz userBiz;
-
- /*新增方法*/
- @RequestMapping("/add")
- public String save(User user, HttpServletRequest request) {
- userBiz.insertSelective(user);
- return "redirect:list";
- }
-
- /*删除方法*/
- @RequestMapping("/del/{id}")
- public String del(@PathVariable("id") Long id, HttpServletRequest request) {
- userBiz.deleteByPrimaryKey(id);
- return "redirect:/users/list";
- }
-
- /*修改方法*/
- @RequestMapping("/edit")
- public String edit(User user, HttpServletRequest request) {
- userBiz.updateByPrimaryKeySelective(user);
- return "redirect:list";
- }
-
- /*查询方法*/
- @GetMapping("/list")
- public ModelAndView list(User user, HttpServletRequest request) {
- PageBean pageBean = new PageBean();
- pageBean.setRequest(request);
- List
users = userBiz.listPager(user, pageBean); - ModelAndView modelAndView = new ModelAndView();
- modelAndView.addObject("users", users);
- modelAndView.addObject("pageBean", pageBean);
- modelAndView.setViewName("user/list");
-
- return modelAndView;
- }
-
- /*数据回显*/
- @RequestMapping("/preSave")
- public String preSave(User user, HttpServletRequest request) {
- if (user != null && user.getId() != null && user.getId() != 0) {
- User u = userBiz.selectByPrimaryKey(user.getId());
- request.setAttribute("u", u);
- }
- return "user/edit";
- }
- }
list.jsp
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- <%@ taglib prefix="z" uri="http://jsp.veryedu.cn" %>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <link
- href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css"
- rel="stylesheet">
- <script
- src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.js"></script>
- <base href="${pageContext.request.contextPath }">
- <title>博客列表</title>
- <style type="text/css">
- .page-item input {
- padding: 0;
- width: 40px;
- height: 100%;
- text-align: center;
- margin: 0 6px;
- }
-
- .page-item input, .page-item b {
- line-height: 38px;
- float: left;
- font-weight: 400;
- }
-
- .page-item.go-input {
- margin: 0 10px;
- }
- </style>
- </head>
- <body>
- <form class="form-inline"
- action="/users/list" method="post">
- <div class="form-group mb-2">
- <input type="text" class="form-control-plaintext" name="name"
- placeholder="请输入用户名称">
- <!-- 不想分页 -->
- <!-- <input name="rows" value="20" type="hidden"> -->
- <%--<input name="pagination" value="false" type="hidden">--%>
- </div>
- <button type="submit" class="btn btn-primary mb-2">查询</button>
- <a class="btn btn-primary mb-2" href="/users/preSave">新增</a>
- </form>
-
- <table class="table table-striped">
- <thead>
- <tr>
- <th scope="col">用户ID</th>
- <th scope="col">用户名</th>
- <th scope="col">账号</th>
- <th scope="col">密码</th>
- <th scope="col">权限</th>
- </tr>
- </thead>
- <tbody>
- <c:forEach var="u" items="${users }">
- <tr>
- <td>${u.id }</td>
- <td>${u.name }</td>
- <td>${u.loginname }</td>
- <td>${u.pwd }</td>
- <td>${u.rid }</td>
- <td>
- <a href="/users/preSave?id=${u.id}">修改</a>
- <a href="/users/del/${u.id}">删除</a>
- </td>
- </tr>
- </c:forEach>
- </tbody>
- </table>
- <!-- 这一行代码就相当于前面分页需求前端的几十行了 -->
- <z:page pageBean="${pageBean }"></z:page>
-
- </body>
- </html>
edit.jsp
-
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>用户编辑、新增公共页面</title>
- </head>
- <body>
- <form action="${pageContext.request.contextPath }/${empty u ? 'users/add' : 'users/edit'}" method="post">
- 用户id:<input type="text" name="id" value="${u.id }"><br>
- 用户名:<input type="text" name="name" value="${u.name }"><br>
- 账号:<input type="text" name="loginname" value="${u.loginname }"><br>
- 密码:<input type="text" name="pwd" value="${u.pwd }"><br>
- 权限:<input type="text" name="rid" value="${u.rid }"><br>
- <input type="submit">
- </form>
- </body>
- </html>