JSP学习之------>JSP的查询和分页例子

简介: //这是index.jsp   编号: 姓名: 性别:男 女 日期: 到 搜索到结果:${map.

//这是index.jsp
 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 <form action="${pageContext.request.contextPath}/stu.do?p=search" method="post">
 
编号:<input type="text" name="sid">  <br>
 姓名:<input type=text name="sname">  <br>
 性别:<input type=radio name="sex" value=1>男
      <input type=radio name="sex" value=0>女 <br>
 
日期:<input type=text name="start"> 到
      <input type=text name="end">   <br>
      
     <input type="hidden" name="page"/>
      <input type=submit value='搜索'>
      <input type=reset  value='重置'>    
</form>
 
<c:if test="${not empty map}">
 搜索到结果:${map.sum}条,当前${map.page}/${map.count}页
 <hr>
 <table border="1" align="center" width="80%">
   <tr>
     <th>编号</th>
     <th>姓名</th>
     <th>性别</th>
     <th>出生</th>
   </tr>
   
  <c:forEach items="${map.list}" var="s">
    <tr align="center">
      <td>${s.sid}</td>
      <td>${s.sname}</td>
      <td>${s.sex==1?"男":"女"}</td>
      <td>
         <fmt:formatDate value="${s.sbirthday}" pattern="yyyy年MM月dd日"/>
      </td>
    </tr>
   </c:forEach>
 </table>
  <a href="${pageContext.request.contextPath}/stu.do?p=search&page=1">【首 页】</a>
  <a href="${pageContext.request.contextPath}/stu.do?p=search&page=${map.page+1 }">【下一页】</a>
  <a href="${pageContext.request.contextPath}/stu.do?p=search&page=${map.page-1 }">【上一页】</a>
  <a href="${pageContext.request.contextPath}/stu.do?p=search&page=${map.count }">【末 页】</a>
 
</c:if>

 
 
 
 
 
//这是servlet的代码
 

import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.Map;
 
import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
import com.dao.StuDAO;
 
public class StuServlet extends HttpServlet {
 
 int size = 3;
  StuDAO stuDAO = new StuDAO();
  
  @Override
  public void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
         request.setCharacterEncoding("utf-8");
   response.setContentType("text/html;charset=utf-8");
   PrintWriter out = response.getWriter();
   
   String p = request.getParameter("p");
   if (p.equals("search"))
    doSearch(request, response);
   
  }
 
 //分页查询
  public void doSearch(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
      //要显示页数
             String pageString = request.getParameter("page");
             int    page       = 1;
             if (pageString!=null && pageString.trim().length()>0)
                 page       = Integer.parseInt(pageString);
             
            
     //其它条件
            String sid  = request.getParameter("sid");
            String sname = request.getParameter("sname");
            String sex   = request.getParameter("sex");
            String start = request.getParameter("start");
            String end   = request.getParameter("end");
            
           //查
            Map map  = stuDAO.fenye(page, size, sid, sname, sex, start, end);
            request.setAttribute("map",  map);
             
           request.getRequestDispatcher("/index.jsp").forward(request, response);
             
 }
 
}


 

 
 
//这是dao层
 

import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
import com.db.DbUtil;
 import com.entity.Student;
 
public class StuDAO {
  DbUtil db = new DbUtil();
  
  /*
   * 
  *    select top 3 * from student where 1=1 and sname like ? and sid not in 
  *                      (select top 3 sid from student where 1=1 and sname like ? )
   * 
  *    select count(*) from student where 1=1 and ....
   */
  
  public Map fenye(Integer page,Integer size,String sid,String sname,String sex,String  start,String end){
   List  ifList = new ArrayList(); //条件
   List  list   = new ArrayList(); //结果 
  Map   map    = new HashMap();   //所有结果
      StringBuffer sb = new StringBuffer();
      
     if (sid!=null && sid.trim().length()>0)
      {
       sb.append(" and sid=?");
       ifList.add(Integer.parseInt(sid));
      }
      
     if (sname!=null && sname.length()>0){
       sb.append(" and sname like ?");
       ifList.add("%"+sname+"%");
      }
      
     if (sex!=null && sex.trim().length()>0){
         sb.append(" and sex=?");
         ifList.add(Integer.parseInt(sex));
      }
      
     if (start!=null && start.trim().length()>0){
       sb.append(" and sbirthday>=?");
       ifList.add(java.sql.Date.valueOf(start));
      }
      
     if (end!=null && end.trim().length()>0){
       sb.append(" and sbirthday<=?");
       ifList.add(java.sql.Date.valueOf(end));
      }
      //总条数
      String sqlCount = "select count(*) from student where 1=1 "+sb.toString();
        
     ResultSet rsCount = db.getRs(sqlCount, ifList.toArray());
      int sum = 0;
   try {
    rsCount.next();
    sum = rsCount.getInt(1);
   } catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
   }
      int      count    = sum%size==0?sum/size : sum/size+1;
      if (page<1) page = 1;
      if (page>count) page=count;
      
     String sqlList  = "select top "+size+" * from student where 1=1 "+sb.toString()+" and sid not in (select top "+(page-1)*size+" sid from student where 1=1 "+sb.toString()+")";
    
     System.out.println("count="+sqlCount);
      System.out.println("list="+sqlList);
      //这句代码很重要
      ifList.addAll(ifList);
      ResultSet rs = db.getRs(sqlList, ifList.toArray());
      try {
    while (rs!=null && rs.next()){
     Student stu = new Student();
     stu.setSid(rs.getInt("sid"));
     stu.setSname(rs.getString("sname"));
     stu.setSex(rs.getInt("sex"));
     stu.setSbirthday(rs.getDate("sbirthday"));
     list.add(stu);
     
     
    }
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
   map.put("page", page);
   map.put("size", size);
   map.put("count", count);
   map.put("list", list);
   map.put("sum", sum);
      
  return map;
  }
  
  
  
  //条件查询,不分页
  public List condition(String sid,String sname,String sex,String  start,String end)
  {
   List  ifList = new ArrayList(); //条件
   List  list   = new ArrayList(); //结果 
     StringBuffer sb = new StringBuffer("select * from student  where 1=1 ");
      if (sid!=null && sid.trim().length()>0)
      {
       sb.append(" and sid=?");
       ifList.add(Integer.parseInt(sid));
      }
      
     if (sname!=null && sname.length()>0){
       sb.append(" and sname like ?");
       ifList.add("%"+sname+"%");
      }
      
     if (sex!=null && sex.trim().length()>0){
         sb.append(" and sex=?");
         ifList.add(Integer.parseInt(sex));
      }
      
     if (start!=null && start.trim().length()>0){
       sb.append(" and sbirthday>=?");
       ifList.add(java.sql.Date.valueOf(start));
      }
      
     if (end!=null && end.trim().length()>0){
       sb.append(" and sbirthday<=?");
       ifList.add(java.sql.Date.valueOf(end));
      }
      
    
     ResultSet rs = db.getRs(sb.toString(), ifList.toArray());
      try {
    while (rs!=null && rs.next()){
     Student stu = new Student();
     stu.setSid(rs.getInt("sid"));
     stu.setSname(rs.getString("sname"));
     stu.setSex(rs.getInt("sex"));
     stu.setSbirthday(rs.getDate("sbirthday"));
     list.add(stu);
     
     
    }
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
      
     return list;
      
 }
  /**
   * @param args
   * jUnit
   */
  public static void main(String[] args) {
   // TODO Auto-generated method stub
   StuDAO  stuDAO = new StuDAO();
   /*List<Student> list = stuDAO.condition(null, "小", "1", null, null);
   for (Student student : list) {
    System.out.println(student.getSid()+"\t"+student.getSname()+"\t"+student.getSex());
   }*/
   
   stuDAO.fenye(1, 3, null, "小", null, null, null);
 
 }
 
}


相关文章
|
4月前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
6月前
|
SQL JSON Java
老程序员分享:Jsp分页实例
老程序员分享:Jsp分页实例
31 0
|
7月前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
Java 关系型数据库 MySQL
JSP 空教室查询管理系统yeclipse开发mysql数据库bs框架java编程jdbc
JSP 空教室查询管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
296 2
|
前端开发 Java
通用分页进阶之jsp之自定义标签
通用分页进阶之jsp之自定义标签
36 1
|
Java 关系型数据库 应用服务中间件
0009Java程序设计-jsp在线学习平台设计与实现
0009Java程序设计-jsp在线学习平台设计与实现
87 0
0009Java程序设计-jsp在线学习平台设计与实现
|
前端开发 Java 测试技术
JSP自定义通用分页详解(下)
JSP自定义通用分页详解(下)
73 0
|
SQL Java 关系型数据库
JSP自定义通用分页详解(上)
JSP自定义通用分页详解(上)
78 0
|
JavaScript Java 关系型数据库
ssm+jsp计算机视频学习网站
计算机视频学习网站是针对目前学校推广与交流学习的实际需求,从实际工作出发,对过去的在线学习存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。本系统结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用JAVA语言,结合SSM框架与Vue框架以及MYSQL数据库设计并实现的。计算机视频学习网站主要包括个人中心、用户管理、课程信息管理、浏览导航管理等多个模块。它帮助视频学习实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了学习数据资源,有效的减少了学
134 0
|
前端开发 JavaScript Java
【JavaWeb】手写一个Servlet+JSP+JavaBean分页
【JavaWeb】手写一个Servlet+JSP+JavaBean分页