jsp 利用c标签的begin end 属性进行分页查询

当只是查询某一张表的时候,如果想要显示在页面上,但是查询的结果多的话,就涉及到分页查询

也就是:

 String sql="select * from person_info limit ?,?";   

但是:

如果查询的是多张表,把各张表中需要的数据混合在一起放在一个集合里面,然后在页面上显示的时候,上面方法视乎不管用了;

我们可以利用

<c:forEach items="${list}" var="i" varStatus="j" begin="${begin }" end="${end}" step="1">

</c:forEach>

begin是循环集合的开始索引

end 是循环集合的长度

step是一步一步的迭代

以下是jsp  利用c标签的begin end 属性进行分页查询的代码

思路:

1.BMI_Servlet

1.1查询多张表:

例如需要A表中的第一列,B表中的第二列,C表中的第三列,把需要的这些数据用info封装起来

1.2新建一个封装类info;

1.3new一个info类型的集合,把以上数据添加到集合里面

1.4、把集合传递到BMI_During这个servlet里面

2.BMI_During

这个判断下一页、上一页的 调转到jsp页面的

3.jsp页面

jsp页面的begin 和 end都是变量

例子说明:

我要查询yh表中的number、xl、lpower、upower,根据yh表中的info查询person_info表中的name;

把name、 number、xl、lpower、upower,封装在一个类StringSeven里面

然后再把StringSeven添加到集合里面;

在页面上5条5条的显示内容

BMI_Servlet代码如下:

package cn.com.servlet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.com.jdbc.JdbcUtils_DBCP;
import cn.com.pack.StringSeven;
public class BMI_Servlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request, response);
	}

	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//第一阶段
              //查询数据库里面有的心率血压指标
		//查询数据库有心率血压而且不重复的编号,
		String sql="SELECT DISTINCT number FROM yh WHERE xl<>'255' AND xl<>'0' AND lpower<>'255'";
		//使用连接
		//初始化
		Connection conn=null;
		PreparedStatement st=null;
		ResultSet rs=null;
		List<String> list=new ArrayList<String>();
		//分页查询
		int cp=0;
		int count_page=0;
		try {
		//与数据库建立连接
			conn=JdbcUtils_DBCP.getConnection();
			st=conn.prepareStatement(sql);
			rs=st.executeQuery();
			//把结果集放在一个集合里面,因为涉及多个rs的时候尤其是彼此之间有关联,最好分开,以免出错导致连接不能释放,数据库连接数满
			while(rs.next()){
				cp++;
				String number=rs.getString(1);
				list.add(number);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			//关闭连接
			JdbcUtils_DBCP.release(conn, st, rs);
		}
		//第二阶段	
		//根据num查询心率血压
		//使用连接
				//初始化
				Connection conn1=null;
				PreparedStatement st1=null;
				ResultSet rs1=null;
				//初始化
				Connection conn2=null;
				PreparedStatement st2=null;
				ResultSet rs2=null;
				String name=null;
				String xl=null;
				String lpower=null;
				String upower=null;
				String time=null;
				List<StringSeven> String_sex=new ArrayList<StringSeven>();
		for (String i : list) {
			String sql1="SELECT * FROM yh WHERE number='"+i+"' AND xl<>'255' AND xl<>'0' AND lpower<>'255' ORDER BY TIME DESC LIMIT 1";
			//如果到了最后一页的时候,
			//与数据库建立连接
			try {
				conn1=JdbcUtils_DBCP.getConnection();
				st1=conn1.prepareStatement(sql1);
				rs1=st1.executeQuery();
				while(rs1.next()){
				xl=rs1.getString(3);	
				lpower=rs1.getString(4);	
				upower=rs1.getString(5);	
				time=rs1.getString(8);
				//注意给numbet添加0
				if(i.length()==1){
					i="000"+i;
				}else if(i.length()==2){
					i="00"+i;
				}else if(i.length()==3){
					i="0"+i;
				}
				//根据编号查询名称
				String sqls="select name from person_info where number='"+i+"'";
				conn2=JdbcUtils_DBCP.getConnection();
				st2=conn2.prepareStatement(sqls);
				rs2=st2.executeQuery();
				if(rs2.next()){
					name=rs2.getString(1);
				}
				}
				
				StringSeven sex=new StringSeven(name, i, xl, lpower, upower, time);
				String_sex.add(sex);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				JdbcUtils_DBCP.release(conn2, st2, rs2);
				JdbcUtils_DBCP.release(conn1, st1, rs1);
				
			}
			
			
		}
		//最后一个阶段 封装 跳转界面
		count_page=(cp/5)+1;
		HttpSession session =request.getSession();
        session.setAttribute("list", String_sex);
        session.setAttribute("count_page", count_page);
        session.setAttribute("cp", cp);
		response.sendRedirect("/Socket/BMI_During");
		
		
	
	}



}

BMI_During代码如下:

package cn.com.servlet;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import cn.com.pack.StringSeven;
public class BMI_During extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
        doPost(request, response);
	
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//获取集合
		HttpSession session =request.getSession();	
		@SuppressWarnings("unchecked")
		List<StringSeven> list=(List<StringSeven>) session.getAttribute("list");
        session.setAttribute("list", list);
        //获取总页数
        int count_page=(int) session.getAttribute("count_page");
        //获取数据的条数
        int cp=(int) session.getAttribute("cp");
        int end =0;
		System.out.println("count_page:"+count_page);
		System.out.println(cp);
		 String begin=request.getParameter("begin");
		 if(begin==null){
			 begin="0";
		 }else{
			 int b=Integer.parseInt(begin);
			 end=b+4;
			 if(b<=0){
				 begin="0"; 
				 end=4;
			 }
              if(end>cp){
				end=end-cp; 
			 }
			 if(end<=cp){
				end=b+4; 
				 }
			 if(end<0){
				 begin="0"; 
				 end=4; 
			 }
		 }
		 
	     request.setAttribute("begin", begin);	
	     request.setAttribute("end", end);	
		 request.getRequestDispatcher("Scheduling.jsp").forward(request, response);

	}

	
}

jsp页面如下:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>华金矿业-调度统计</title>
    <!-- 首页 -->
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<link rel="stylesheet" type="text/css" href="css/index.css">
	<link rel="stylesheet" type="text/css" href="css/Personnel_definition.css">
	<script type="text/javascript">
	function hide(){
    var id=document.getElementById("center_img");
    var name=id.getAttribute("name");
	var left=document.getElementById("center-left");
	if(name=="block"){
	left.setAttribute("style", "display:none;");
	id.setAttribute("name", "none");
	}if(name=="none"){
	left.setAttribute("style", "display:block;");
	id.setAttribute("name", "block");
	}
	}
	function display(a){
	var elements=[];
	//获得所有的li标签
	var list=document.getElementsByTagName("li");
	var len=list.length;//获得长度
	//把class=sub-menu的li都放在集合里面
	for(var i=0;i<len;i++){
          if(list[i].className== "sub-menu"){
          elements[elements.length]=list[i];
                                            }
	                     } 
	/*把所有的隐藏  */
	for(var i=0;i<elements.length;i++){
	//获得下面的ul
	   var ul=elements[i].childNodes[3];
	   /* 设置属性为隐藏 */
	   ul.setAttribute("style","display:none");
	   /* 点击当前元素的Ul设置可见 */
	                                }    
	                                /* 对所有的input背景颜色设置 */
	   var tree=document.getElementsByName("tree"); 
	   for(var i=0;i<tree.length;i++){
	   tree[i].setAttribute("style", "background-color:#E1F1FD;");
	             }                                              
	   var input=document.getElementById(a);
	   input.setAttribute("style", "background-color:#5094D6;");
	   var ula=input.parentNode;
	   var lla=ula.childNodes;
	   for(var i=0;i<lla.length;i++){
       if(lla[i].nodeName=='UL'){
	    lla[i].setAttribute("style","display:block");
	                    }
	                                   }
	}
	/*获取当前的日期和时间  */
	function tm(){
	var today = new Date();
	var year=today.getFullYear();
	var month=today.getMonth()+1;
	var day=today.getDay();
	var tm=year+"年"+month+"月"+day+"日"+"  "+today.getHours() + ":"     
+ today.getMinutes() + ":" + today.getSeconds();  ;
	var rq=document.getElementById("rq");
	rq.innerHTML=tm;
	}
	
	</script>
	<script type="text/javascript">
	function checktime() {
		var stime=document.getElementById("stime").value;
		var etime=document.getElementById("etime").value;
		var submit=document.getElementById("submit");
		if(stime!=null&&etime!=null&&stime!=""&&etime!=""){
		submit.setAttribute("type","submit");
		document.getElementById("error_info").innerHTML="";
		}else{
		submit.setAttribute("type","button");
		document.getElementById("error_info").innerHTML="开始时间和结束时间不能为空";
		}
	}
	
	

	</script>
  </head>
  <body onload="tm();">
  <jsp:include page="common.jsp" />
<div id="center-right">
<!--  人员信息界面-->
<form action="/Socket/Attendance_Search" method="post">
<br>
</form>
<br>
<div id="peo_info">
<table  style="width: 80%;" id="tab">
<tr><td>编号</td><td>姓名</td><td>心率</td><td>低压</td><td>高压</td><td>时间</td></tr>
<c:forEach items="${list}" var="i" varStatus="j" begin="${begin }" end="${end}" step="1">
<tr><td>${i.num}</td><td>${i.name}</td><td>${i.sbs}</td><td>${i.stime}</td><td>${i.ebs}</td><td>${i.etime}</td></tr>
</c:forEach>
<tr><td colspan="2"><a href="/Socket/BMI_During?begin=${begin-5 }">上一页</a></td><td colspan="2">第${cpage}页</td><td colspan="2"><a href="/Socket/BMI_During?begin=${begin+5 }">下一页</a></td></tr>
</table>
</div>
</div>
<!--  遍历数据库里面的集合-->
</div>
  <!--下  -->
<div id="bottom">
诚信安天下-------铜陵力凡有限责任公司
</div>
  </body>
  <style>
  #peo_info{
background-color:#e2e7ea;
width:88%;
height: 78%;
position: relative;
margin-left: 23px;
padding-top: 35px;
}
#tab{
border-spacing:5px;
font-size: 12px;
border: 2px solid white;
border-collapse:collapse;
margin-left: 9%;
background-color: #0f1059;
color: white;
}
#tab td{
width: 5%;
text-align: center;
border-bottom: 1px solid white;
border-right:1px solid white;
}
  </style>
  <script type="text/javascript">
  var my=document.getElementById("tjn");
	 //1:拿到select对象:

    //2:拿到选中项的索引:
    var index=my.selectedIndex ; // selectedIndex代表的是你所选中项的index
    //3:拿到选中项options的value: 
    var ss=my.options[index].text;
    document.getElementById("part").value=ss;
  </script>
</html>

效果如下:

猜你喜欢

转载自blog.csdn.net/qq_37591637/article/details/83243115