• SpringMVC+Spring+hibernate整合及分页


    1. 新建web project

    2. 引入jar, 

    3. 创建包com.tgb.web.controller, 下面创建包(dao,entity,service, config,spring,hibernate)

        config-> spring-core.xml,spring-servlet.xml,spring-hibernate.xml    

       1) config下 springmvc配置文件 spring-servlet.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:mvc="http://www.springframework.org/schema/mvc"    
        xsi:schemaLocation="     
               http://www.springframework.org/schema/beans     
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
               http://www.springframework.org/schema/context     
               http://www.springframework.org/schema/context/spring-context-3.0.xsd    
               http://www.springframework.org/schema/mvc     
               http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 
        <!-- 注解扫描包 -->
        <context:component-scan base-package="com.tgb.web.controller" />    
          
        <!-- 开启注解 -->
        <mvc:annotation-driven/>
       
        <!-- 静态资源访问 -->
        <mvc:resources location="/img/" mapping="/img/**"/>
        <mvc:resources location="/js/" mapping="/js/**"/>
        <mvc:resources location="/css/" mapping="/css/**"/>
       
        	
        <!-- ViewResolver 视图解析器 --> 
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"/> 
            <property name="suffix" value=".jsp"/> 
        </bean>
        <!-- 上传文件 -->
         <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">   
              <property name="defaultEncoding"  value="UTF-8"/> 
              <property name="maxUploadSize"    value="1048576000"/> 
              <property name="maxInMemorySize"  value="40960"/> 
        </bean> 
         
    </beans>
    

     2) spring-hibernate.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop
               http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
               http://www.springframework.org/schema/tx 
               http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    
    	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
    		<property name="driverClassName" 	value="com.mysql.jdbc.Driver"/>
    		<property name="url" 			value="jdbc:mysql://localhost/test_ssh"/> 
    		<property name="username" 		value="root"/> 
    		<property name="password" 		value="linda0213"/>
    	</bean>
    	
    	<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
            <property name="dataSource" ref="dataSource"/>  
            <property name="hibernateProperties">  
                <props>  
            		<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            		<prop key="hibernate.hbm2ddl.auto">update</prop>
            		<prop key="hibernate.show_sql">true</prop>
            		<prop key="hibernate.format_sql">true</prop>
            	</props>
            </property>
            <property name="configLocations">
            	<list>
            		<value>
            			classpath*:com/tgb/web/controller/hibernate/hibernate.cfg.xml
            		</value>
            	</list>
            </property>
    	</bean>
    	
    	<!-- 定义事务管理器(声明式的事务) -->    
        <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">  
            <property name="sessionFactory" ref="sessionFactory"></property>  
        </bean>  
          
        <bean id="transactionBase" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">  
             <!-- 配置事务管理器 -->    
            <property name="transactionManager" ref="transactionManager"></property>  
             <!-- 配置事务管理器 -->    
            <property name="transactionAttributes">  
                <props> 
    				<!--  配置事务传播特性 -->                
                    <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>  
                    <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>  
                    <prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>  
                    <prop key="modify*">PROPAGATION_REQUIRED,-Exception</prop>  
                    <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>  
                    <prop key="get*">PROPAGATION_NEVER</prop>  
                </props>  
            </property> 
        </bean> 
          
    </beans>  
    

     3)  spring配置文件:spring-core.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop
               http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
               http://www.springframework.org/schema/tx 
               http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    
    <import resource="classpath*:com/tgb/web/controller/spring/spring-import.xml"/>
    </beans> 
    

     

    spring-> spring-import.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop
               http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
               http://www.springframework.org/schema/tx 
               http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
               
    	<bean id="userDao" class="com.tgb.web.controller.dao.UserDAO">
    		<property name="sessionFactory" ref="sessionFactory"></property>
    	</bean> 
     	<bean id="userManagerBase" class="com.tgb.web.controller.service.UserManager">
     		<property name="userDao" ref="userDao"></property>
     	</bean> 
     	<bean id="userManager" parent="transactionBase">
     		<property name="target" ref="userManagerBase"></property>
     	</bean>
    </beans> 
    

       hibernate->hibernate.cfg.xml  

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
      <session-factory>
    	<mapping class ="com.tgb.web.controller.entity.User" />
      </session-factory>
    </hibernate-configuration>
    

    web.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_3_0.xsd" version="3.0">
      <display-name></display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:config/spring-*.xml</param-value>
      </context-param>
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <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-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <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>
        <init-param>
          <param-name>forceEncoding</param-name>
          <param-value>true</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
      <!-- 配置Session -->  
      <filter>  
        <filter-name>openSession</filter-name>  
        <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>  
      </filter>  
      <filter-mapping>  
        <filter-name>openSession</filter-name>  
        <url-pattern>/*</url-pattern>  
      </filter-mapping>  
    </web-app>
    

      

    4. 建实体类 

     entity->User.java    

    package com.tgb.web.controller.entity;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    
    @Entity
    @Table(name="T_USER")
    public class User {
    	@Id
    	@GeneratedValue
    	@Column(length=32)
    	private Long id;
    
    	public Long getId() {
    		return id;
    	}
    	public void setId(Long id) {
    		this.id = id;
    	}
    	@Column(length=32)
    	private String userName;
    	@Column(length=32)
    	private String age;
    	public String getUserName() {
    		return userName;
    	}
    	public void setUserName(String userName) {
    		this.userName = userName;
    	}
    	public String getAge() {
    		return age;
    	}
    	public void setAge(String age) {
    		this.age = age;
    	}
    }
    

    5. 建DAO层  

    dao->IUserDao.java, UserDao.java

        1) IUserDao.java接口文件        

    package com.tgb.web.controller.dao;
    import java.util.List;
    import com.tgb.web.controller.entity.User;
    public interface IUserDAO {
    	public void addUser(User user);
    	public List<User> getAllUser();
    	public boolean delUser(Long id);
    	public User getUser(Long id);
    	public boolean updateUser(User user);
    	public List<User> getForPage(int offset, int length);
    	public Long getAllRowCount();
    }
    

      2) UserDao.java 实体类

       

    package com.tgb.web.controller.dao;
    import java.util.List;
    import org.hibernate.Query;
    import org.hibernate.SessionFactory;
    
    import com.tgb.web.controller.entity.User;
    
    public class UserDAO implements IUserDAO {
    
    	private SessionFactory sessionFactory;
    	public SessionFactory getSessionFactory() {
    		return sessionFactory;
    	}
    
    	public void setSessionFactory(SessionFactory sessionFactory) {
    		this.sessionFactory = sessionFactory;
    	}
    
    	@Override
    	public void addUser(User user) {
    		sessionFactory.getCurrentSession().save(user);
    	}
    
    	@Override
    	public List<User> getAllUser() {
    		String hql = "FROM User";
    		Query query =  sessionFactory.getCurrentSession().createQuery(hql);
    		return query.list();
    	}
    
    
    	@Override
    	public boolean delUser(Long id) {
    		String hql = "DELETE User u WHERE u.id=?";
    		Query query =  sessionFactory.getCurrentSession().createQuery(hql);
    		query.setString(0, String.valueOf(id));
    		
    		return (query.executeUpdate()>0);
    	}
    
    	@Override
    	public User getUser(Long id) {
    		String hql = "FROM User u WHERE u.id=?";
    		Query query =  sessionFactory.getCurrentSession().createQuery(hql);
    		query.setString(0, String.valueOf(id));
    		return (User)query.uniqueResult();
    	}
    
    	@Override
    	public boolean updateUser(User user) {
    		String hql = "UPDATE User u SET u.userName=? ,u.age=? WHERE u.id=?";
    		Query query =  sessionFactory.getCurrentSession().createQuery(hql);
    		query.setString(0, String.valueOf(user.getUserName()));
    		query.setString(1, String.valueOf(user.getAge()));
    		query.setString(2, String.valueOf(user.getId()));
    		
    		return (query.executeUpdate()>0);
    	}
    
    	@Override
    	public List<User> getForPage(int offset, int length) {
    		List<User> userList=null;
    		String hql = "FROM User";
    		Query query =  sessionFactory.getCurrentSession().createQuery(hql);
    		query.setFirstResult(offset);
            query.setMaxResults(length);
            userList=query.list();
            return userList;	      
    	}
    
    	@Override
    	public Long getAllRowCount() {
    		String hql = "SELECT COUNT(*) FROM User";
    		Query query = sessionFactory.getCurrentSession().createQuery(hql);
    		return Long.parseLong(query.uniqueResult().toString());
    	}
    
    }
    

    6. 建service层   

    service->IUserManager.java, UserManager.java

       1) IUserManager.java接口   

    package com.tgb.web.controller.service;
    
    import java.util.List;
    
    import com.tgb.web.controller.entity.Page;
    import com.tgb.web.controller.entity.User;
    
    public interface IUserManager {
    	public void addUser(User user);
    	public List<User> getAllUser();
    	public boolean delUser(Long id);
    	public User getUser(Long id);
    	public boolean updateUser(User user);
    	public Page getForPage(int offset, int length);
    	public Long getAllRowCount();
    }
    

     2) UserManager.java实现类   

    package com.tgb.web.controller.service;
    
    import java.util.List;
    
    import com.tgb.web.controller.dao.IUserDAO;
    import com.tgb.web.controller.entity.Page;
    import com.tgb.web.controller.entity.User;
    
    public class UserManager implements IUserManager{
    	private IUserDAO userDao;
    	
    	public IUserDAO getUserDao() {
    		return userDao;
    	}
    
    	public void setUserDao(IUserDAO userDao) {
    		this.userDao = userDao;
    	}
    
    	@Override
    	public void addUser(User user) {
    		userDao.addUser(user);		
    	}
    
    	@Override
    	public List<User> getAllUser() {
    		return userDao.getAllUser();
    	}
    
    	@Override
    	public boolean delUser(Long id) {
    		return userDao.delUser(id);
    	}
    
    	@Override
    	public User getUser(Long id) {
    		return userDao.getUser(id);
    	}
    
    	@Override
    	public boolean updateUser(User user) {
    		return userDao.updateUser(user);
    	}
    
    	@Override
    	public Page getForPage(int currentPage, int pageSize) {
    		Page page = new Page();
    		int allRow = userDao.getAllRowCount().intValue();
    		int offset = page.countOffset(currentPage, pageSize);
    		List<User> list= userDao.getForPage(offset, pageSize);
    		page.setPageNo(currentPage);
    		page.setPageSize(pageSize);
    		page.setTotalRecords(allRow);
    		page.setList(list);
    		return page;
    	}
    
    	@Override
    	public Long getAllRowCount() {
    		return userDao.getAllRowCount();
    	}
    }
    

    7. 建controller

     controller包下新建controller文件

     UserController.java

     

    package com.tgb.web.controller;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.tgb.web.controller.entity.Page;
    import com.tgb.web.controller.entity.User;
    import com.tgb.web.controller.service.IUserManager;
    
    @Controller
    @RequestMapping("/user")
    public class UserController {
    	@Resource(name="userManager")
    	private IUserManager userManager;
    	
    	@RequestMapping("/addUser")
    	public String addUser(User user){
    		userManager.addUser(user);
    		return "redirect:/user/getAllUsers";
    	}
    	@RequestMapping("/toAddUser")
    	public String toAddUser(){
    		return "/addUser";
    	}
    	
    	@RequestMapping("/delUser")
    	public void delUser(Long id,HttpServletResponse response){
    		String result = "{"result":"error"}";
    		if(userManager.delUser(id)){
    			result = "{"result":"success"}";
    		}
    		PrintWriter out = null;
    	    response.setContentType("application/json");
    	    try {
    	    	out=response.getWriter();
    	        out.write(result);
    	    } catch (IOException e) {
    	        e.printStackTrace();
    	    }
    	}
    	
    	@RequestMapping("/getAllUser")
    	public String getAllUser(HttpServletRequest request){
    		List<User> users = userManager.getAllUser();
    		request.setAttribute("users", users);
    		return "/userManager";
    	}
    	
    	@RequestMapping("/getAllUsers")
    	public String getAllUsers(HttpServletRequest request){
    		 try {
    	            String pageNo = request.getParameter("pageNo");
    	            if (pageNo == null) {
    	                pageNo = "1";
    	            }
    	            Page page = userManager.getForPage(Integer.valueOf(pageNo), 10);
    	            request.setAttribute("page", page);
    	            List<User> pageusers = page.getList();
    	            request.setAttribute("pageusers", pageusers);
    	        } catch (Exception e) {
    	            e.printStackTrace();
    	        }
    		return "/userManagerPage";
    	}
    	
    	@RequestMapping("/getUser")
    	public String getUser(Long id,HttpServletRequest request){
    		User user = userManager.getUser(id);
    		request.setAttribute("user", user);
    		return "/editUser";
    	}
    	
    	@RequestMapping("/updateUser")
    	public String updateUser(User user,HttpServletRequest request, HttpServletResponse response){
    		if(userManager.updateUser(user)){
    			return "redirect:/user/getAllUsers";
    		}
    		else{
    			return "error";
    		}
    		
    	
    	}
    	
    }
    

     8. 建显示层jsp文件  

    userManager.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
        <title>My JSP 'addUser.jsp' starting page</title>
        <script type="text/javascript">
    	   function del(id){
    		   $.get("/springMVCSSH2/user/delUser?id="+id,function(data){
    			   alert(data.result);
    			   if("success"==data.result){
    				   alert("删除成功");
    				   window.location.reload();
    			   }
    			   else{
    				   alert("删除失败");
    			   }
    		   });
    	   }	 
        </script>
      </head>  
      <body>
        <a href="/springMVCSSH2/user/toAddUser">添加用户</a>
    	<table border="1">
    		<tbody>
    			<tr>
    				<th>姓名</th>
    				<th>年龄</th>
    				<th>编辑</th>
    			</tr>
    			<c:if test="${!empty users }">
    			<c:forEach items="${users }" var="u">
    			<tr>
    				<td>${u.userName}</td>
    				<td>${u.age}</td>
    				<td>
    					<a href="/springMVCSSH2/user/getUser?id=${u.id}">编辑</a>
    					<a href="javascript:del('${u.id }')">删除</a>
    				</td>
    			</tr>
    			</c:forEach>
    			</c:if>
    		</tbody>
    	</table>
      </body>
    </html>
    

    addUser.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
        <title>My JSP 'addUser.jsp' starting page</title>
        <script type="text/javascript">
    	    function addUser(){
    	    	var form=document.forms[0];
    	    	form.action="/springMVCSSH2/user/addUser";
    	    	form.method="post";
    	    	form.submit();    	
    	    }    	
        </script>
      </head>  
      <body>
    	  <h> 添加用户 </h> <br>
    	  <form action="">
    	  	姓名: <input type="text" name="userName">
    	  	年龄: <input type="text" name="age">
    	  	<input type="button" value="添加" onClick="addUser()">
    	  </form>
       		
      </body>
    </html>
    

    editUser.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
        <title>My JSP 'addUser.jsp' starting page</title>
        <script type="text/javascript">
        function editUser(){
        	var form=document.forms[0];
        	form.action="/springMVCSSH2/user/updateUser";
        	form.method="post";
        	form.submit();    	
        }    
        </script>
      </head>  
      <body>
    	  <h> 修改用户 </h> <br>
    	  <form name="userForm" action="/springMVCSSH2/user/updateUser"  method="post">
    	  <%-- <form action="">--%>
    	  <input type="hidden" name="id" value="${user.id }">
    	  	姓名: <input type="text" name="userName" value="${user.userName }">
    	  	年龄: <input type="text" name="age" value="${user.age }">
    	  	<input type="submit" value="编辑">
    	  </form>
       		
      </body>
    </html>
    

      

    IE端访问:

    http://localhost:8080/springMVCSSH2/user/getAllUser
    

      

    分页的话, 在entity里新建Page.java

    package com.tgb.web.controller.entity;
    import java.util.List;
    
    public class Page<E> {
        // 结果集
        private List<E> list;
    
        // 查询记录总数
        private int totalRecords;
    
        // 每页多少条记录
        private int pageSize;
    
        // 第几页
        private int pageNo;
        
        /**
         * @return 总页数
         * */
        public int getTotalPages(){
            return (totalRecords+pageSize-1)/pageSize;
        }
        
        /**
         * 计算当前页开始记录
         * @param pageSize 每页记录数
         * @param currentPage 当前第几页
         * @return 当前页开始记录号
         */
        public int countOffset(int currentPage,int pageSize){
            int offset = pageSize*(currentPage-1);
            return offset;
        }
        
        /**
         * @return 首页
         * */
        public int getTopPageNo(){
            return 1;
        }
        
        /**
         * @return 上一页
         * */
        public int getPreviousPageNo(){
            if(pageNo<=1){
                return 1;
            }
            return pageNo-1;
        }
        
        /**
         * @return 下一页
         * */
        public int getNextPageNo(){
            if(pageNo>=getBottomPageNo()){
                return getBottomPageNo();
            }
            return pageNo+1;
        }
        
        /**
         * @return 尾页
         * */
        public int getBottomPageNo(){
            return getTotalPages();
        }
        
        
        public List<E> getList() {
            return list;
        }
    
        public void setList(List<E> list) {
            this.list = list;
        }
    
        public int getTotalRecords() {
            return totalRecords;
        }
    
        public void setTotalRecords(int totalRecords) {
            this.totalRecords = totalRecords;
        }
    
        public int getPageSize() {
            return pageSize;
        }
    
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
    
        public int getPageNo() {
            return pageNo;
        }
    
        public void setPageNo(int pageNo) {
            this.pageNo = pageNo;
        }
    
    }
    

    在UserDao.java里加入新方法

    @Override
    	public List<User> getForPage(int offset, int length) {
    		List<User> userList=null;
    		String hql = "FROM User";
    		Query query =  sessionFactory.getCurrentSession().createQuery(hql);
    		query.setFirstResult(offset);
            query.setMaxResults(length);
            userList=query.list();
            return userList;	      
    	}
    
    	@Override
    	public Long getAllRowCount() {
    		String hql = "SELECT COUNT(*) FROM User";
    		Query query = sessionFactory.getCurrentSession().createQuery(hql);
    		return Long.parseLong(query.uniqueResult().toString());
    	}
    

    UserManage.java里调用dao方法

    @Override
    	public Page getForPage(int currentPage, int pageSize) {
    		Page page = new Page();
    		int allRow = userDao.getAllRowCount().intValue();
    		int offset = page.countOffset(currentPage, pageSize);
    		List<User> list= userDao.getForPage(offset, pageSize);
    		page.setPageNo(currentPage);
    		page.setPageSize(pageSize);
    		page.setTotalRecords(allRow);
    		page.setList(list);
    		return page;
    	}
    
    	@Override
    	public Long getAllRowCount() {
    		return userDao.getAllRowCount();
    	}
    

    UserController里调用

    @RequestMapping("/getAllUsers")
    	public String getAllUsers(HttpServletRequest request){
    		 try {
    	            String pageNo = request.getParameter("pageNo");
    	            if (pageNo == null) {
    	                pageNo = "1";
    	            }
    	            Page page = userManager.getForPage(Integer.valueOf(pageNo), 10);
    	            request.setAttribute("page", page);
    	            List<User> pageusers = page.getList();
    	            request.setAttribute("pageusers", pageusers);
    	        } catch (Exception e) {
    	            e.printStackTrace();
    	        }
    		return "/userManagerPage";
    	}
    

      新建显示层jsp文件 UserManagerPage.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
        <title>My JSP 'addUser.jsp' starting page</title>
        <script type="text/javascript">
    	   function del(id){
    		   $.get("/springMVCSSH2/user/delUser?id="+id,function(data){
    			   alert(data.result);
    			   if("success"==data.result){
    				   alert("删除成功");
    				   window.location.reload();
    			   }
    			   else{
    				   alert("删除失败");
    			   }
    		   });
    	   }	 
        </script>
      </head>  
      <body>
        <a href="/springMVCSSH2/user/toAddUser">添加用户</a>
    	<table border="1">
    		<tbody>
    			<tr>
    				<th>姓名</th>
    				<th>年龄</th>
    				<th>编辑</th>
    			</tr>
    			<c:if test="${!empty pageusers }">
    			<c:forEach items="${pageusers }" var="u">
    			<tr>
    				<td>${u.userName}</td>
    				<td>${u.age}</td>
    				<td>
    					<a href="/springMVCSSH2/user/getUser?id=${u.id}">编辑</a>
    					<a href="javascript:del('${u.id }')">删除</a>
    				</td>
    			</tr>
    			</c:forEach>
    			</c:if>
    			<tr>
                <td colspan="6" align="center">共${page.totalRecords}条记录 共${page.totalPages}页 当前第${page.pageNo}页<br>
                    
                    <a href="/springMVCSSH2/user/getAllUsers?pageNo=${page.topPageNo }"><input type="button" name="fristPage" value="首页" /></a>
                    <c:choose>
                      <c:when test="${page.pageNo!=1}">
                        
                          <a href="/springMVCSSH2/user/getAllUsers?pageNo=${page.previousPageNo }"><input type="button" name="previousPage" value="上一页" /></a>
                        
                      </c:when>
                      <c:otherwise>
                        
                          <input type="button" disabled="disabled" name="previousPage" value="上一页" />
                        
                      </c:otherwise>
                    </c:choose>
                    <c:choose>
                      <c:when test="${page.pageNo != page.totalPages}">
                        <a href="/springMVCSSH2/user/getAllUsers?pageNo=${page.nextPageNo }"><input type="button" name="nextPage" value="下一页" /></a>
                      </c:when>
                      <c:otherwise>
                        
                          <input type="button" disabled="disabled" name="nextPage" value="下一页" />
                        
                      </c:otherwise>
                    </c:choose>
                    <a href="/springMVCSSH2/user/getAllUsers?pageNo=${page.bottomPageNo }"><input type="button" name="lastPage" value="尾页" /></a>
                </td>
            </tr>
    			
    		</tbody>
    	</table>
      </body>
    </html>
    

      

     

     

      

      

         

  • 相关阅读:
    如何优化软件测试成本?——转译
    Pytest(下篇)
    人与机器人如何协同来测试软件——译
    Appium自动化测试遇到的chromedriver/chrome坑
    Pytest(上篇)
    【selenium】利用selenium进行爬虫时,防止js检测驱动的方法
    【python】python分词和识别图像中的文字
    【python】Python获取QQ截图热键(ctrl+alt+a)截取的内容
    【python】pyinstaller如何将自己写的模块一并打包到exe中
    【python】python启动线程查看线程的名称和id;python杀掉进程的方法
  • 原文地址:https://www.cnblogs.com/wujixing/p/5614953.html
Copyright © 2020-2023  润新知