jsp单页面数据库查询模板:支持分页、排序、简单搜索、设置每页显示页数功能

5 篇文章 0 订阅

show.jsp(显示页面)

[java]  view plain  copy
 print ?
  1. <%@page import="java.sql.ResultSet"%>  
  2. <%@page import="java.sql.PreparedStatement"%>  
  3. <%@page import="analysis.JDBCUtils"%>  
  4. <%@page import="java.sql.Connection"%>  
  5. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  6. <%  
  7. String path = request.getContextPath();  
  8. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  9. %>  
  10.   
  11. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  12. <html>  
  13.   <head>  
  14.     <base href="<%=basePath%>">  
  15.       
  16.     <title>My JSP 'show.jsp' starting page</title>  
  17.       
  18.     <meta http-equiv="pragma" content="no-cache">  
  19.     <meta http-equiv="cache-control" content="no-cache">  
  20.     <meta http-equiv="expires" content="0">      
  21.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  22.     <meta http-equiv="description" content="This is my page">  
  23.     <!--  
  24.     <link rel="stylesheet" type="text/css" href="styles.css">  
  25.     -->  
  26.   
  27.   </head>  
  28.     
  29.   
  30.     
  31.   <body>  
  32.     <form action="servlet/DatabaseSearch" method="post">  
  33.             <td> 输入搜索词 <input type="text" name="keyWord"></td>  
  34.             <td><input type="submit" value="so easy" ></td>  
  35.     </form>  
  36.     <hr>  
  37.     <form action="servlet/DatabaseProcess" method="post">  
  38.      功能列表 : <a href="servlet/DatabaseProcess?choose=1&subchoose1=0">默认排序</a>  
  39.             <a href="servlet/DatabaseProcess?choose=1&subchoose1=1">按价格降序排序</a>  
  40.             <a href="servlet/DatabaseProcess?choose=1&subchoose1=2">按价格升序排序</a>  
  41.      价格区间<input  style="width:45px" type="text" name="minprice">-<input style="width:45px" type="text" name="maxprice">  
  42.      <input type="submit" value="Go" >  
  43.      </form>  
  44.     <hr><br>  
  45.       
  46.     <!--   <tr><td>商品名称</td><td>价格</td><td>超链接</td></tr> -->  
  47.       <%  
  48.         String temp = null;  
  49.         String keyWord = (String) request.getSession().getAttribute("keyword");  
  50.         //haven't input keyword  
  51.         if(keyWord == null || keyWord.equals("")){  
  52.             %><h2><font color="red">no keyword input</font></h2><%  
  53.             return;  
  54.         }   
  55.           
  56.         //the lack of the select sentence is for the easy use of the follow sql query  
  57.         String sql = " from goods where name like '%"+keyWord+"%'";  
  58.           
  59.           
  60.         //determin where is price in  
  61.         String sqlBetween = "";  
  62.         String minprice = (String)request.getSession().getAttribute("minprice");  
  63.         String maxprice = (String)request.getSession().getAttribute("maxprice");          
  64.         if(minprice!=null&&maxprice!=null){  
  65.             sqlBetween = " and price>="+minprice+" and price<="+maxprice+" ";  
  66.         }  
  67.           
  68.       
  69.           
  70.         //determine which orderby to choose  
  71.         String sqlOrderBy = "";  
  72.         if((temp=(String)request.getSession().getAttribute("orderby"))!=null&&!temp.equals("0")){  
  73.             if(temp.equals("1")){  
  74.                 sqlOrderBy = " order by price desc";  
  75.             }  
  76.             else if(temp.equals("2")){  
  77.                 sqlOrderBy = " order by price asc";  
  78.             }  
  79.         }  
  80.           
  81.           
  82.         //get the pagesize  
  83.         int myPageSize = 5;//default  
  84.         if(request.getSession().getAttribute("mypagesize")!=null){  
  85.             myPageSize = (Integer)request.getSession().getAttribute("mypagesize");  
  86.             //System.out.println("myPageSize:"+myPageSize);  
  87.         }  
  88.           
  89.         //determine which page to show  
  90.         String sqlLimit = "";  
  91.         String t = null;  
  92.         if((t=(String)request.getAttribute("page"))==null){  
  93.             sqlLimit = " limit "+myPageSize+" offset 0";  
  94.         }  
  95.         else{  
  96.             sqlLimit = " limit "+myPageSize+" offset " +(Integer.parseInt(t)-1)*5;  
  97.         }  
  98.   
  99.           
  100.           
  101.         Connection conn = JDBCUtils.getConnection();  
  102.         System.out.println("select * "+sql+sqlBetween+sqlOrderBy+sqlLimit);//for debug  
  103.         PreparedStatement ps = conn.prepareStatement("select * "+sql+sqlBetween+sqlOrderBy+sqlLimit);  
  104.         ResultSet rs = ps.executeQuery();     
  105.         while(rs.next()){  
  106.   
  107.     %>  
  108.    
  109.     商品名称  <font color="red"><u><%=rs.getString("name") %></u></font><br>  
  110.     价格 <font color="green"> <b><%=rs.getInt("price") %></b></font><br>  
  111.     超链接  <a target="_blank" href="<%=rs.getString("url") %>"><%=rs.getString("url") %></a><br><br>  
  112.   
  113.     <%} %>  
  114.     <%  
  115.         int sum = 0;//record the sum of the records  
  116.         ps = conn.prepareStatement("select count(*) as sum "+sql+sqlBetween);  
  117.         rs = ps.executeQuery();  
  118.         if(rs.next()){  
  119.             sum = Integer.parseInt(rs.getString("sum"));  
  120.         }  
  121.           
  122.           // no suitable records  
  123.          if(sum==0){  
  124.             %><h2><font  color="red">no suitable records</font></h2><%   
  125.             return ;  
  126.          }  
  127.               
  128.             
  129.      %>  
  130.      <hr>  
  131.         <form action="servlet/Temp" method="get" name="form1">  
  132.         <select name="rn" οnchange="form1.submit()">  
  133.         <option value="0">请选择每页显示的记录数</option>  
  134.         <option value="5">每页显示5条</option>  
  135.         <option value="10">每页显示10条</option>  
  136.         <option value="20">每页显示20条</option>  
  137.         </select>  
  138.        
  139.         totally <font color="red"><%=sum %></font>  records . goto page  
  140.      <%   
  141.             //show five records per page  
  142.             for(int i=1;i<Math.ceil(sum)/myPageSize+1;i++)  
  143.             {   
  144.                 //high light show the current page  
  145.                 if(t!=null&&i==Integer.parseInt(t)){  
  146.                 %>  
  147.                 <a style="color:red" href="servlet/DatabaseProcess?choose=2&subchoose2=<%=i%>"><%=i%></a>  
  148.                 <%   
  149.                 continue;  
  150.                 }  
  151.      %>  
  152.          <a href="servlet/DatabaseProcess?choose=2&subchoose2=<%=i%>"><%=i%></a>  
  153.     <%} %>  
  154.       
  155.             </form>  
  156.               
  157.   
  158.   
  159.   </body>  
  160. </html>  
DatabaseProcess.java(只是简单的设置下属性)

[java]  view plain  copy
 print ?
  1. package view;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. public class DatabaseProcess extends HttpServlet {  
  11.   
  12.     /** 
  13.      *  
  14.      */  
  15.     private static final long serialVersionUID = 5826464111080351766L;  
  16.   
  17.   
  18.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  19.             throws ServletException, IOException {  
  20.         doProcess(request, response);  
  21.     }  
  22.   
  23.   
  24.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  25.             throws ServletException, IOException {  
  26.         doProcess(request, response);  
  27.     }  
  28.       
  29.   
  30.     public void doProcess(HttpServletRequest request, HttpServletResponse response)  
  31.             throws ServletException, IOException {  
  32.         String choose = request.getParameter("choose");  
  33.         //System.out.println("choose=["+choose+"]");  
  34.         if(choose!=null){  
  35.             if(choose.equals("1")){  
  36.                 String subchoose1 = request.getParameter("subchoose1");  
  37.                 request.getSession().setAttribute("orderby", subchoose1);  
  38.                 //System.out.println("subchoose1=["+subchoose+"]");  
  39.             }  
  40.             else if(choose.equals("2")){  
  41.                 String subchoose2 = request.getParameter("subchoose2");  
  42.                 //System.out.println("subchoose2=["+subchoose2+"]");  
  43.                 request.setAttribute("page", subchoose2);//需要从第一页开始输出,所以不能用session  
  44.             }  
  45.         }  
  46.   
  47.           
  48.         String minprice = request.getParameter("minprice");  
  49.         String maxprice = request.getParameter("maxprice");  
  50.           
  51.         if(minprice!=null&&maxprice!=null&&minprice!=""&&maxprice!=""){  
  52.             //System.out.println(minprice+"-"+maxprice);  
  53.               
  54.             if(Integer.parseInt(minprice)>=Integer.parseInt(maxprice))  
  55.                 System.out.println("the minprice and the maxprice input error");  
  56.             else{  
  57.                 request.getSession().setAttribute("minprice",minprice);//价格区间是持续存在的  
  58.                 request.getSession().setAttribute("maxprice",maxprice);  
  59.             }  
  60.   
  61.         }  
  62.           
  63.         getServletContext().getRequestDispatcher("/show.jsp").forward(request, response);  
  64.   
  65.     }  
  66.   
  67. }  

DatabaseSearch.java(只是简单的设置下属性)
[java]  view plain  copy
 print ?
  1. package view;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class DatabaseSearch extends HttpServlet {  
  12.   
  13.     /** 
  14.      *  
  15.      */  
  16.     private static final long serialVersionUID = 4110448813797919251L;  
  17.   
  18.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  19.             throws ServletException, IOException {  
  20.         doQuery(request,response);  
  21.     }  
  22.   
  23.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  24.             throws ServletException, IOException {  
  25.         doQuery(request,response);  
  26.     }  
  27.       
  28.     public void doQuery(HttpServletRequest request, HttpServletResponse response)  
  29.             throws ServletException, IOException {  
  30.         response.setCharacterEncoding("gbk");  
  31.         String keyWord = new String(request.getParameter("keyWord").getBytes("ISO-8859-1"),"UTF-8");  
  32.         //System.out.println("keyword=["+keyWord+"]");  
  33.         request.getSession().setAttribute("keyword", keyWord);  
  34.           
  35.         //清除以往的price区间  
  36.         if(request.getSession().getAttribute("minprice")!=null){  
  37.             request.getSession().setAttribute("minprice",null);  
  38.         }  
  39.         if(request.getSession().getAttribute("maxprice")!=null){  
  40.             request.getSession().setAttribute("maxprice",null);  
  41.         }  
  42.         //清除以往的排序定义  
  43.         if(request.getSession().getAttribute("orderby")!=null){  
  44.             request.getSession().setAttribute("orderby",null);  
  45.         }  
  46.           
  47.           
  48.           
  49.         getServletContext().getRequestDispatcher("/show.jsp").forward(request, response);  
  50.         //response.sendRedirect("../show.jsp");//该方法无法传递attribute  
  51.   
  52.     }  
  53.   
  54. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值