论坛首页 Java企业应用论坛

也谈SqlServer分页之效率(二)

浏览 1783 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-16  

接下来是调用持久层的用于测试的Servlet:

1.调用直接HibernateAPI分页的Servlet:

java 代码
  1. package com.ligang.web.servlet;   
  2.   
  3. import java.io.IOException;   
  4. import java.util.List;   
  5.   
  6. import javax.servlet.RequestDispatcher;   
  7. import javax.servlet.ServletException;   
  8. import javax.servlet.http.HttpServlet;   
  9. import javax.servlet.http.HttpServletRequest;   
  10. import javax.servlet.http.HttpServletResponse;   
  11.   
  12. import com.ligang.persistence.IProduceDao;   
  13. import com.ligang.persistence.imp.ProduceDaoImp;   
  14. import com.ligang.service.Page;   
  15.   
  16. public class ProduceServlet extends HttpServlet {   
  17.   
  18.     @Override  
  19.     public void doGet(HttpServletRequest req, HttpServletResponse resp)   
  20.             throws ServletException, IOException {   
  21.         this.doPost(req, resp);   
  22.     }   
  23.     private static IProduceDao dao = new ProduceDaoImp();   
  24.        
  25.     public final static int pageSize = 10;   
  26.   
  27.     @Override  
  28.     public void doPost(HttpServletRequest req, HttpServletResponse resp)   
  29.             throws ServletException, IOException {   
  30.         String pageInfo = req.getParameter("page");   
  31.         long start=System.currentTimeMillis();   
  32.         int page = 1;   
  33.         if (pageInfo != null) {   
  34.             page = Integer.parseInt(pageInfo);   
  35.         }   
  36.         if (page < 1) {   
  37.             page = 1;   
  38.         }   
  39.         Page temp = new Page(this.dao.getTotalRecordCount(), this.pageSize,   
  40.                 page);   
  41.             req.setAttribute("page", temp);   
  42.         List ps = this.dao.getSubProduce(temp.getIndex(), pageSize);   
  43.         req.setAttribute("produces", ps);   
  44.         long end = System.currentTimeMillis();   
  45.         req.setAttribute("second", (end-start));   
  46.         RequestDispatcher rd = req.getRequestDispatcher("produce.jsp");   
  47.            
  48.         rd.forward(req, resp);   
  49.     }   
  50.   
  51. }   

2.调用使用Top关键字分页的存储过程Servlet:

java 代码
  1. package com.ligang.web.servlet;   
  2.   
  3. import java.io.IOException;   
  4. import java.util.List;   
  5.   
  6. import javax.servlet.RequestDispatcher;   
  7. import javax.servlet.ServletException;   
  8. import javax.servlet.http.HttpServlet;   
  9. import javax.servlet.http.HttpServletRequest;   
  10. import javax.servlet.http.HttpServletResponse;   
  11.   
  12. import com.ligang.persistence.IProduceDao;   
  13. import com.ligang.persistence.imp.ProduceDaoSQLServerProcedureImp;   
  14. import com.ligang.service.Page;   
  15.   
  16. public class SqlServerProcedureServlet  extends HttpServlet {   
  17.     public final static int pageSize = 10;   
  18.     @Override  
  19.     public void doGet(HttpServletRequest req, HttpServletResponse resp)   
  20.             throws ServletException, IOException {   
  21.         this.doPost(req, resp);   
  22.     }   
  23.     @Override  
  24.     public void doPost(HttpServletRequest req, HttpServletResponse resp)   
  25.             throws ServletException, IOException {   
  26.         String pageInfo = req.getParameter("page");   
  27.         long start=System.currentTimeMillis();   
  28.         int page = 1;   
  29.         if (pageInfo != null) {   
  30.             page = Integer.parseInt(pageInfo);   
  31.         }   
  32.         if (page < 1) {   
  33.             page = 1;   
  34.         }   
  35.         Page temp = new Page(this.dao.getTotalRecordCount(), this.pageSize,   
  36.                 page);   
  37.             req.setAttribute("page", temp);   
  38.         List ps = this.dao.getSubProduce(temp.getIndex(), pageSize);   
  39.         req.setAttribute("produces", ps);   
  40.         long end = System.currentTimeMillis();   
  41.         req.setAttribute("second", (end-start));   
  42.         RequestDispatcher rd = req.getRequestDispatcher("procedureProduce.jsp");   
  43.            
  44.         rd.forward(req, resp);   
  45.     }   
  46.     private static IProduceDao dao = new ProduceDaoSQLServerProcedureImp();   
  47. }   

3.调用RowNumber分页的Servlet:

java 代码
  1. package com.ligang.web.servlet;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.PrintWriter;   
  5. import java.util.List;   
  6.   
  7. import javax.servlet.RequestDispatcher;   
  8. import javax.servlet.ServletException;   
  9. import javax.servlet.http.HttpServlet;   
  10. import javax.servlet.http.HttpServletRequest;   
  11. import javax.servlet.http.HttpServletResponse;   
  12.   
  13. import com.ligang.persistence.IProduceDao;   
  14. import com.ligang.persistence.imp.ProduceDaoSQLImp;   
  15. import com.ligang.persistence.imp.ProduceDaoSQLServerProcedureImp;   
  16. import com.ligang.service.Page;   
  17.   
  18. public class SQLServerRowNumberProduceServlet extends HttpServlet {   
  19.   
  20.     public final static int pageSize = 10;   
  21.     @Override  
  22.     public void doGet(HttpServletRequest req, HttpServletResponse resp)   
  23.             throws ServletException, IOException {   
  24.         this.doPost(req, resp);   
  25.     }   
  26.     @Override  
  27.     public void doPost(HttpServletRequest req, HttpServletResponse resp)   
  28.             throws ServletException, IOException {   
  29.         String pageInfo = req.getParameter("page");   
  30.         long start=System.currentTimeMillis();   
  31.         int page = 1;   
  32.         if (pageInfo != null) {   
  33.             page = Integer.parseInt(pageInfo);   
  34.         }   
  35.         if (page < 1) {   
  36.             page = 1;   
  37.         }   
  38.         Page temp = new Page(this.dao.getTotalRecordCount(), this.pageSize,   
  39.                 page);   
  40.             req.setAttribute("page", temp);   
  41.         List ps = this.dao.getSubProduce(temp.getIndex(), pageSize);   
  42.         req.setAttribute("produces", ps);   
  43.         long end = System.currentTimeMillis();   
  44.         req.setAttribute("second", (end-start));   
  45.         RequestDispatcher rd = req.getRequestDispatcher("rowNumberProduce.jsp");   
  46.            
  47.         rd.forward(req, resp);   
  48.     }   
  49.     private static IProduceDao dao = new ProduceDaoSQLImp();   
  50.   
  51. }   

web.xml:

xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  5.     <servlet>  
  6.         <servlet-name>produceservlet-name>  
  7.         <servlet-class>  
  8.             com.ligang.web.servlet.ProduceServlet   
  9.         servlet-class>  
  10.     servlet>  
  11.     <servlet-mapping>  
  12.         <servlet-name>produceservlet-name>  
  13.         <url-pattern>/produceurl-pattern>  
  14.     servlet-mapping>  
  15.     <servlet>  
  16.         <servlet-name>operatorProduceservlet-name>  
  17.         <servlet-class>  
  18.             com.ligang.web.servlet.OperateProduceServlet   
  19.         servlet-class>  
  20.     servlet>  
  21.     <servlet-mapping>  
  22.         <servlet-name>operatorProduceservlet-name>  
  23.         <url-pattern>/produceOperatorurl-pattern>  
  24.     servlet-mapping>  
  25.     <servlet>  
  26.       <servlet-name>procedureservlet-name>  
  27.       <servlet-class>com.ligang.web.servlet.SqlServerProcedureServletservlet-class>  
  28.     servlet>  
  29.     <servlet-mapping>  
  30.       <servlet-name>procedureservlet-name>  
  31.       <url-pattern>/procedureurl-pattern>  
  32.     servlet-mapping>  
  33.       <servlet>  
  34.     <servlet-name>SQLServerRowNumberProduceServletservlet-name>  
  35.     <servlet-class>com.ligang.web.servlet.SQLServerRowNumberProduceServletservlet-class>  
  36.   servlet>  
  37.   
  38.   <servlet-mapping>  
  39.     <servlet-name>SQLServerRowNumberProduceServletservlet-name>  
  40.     <url-pattern>/rowNumberProduceurl-pattern>  
  41.   servlet-mapping>  
  42.   
  43.   
  44.     <welcome-file-list>  
  45.         <welcome-file>index.jspwelcome-file>  
  46.     welcome-file-list>  
  47. web-app>  
  48.   

用于显示结果的Jsp页面:procedureProduce.jsp

JSP代码
  1. <%@ page language="java" pageEncoding="utf-8"%>  
  2. <%@page import="com.ligang.service.Page"%>  
  3. <%@taglib uri="/WEB-INF/c-rt.tld" prefix="c"%>  
  4. <%@taglib uri="/WEB-INF/page.tld" prefix="page"%>  
  5. <html>  
  6.     <head>  
  7.         <title>proceduretitle>  
  8.     head>  
  9.     <body>  
  10.   
  11.         <page:page action="procedure"  
  12.             page="<%=(Page) request.getAttribute("page")%>" param="page" />  
  13.   
  14.                 
  15.         <c:out value="${second}">c:out>  
  16.         <hr>  
  17.         <table border="1" width="50%">  
  18.             <thead>  
  19.                 <td>  
  20.                     picture   
  21.                 td>  
  22.                 <td>  
  23.                     name   
  24.                 td>  
  25.                 <td>  
  26.                     price   
  27.                 td>  
  28.                 <td>  
  29.                     operator   
  30.                 td>  
  31.             thead>  
  32.             <c:if test="${!empty produces}">  
  33.                 <c:forEach var="elem" items="${produces}" >  
  34.                     <tr>  
  35.                         <td>  
  36.                             <a href="${elem.path}" target="_blank"><img  
  37.                                     src="${elem.path}" border="0"/>  
  38.                             a>  
  39.                         td>           
  40.                         <td>  
  41.                             <jsp:getProperty property="name" name="elem" />  
  42.                         td>  
  43.                         <td>  
  44.                             <jsp:getProperty property="price" name="elem" />  
  45.                         td>  
  46.                         <td>  
  47.                             <a  
  48.                                 href="produceOperator?id=${elem.id}&page=<%=((Page) request.getAttribute("page")).getCurrentPage()%>">deletea>  
  49.                         td>  
  50.                     tr>  
  51.                 c:forEach>  
  52.             c:if>  
  53.         table>  
  54.         <hr>  
  55.         <page:iteratorPage page="<%=(Page) request.getAttribute("page")%>"  
  56.             action="procedure" param="page" />  
  57.     body>  
  58. html>  

produce.jsp

jsp代码
  1. <%@ page language="java" pageEncoding="utf-8"%>  
  2. <%@page import="com.ligang.service.Page"%>  
  3. <%@page import="java.util.Enumeration"%>  
  4. <%@taglib uri="/WEB-INF/c-rt.tld" prefix="c"%>  
  5. <%@taglib uri="/WEB-INF/page.tld" prefix="hello"%>  
  6. <html>  
  7.     <head>  
  8.         <title>cursortitle>  
  9.     head>  
  10.     <body>  
  11.   
  12.         <hello:page action="produce"  
  13.             page="<%=(Page) request.getAttribute("page")%>" param="page" />  
  14.   
  15.                 
  16.         <c:out value="${second}">c:out>  
  17.         <hr>  
  18.         <table border="1" width="50%">  
  19.             <thead>  
  20.                 <td>  
  21.                     picture   
  22.                 td>  
  23.                 <td>  
  24.                     name   
  25.                 td>  
  26.                 <td>  
  27.                     price   
  28.                 td>  
  29.                 <td>  
  30.                     operator   
  31.                 td>  
  32.             thead>  
  33.             <c:if test="${!empty produces}">  
  34.                 <c:forEach var="elem" items="${produces}" >  
  35.                     <tr>  
  36.                         <td>  
  37.                             <a href="${elem.path}" target="_blank"><img  
  38.                                     src="${elem.path}" border="0"/>  
  39.                             a>  
  40.                         td>           
  41.                         <td>  
  42.                             <jsp:getP
</di>
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics