SpringMVC之AJAX带分页的增删改查

xiaoxiao2021-02-28  91

架包支持:

form.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script type="text/javascript"> //当前页 var curPage=0; //上一页 var prevPage=0; //下一页 var nextPage=0; //总页数 var pageCount=0; //总条数 var totalSize=0; //定义一个获取dom对象的方法 function $(id){ return document.getElementById(id); } //查询方法 function query(curP){ var ename=$("qename").value; //声明一个XMLHttpRequest变量并用兼容性的方法创建对象 var xhr; if(window.XMLHttpRequest){ //code for IE7+, Firefox, Chrome, Opera, Safari等等浏览器 xhr=new XMLHttpRequest(); }else{ //code for IE6, IE6 xhr=new ActiveXObject("Microsoft.XMLHTTP"); } /* xmlhttp.open() 参数1:请求的方式 参数2:请求的路径 参数3:true异步 false同步 */ xhr.open("POST","${pageContext.request.contextPath}/ajaxQuery2",true); // ajax会调用后台action回调该方法多次 // readyState 属性存有 XMLHttpRequest 的状态信息。 // 0:请求未初始化 // 1:服务器连接已建立 // 2:请求收接收 // 3:请求处理中 // 4:请求已完成,且响应已就绪 // 所以这里需要判断readyState等于4的时候再去获取json // 设置响应的回调函数 当后台的json返回后 自动调用xhr.onreadystatechange指定的函数 xhr.onreadystatechange=function(){ if(xhr.readyState==4 && xhr.status==200/*判断响应的状态码:200为响应正常*/){ //获取到json 当前的json是一个字符串 var sJson=xhr.responseText; //console.log(sJson); var pe = JSON.parse(sJson); //获取到list集合 var oJson = pe.data; //读取pe里的页信息 curPage=pe.curPage; prevPage=pe.prevPage; nextPage=pe.nextPage; pageCount=pe.pageCount; totalSize=pe.totalSize; $("curPage").innerText=curPage; $("pageCount").innerText=pageCount; $("totalSize").innerText=totalSize; //首先获取取table的dom对象 var oTbody = $("tbody"); oTbody.innerHTML=""; for(var i=0; i<oJson.length; i++){ var oTr = document.createElement("tr"); var oTb1 = document.createElement("td"); oTb1.innerHTML=oJson[i].ENO; var oTb2 = document.createElement("td"); oTb2.innerHTML=oJson[i].ENAME; var oTb3 = document.createElement("td"); oTb3.innerHTML=oJson[i].SAL; var oTb4 = document.createElement("td"); oTb4.innerHTML="<button οnclick=openUpdate("+oJson[i].ENO+",'"+oJson[i].ENAME+"',"+oJson[i].SAL+")>修改</button><button οnclick='del("+oJson[i].ENO+")'>删除</button>" oTr.appendChild(oTb1); oTr.appendChild(oTb2); oTr.appendChild(oTb3); oTr.appendChild(oTb4); oTbody.appendChild(oTr); } } } //send()需要传递参数的时候必须加上 // xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded") // 这句代码,不然send()的参数是无法传递的 xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xhr.send("ename="+ename+"&curPage="+curP); } //新增方法 function add(){ var oEname=$("addEname"); var oSal=$("addSal"); var url="${pageContext.request.contextPath}/ajaxAdd"; var param="ename="+oEname.value+"&sal="+oSal.value; ajaxSend(url,param,function(text){ if(text==1){ //alert("新增成功"); oEname.value=""; oSal.value=""; $("addDiv").style.display='none'; query(curPage); }else{ alert("新增失败"); } }); } //删除方法 function del(eno){ var url="${pageContext.request.contextPath}/ajaxDelete"; var param="eno="+eno; ajaxSend(url,param,function(text){ if(text==1){ //alert("删除成功"); query(curPage); }else{ alert("删除失败"); } }); } //打开修改DIV function openUpdate(eno, ename, sal){ $('updateDiv').style.display='block'; $('upate_eno').value=eno; $('upate_ename').value=ename; $('upate_sal').value=sal; } //修改方法 function toUpdate(){ var url="${pageContext.request.contextPath}/ajaxUpdate"; var oEno=$('upate_eno'); var oEname=$('upate_ename'); var oSal=$('upate_sal'); var param="eno="+oEno.value+"&ename="+oEname.value+"&sal="+oSal.value; ajaxSend(url,param,function(text){ if(text==1){ //alert("修改成功"); $('updateDiv').style.display='none'; oEno.value=""; oEname.value=""; oSal.value=""; query(curPage); }else{ alert("修改失败"); } }); } //ajax请求 function ajaxSend(url,param,callback){ //声明一个XMLHttpRequest变量并用兼容性的方法创建对象 var xhr; if(window.XMLHttpRequest){ //code for IE7+, Firefox, Chrome, Opera, Safari等等浏览器 xhr=new XMLHttpRequest(); }else{ //code for IE6, IE6 xhr=new ActiveXObject("Microsoft.XMLHTTP"); } /* xmlhttp.open() 参数1:请求的方式 参数2:请求的路径 参数3:true异步 false同步 */ xhr.open("POST",url,true); // ajax会调用后台action回调该方法多次 // readyState 属性存有 XMLHttpRequest 的状态信息。 // 0:请求未初始化 // 1:服务器连接已建立 // 2:请求收接收 // 3:请求处理中 // 4:请求已完成,且响应已就绪 // 所以这里需要判断readyState等于4的时候再去获取json // 设置响应的回调函数 当后台的json返回后 自动调用xhr.onreadystatechange指定的函数 // 如果xhr.send(param)要传送参数必需加上这句代码 xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xhr.onreadystatechange=function(){ if(xhr.readyState==4 && xhr.status==200/*判断响应的状态码:200为响应正常*/){ callback(xhr.responseText); } } xhr.send(param); } </script> </head> <body οnlοad="query(1)"> <form> <input type="text" id="qename" /> <input type="button" value="查询" οnclick="query(curPage)" /> <input type='button' value='新增' οnclick='document.getElementById("addDiv").style.display="block"'> </form> <table border="1" cellpadding="10" cellspacing="0"> <thead> <tr> <td>编号</td> <td>姓名</td> <td>薪水</td> <td>操作</td> </tr> </thead> <tbody id="tbody"> </tbody> </table> <input type="image" src="${pageContext.request.contextPath}/lesson05/image/1.gif" οnclick="query(1)"/> <input type="image" src="${pageContext.request.contextPath}/lesson05/image/2.gif" οnclick="query(prevPage)"/> 当前<span id="curPage"></span>页 共<span id="pageCount"></span>页 共<span id="totalSize"></span>条 <input type="image" src="${pageContext.request.contextPath}/lesson05/image/3.gif" οnclick="query(nextPage)"/> <input type="image" src="${pageContext.request.contextPath}/lesson05/image/4.gif" οnclick="query(pageCount)"/> <!-- 修改的div --> <div id="updateDiv" style="display:none;position: absolute;left: 35%;top: 40%;width: 300px;height:100px;background:linear-gradient(to bottom,skyblue,gray);border: 1px solid black;"> <input type='hidden' name='_method' value="put" /> <input id="upate_eno" type='hidden' /> ENAME: <input id="upate_ename" type='text'><Br/> SAL:       <input id="upate_sal" type='text' name='sal'><Br/> <input type='button' value='保存' οnclick=toUpdate() /> <input type='button' value="关闭" οnclick="document.getElementById('updateDiv').style.display='none'" /> </div> <!-- 新增的div --> <div id="addDiv" style="display:none;position: absolute;left: 35%;top: 40%;width: 300px;height:100px;background:linear-gradient(to bottom,skyblue,gray);border: 1px solid black;"> <input type="hidden" name="_method" value="post" /> ENAME:<input type='text' id='addEname'><br/> SAL:      <input type='text' id='addSal'><br/> <button οnclick="add()">增加</button> <input type='button' value="关闭" οnclick="document.getElementById('addDiv').style.display='none'"> </div> </body> </html>

web.xml:

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 加载spring.xml配置文件 --> <!-- spring 要使用springmvc的标签和国际化必须加载spring--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/spring.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- springmvc --> <filter> <filter-name>utf</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>utf</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>myencode</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <!-- servlet一般是不支持delete和put 所以要配置一个过滤器 --> <filter> <filter-name>hidden</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>hidden</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置action --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springmvc.xml</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.action</url-pattern> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

图片素材:

springmvc.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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd " > <!-- 扫描spring注解 --> <context:component-scan base-package="cn.et"></context:component-scan> <!-- 实体类注解的国际化 --> <bean id="myValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="validationMessageSource" ref="messageSource"></property> </bean> <!-- 名称必须使用 multipartResolver 因为spring容器使用名称注入 文件上传解析器--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="1048576"></property> </bean> <!-- 验证消息必须配置这个,不让验证消息不生效 <mvc:annotation-driven></mvc:annotation-driven>--> <mvc:annotation-driven></mvc:annotation-driven> <mvc:default-servlet-handler/> <mvc:annotation-driven validator="myValidator"> <!-- 配置消息转换器 --> <mvc:message-converters> <!-- 设置json转换消息转换器,并且设置supportedMediaTypes 否则抛出406 --> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <!-- 设置响应支持的类型 --> <value>text/html;charset=UTF-8</value> <!-- 设置请求body支持的类型 --> <value>application/x-www-form-urlencoded</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> <bean id="myConvetor" class="cn.et.springmvc.lesson02.message.MyMessageConvertor"> <property name="supportedMediaTypes"> <list> <!-- 设置响应支持的类型 --> <value>text/html;charset=UTF-8</value> <!-- 设置请求body支持的类型 --> <value>application/x-www-form-urlencoded</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> </beans>

spring.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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd "> <!-- 一定要放在spring.xml配置文件中 --> <!-- id的名字就是类最后面二个单词 以小写字母开头 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="/my"></property> </bean> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/lesson04/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 读取jdbc.properties文件 --> <context:property-placeholder location="classpath:/cn/et/springmvc/lesson05/emp/utils/jdbc.properties"></context:property-placeholder> <!-- 数据的连接 数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="url" value="${url}"></property> <property name="driverClassName" value="${driverClass}"></property> <property name="username" value="${account}"></property> <property name="password" value="${password}"></property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> </beans>

Action类:

package cn.et.springmvc.lesson05.emp.controller; import java.io.IOException; import java.io.OutputStream; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import cn.et.springmvc.lesson05.emp.entity.Emp; import cn.et.springmvc.lesson05.emp.service.EmpService; import cn.et.springmvc.lesson05.emp.utils.PageEntity; @Controller public class AjaxAction { @Autowired private EmpService service; /** * ajax请求跳转是没有用的,所以返回字节数组 * 表示将json转换为字节输出给响应流 * * @ResponseBody 这里修改了返回值,所以必须要加上这句代码 * 这里没有返回值,使用分页 * @return * @throws IOException */ @ResponseBody @RequestMapping(value="/ajaxQuery") public void ajaxQuery(String ename, String curPage, OutputStream os) throws IOException{ int intCurPage = Integer.parseInt(curPage); PageEntity pe = service.query(ename,intCurPage); //将数组、对象或者集合转换成字符串的json 再传给xhr对象 //把list集合转换成json字符串 String json = JSONObject.fromObject(pe).toString(); os.write(json.getBytes("UTF-8")); } /** * 新增 * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 * @param ename * @param sal * @param os * @throws IOException */ @RequestMapping(value="/ajaxAdd") public void ajaxAdd(String ename,String sal,OutputStream os) throws IOException{ try { service.add(ename, sal); os.write("1".getBytes("UTF-8")); } catch (Exception e) { os.write("0".getBytes("UTF-8")); } } /** * 删除 * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 * @throws IOException */ @RequestMapping(value="/ajaxDelete") public void ajaxDelete(String eno,OutputStream os) throws IOException{ try { service.delete(eno); os.write("1".getBytes("UTF-8")); } catch (Exception e) { os.write("0".getBytes("UTF-8")); } } /** * 修改 * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 * @throws IOException */ @RequestMapping(value="/ajaxUpdate") public void ajaxUpdate(Emp emp,OutputStream os) throws IOException{ try { service.update(emp); os.write("1".getBytes("UTF-8")); } catch (Exception e) { os.write("0".getBytes("UTF-8")); } } /** * 需要配置org.springframework.http.converter.json.MappingJackson2HttpMessageConverter * 才可以直接返回其它对象 * @param ename * @param curPage * @return * @throws IOException */ @ResponseBody @RequestMapping(value="/ajaxQuery2") public PageEntity ajaxQuery(String ename, String curPage) throws IOException{ int intCurPage = Integer.parseInt(curPage); PageEntity pe = service.query(ename,intCurPage); //将数组、对象或者集合转换成字符串的json 再传给xhr对象 //把list集合转换成json字符串 return pe; } }

dao接口:

package cn.et.springmvc.lesson05.emp.dao; import java.util.List; import java.util.Map; import cn.et.springmvc.lesson05.emp.entity.Emp; public interface EmpDao { /** * 查询总一共有多少符合条件的数据 * @param ename * @return */ public abstract int queryCount(String ename); /** * 通过用户名查询 * @param ename * @return */ public abstract List<Map<String, Object>> query(String ename); /** * 查询当前页的数据 * @param ename * @param start * @param end * @return */ public abstract List<Map<String,Object>> queryPage(String ename,int start, int end); /** * 新增 */ public abstract void add(String ename, String sal); /** * 删除 */ public abstract void delete(String eno); /** * 修改 */ public abstract void update(Emp emp); }

daoImpl实现类:

package cn.et.springmvc.lesson05.emp.dao.impl; import java.math.BigDecimal; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import cn.et.springmvc.lesson05.emp.dao.EmpDao; import cn.et.springmvc.lesson05.emp.entity.Emp; @Repository public class EmpDaoImpl implements EmpDao { @Autowired private JdbcTemplate jdbcTemplate; /** * 查询总条数 * @see cn.et.emp.dao.impl.EmpDao#query(java.lang.String) */ public int queryCount(String ename){ if(ename==null){ ename=""; } String sql="select count(rowid) as TC from emp2 where ename like '%"+ename+"%' "; Map map=jdbcTemplate.queryForMap(sql); return ((BigDecimal)map.get("TC")).intValue(); } /** * 查询 * @see cn.et.emp.dao.impl.EmpDao#query(java.lang.String) */ public List<Map<String,Object>> query(String ename){ List<Map<String,Object>> list = null; if(ename == null || ename == ""){ String sql = "select * from emp2"; list = jdbcTemplate.queryForList(sql); }else{ String sql = "select * from emp2 where ename like ?"; list = jdbcTemplate.queryForList(sql,"%"+ename+"%"); } return list; } /** * 查询当前页的数据 */ public List<Map<String,Object>> queryPage(String ename,int start, int end){ List<Map<String,Object>> list = null; if(ename == null || ename == ""){ String sql = "select * from (select e.*,rownum rn from emp2 e)" + " where rn between "+start+" and "+end; list = jdbcTemplate.queryForList(sql); }else{ String sql = "select * from (select e.*,rownum rn from emp2 e where ename like ?)" + " where rn between "+start+" and "+end; list = jdbcTemplate.queryForList(sql,"%"+ename+"%"); } return list; } /** * 新增 * @see cn.et.emp.dao.impl.EmpDao#add(java.lang.String, java.lang.String) */ public void add(String ename,String sal){ String sql = "insert into emp2 values((select nvl(max(eno),0)+1 from emp2),?,"+sal+")"; jdbcTemplate.update(sql, ename); } /** * 删除 * @see cn.et.emp.dao.impl.EmpDao#delete(java.lang.String) */ public void delete(String eno){ String sql = "delete from emp2 where eno="+eno; jdbcTemplate.update(sql); } /** * 修改 * @see cn.et.emp.dao.impl.EmpDao#update(en.et.emp.entity.Emp) */ public void update(Emp emp){ String sql = "update emp2 set ename=?,sal="+emp.getSal()+" where eno="+emp.getEno(); jdbcTemplate.update(sql, emp.getEname()); } }

service接口:

package cn.et.springmvc.lesson05.emp.service; import cn.et.springmvc.lesson05.emp.entity.Emp; import cn.et.springmvc.lesson05.emp.utils.PageEntity; public interface EmpService { /* 查询 * @see cn.et.emp.dao.impl.EmpDao#query(java.lang.String) */ public abstract PageEntity query(String ename,int curPage); /* 新增 * @see cn.et.emp.dao.impl.EmpDao#add(java.lang.String, java.lang.String) */ public abstract void add(String ename, String sal); /* 删除 * @see cn.et.emp.dao.impl.EmpDao#delete(java.lang.String) */ public abstract void delete(String eno); /* 修改 * @see cn.et.emp.dao.impl.EmpDao#update(en.et.emp.entity.Emp) */ public abstract void update(Emp emp); }

serviceImpl实现类:

package cn.et.springmvc.lesson05.emp.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.et.springmvc.lesson05.emp.dao.EmpDao; import cn.et.springmvc.lesson05.emp.entity.Emp; import cn.et.springmvc.lesson05.emp.service.EmpService; import cn.et.springmvc.lesson05.emp.utils.PageEntity; import cn.et.springmvc.lesson05.emp.utils.PageUtils; /** * 服务层掉用dao层的方法 * @author Administrator * */ @Service public class EmpServiceImpl implements EmpService { //自动装配 @Autowired private EmpDao dao; /* 查询 * @see cn.et.emp.dao.impl.EmpDao#query(java.lang.String) */ public PageEntity query(String ename,int curPage){ //获取到总条数 int total = dao.queryCount(ename); //再创建PageEntity实体类把当前页,每页显示多少条数据和总共多少条数据传进去 PageEntity pe = PageUtils.calc(curPage, 10, total); List list = dao.queryPage(ename, pe.getStartIndex(), pe.getEndIndex()); pe.setData(list); return pe; } /* 新增 * @see cn.et.emp.dao.impl.EmpDao#add(java.lang.String, java.lang.String) */ public void add(String ename,String sal){ dao.add(ename, sal); } /* 删除 * @see cn.et.emp.dao.impl.EmpDao#delete(java.lang.String) */ public void delete(String eno){ dao.delete(eno); } /* 修改 * @see cn.et.emp.dao.impl.EmpDao#update(en.et.emp.entity.Emp) */ public void update(Emp emp){ dao.update(emp); } public PageEntity query(String ename) { // TODO Auto-generated method stub return null; } }

utils工具包---PageEntity:

package cn.et.springmvc.lesson05.emp.utils; import java.util.List; public class PageEntity { /** * 数据库查询的总条数 */ private int totalSize; /** * 每页显示的条数 */ private int pageSize=10; /** * 总页数 * * totalSize=20 pageSize=10 * 最后公式:pageCount=(totalSize%pageSize==0?totalSize/pageSize:(totalSize/pageSize+1)) */ private int pageCount; /** * 当前页 */ private int curPage; /** * 上一页 * prevPage=curPage==1?curPage:curPage-1 */ private int prevPage; /** * 下一页 * 最后公式:nextPage=curPage<pageCount?curPage+1:curPage; */ private int nextPage; /** * * startIndex=(curPage-1)*pageSize+1 * endIndex=curPage*pageSize */ private int startIndex; private int endIndex; private List data; private String queryName; public String getQueryName() { return queryName; } public void setQueryName(String queryName) { this.queryName = queryName; } public int getTotalSize() { return totalSize; } public void setTotalSize(int totalSize) { this.totalSize = totalSize; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageCount() { return pageCount; } public void setPageCount(int pageCount) { this.pageCount = pageCount; } public int getCurPage() { return curPage; } public void setCurPage(int curPage) { this.curPage = curPage; } public int getPrevPage() { return prevPage; } public void setPrevPage(int prevPage) { this.prevPage = prevPage; } public int getNextPage() { return nextPage; } public void setNextPage(int nextPage) { this.nextPage = nextPage; } public int getStartIndex() { return startIndex; } public void setStartIndex(int startIndex) { this.startIndex = startIndex; } public int getEndIndex() { return endIndex; } public void setEndIndex(int endIndex) { this.endIndex = endIndex; } public List getData() { return data; } public void setData(List data) { this.data = data; } }

utils工具包---PageUtils:

package cn.et.springmvc.lesson05.emp.utils; public class PageUtils { /** * 计算上一页、下一页等... * @param curPage 当前页 * @param pageSize 每页显示的条数 * @param totalSize 数据库查询的总条数 * @return */ public static PageEntity calc(int curPage, int pageSize, int totalSize){ PageEntity pe = new PageEntity(); pe.setCurPage(curPage); pe.setPageSize(pageSize); pe.setTotalSize(totalSize); int pageCount=(totalSize%pageSize==0?totalSize/pageSize:(totalSize/pageSize+1)); int prevPage=curPage==1?curPage:curPage-1; int nextPage=curPage<pageCount?curPage+1:curPage; int startIndex=(curPage-1)*pageSize+1; int endIndex=curPage*pageSize; pe.setPageCount(pageCount); pe.setPrevPage(prevPage); pe.setNextPage(nextPage); pe.setStartIndex(startIndex); pe.setEndIndex(endIndex); return pe; } }

Entity实体类:

package cn.et.springmvc.lesson05.emp.entity; public class Emp { private String eno; private String ename; private String sal; public Emp(){} public Emp(String eno, String ename, String sal) { super(); this.eno = eno; this.ename = ename; this.sal = sal; } public String getEno() { return eno; } public void setEno(String eno) { this.eno = eno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getSal() { return sal; } public void setSal(String sal) { this.sal = sal; } }

jdbc.properties:

url=jdbc\:oracle\:thin\:@localhost\:1521\:orcl driverClass=oracle.jdbc.OracleDriver account=scott password=tiger

转载请注明原文地址: https://www.6miu.com/read-79513.html

最新回复(0)