实现简单的门禁查询功能

目前对SSH框架、ajax等技术不熟,现在用jsp+servlet+javaBean实现简单的门禁查询功能,数据库用SQLserver2005  数据库名:XQMJ

文件:DoorEvent.java(javabean);

        doorAction.java(servlet);

        DoorConnDB;

    doorManager.jsp;

    doorQuery.jsp

需要注意几点:

1、在查询条件选择时,select中选项直接从数据库中取得rs.next, 可以用ajax优化

2、查询数据库时,同时用到2张表,用union连接;注意查询条件的判断

3、数据不是很多,实现了一个假分页,直接把查询的结果放在ArrayList中,然后对其分页

4、页面使用局部刷新,用到了iframe,注意子窗口获取父窗口的数据

5、注意js向servlet传值和jsp向servlet传值时字符编码问题(中文乱码)

DoorAction
DoorEvent
DoorConnDB
doorManger.jsp
doorQuery.jsp

之二(用jstl标签+pager-taglib分页+导出Excel表格(POI控件))

文件包括;

DoorEvent
package com.sino.ibms.model;

import java.util.Date;

public class DoorEvent {
private Date EA_InsertDateTime;
private String EA_Co_Name;
private String EA_Pe_Code;
private String EA_Pe_FirstName;
private String EA_Pe_De_Name;
private String EA_eventName;
public Date getEA_InsertDateTime() {
    return EA_InsertDateTime;
}
public void setEA_InsertDateTime(Date eA_InsertDateTime) {
    EA_InsertDateTime = eA_InsertDateTime;
}
public String getEA_Co_Name() {
    return EA_Co_Name;
}
public void setEA_Co_Name(String eA_Co_Name) {
    EA_Co_Name = eA_Co_Name;
}

public String getEA_Pe_FirstName() {
    return EA_Pe_FirstName;
}
public void setEA_Pe_FirstName(String eA_Pe_FirstName) {
    EA_Pe_FirstName = eA_Pe_FirstName;
}
public String getEA_Pe_De_Name() {
    return EA_Pe_De_Name;
}
public void setEA_Pe_De_Name(String eA_Pe_De_Name) {
    EA_Pe_De_Name = eA_Pe_De_Name;
}
public String getEA_eventName() {
    return EA_eventName;
}
public void setEA_eventName(String eA_eventName) {
    EA_eventName = eA_eventName;
}
public String getEA_Pe_Code() {
    return EA_Pe_Code;
}
public void setEA_Pe_Code(String eA_Pe_Code) {
    EA_Pe_Code = eA_Pe_Code;
}
    
}
DoorAction
package com.sino.ibms.action;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

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

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import com.sino.ibms.action.DoorConnDB;
import com.sino.ibms.model.DoorEvent;

@SuppressWarnings("serial")
public class DoorAction extends HttpServlet {

    /**
     * Constructor of the object.
     */
    public DoorAction() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);

    }

    @SuppressWarnings({ "static-access", "deprecation" })
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        ArrayList<DoorEvent> list = new ArrayList<DoorEvent>();

        String cname = new String(request.getParameter("cname").getBytes(
                "ISO-8859-1"), "utf-8");
        String pename = new String(request.getParameter("pename").getBytes(
                "ISO-8859-1"), "utf-8");
        String eventname = new String(request.getParameter("eventname")
                .getBytes("ISO-8859-1"), "utf-8");
        String btime = request.getParameter("btime");
        String etime = request.getParameter("etime");

        String flag = request.getParameter("flag");

        String sql = "select  EA_InsertDateTime,EA_Co_Name,EA_eventName,EA_Pe_FirstName,EA_Pe_Code,EA_Pe_DE_Name from dbo.AIC_Access_EventMessageDataAccess where 1=1   ";
        if (cname != null && !"ALL".equals(cname)) {
            sql += " and EA_Co_Name=N'" + cname + "'";
        }

        if (!"".equals(pename) && !"ALL".equals(pename)) {
            sql += " and EA_Pe_FirstName=N'" + pename + "'";
        }
        if (pename.equals("")) {
            sql += "  and EA_Pe_FirstName is null";
        }

        if (eventname != null && !"ALL".equals(eventname)) {
            sql += "  and EA_eventName=N'" + eventname + "'";
        }

        if ((btime != null) && (!"".equals(btime))) {
            sql += "  and convert(datetime,'" + btime
                    + "') <= convert(datetime,EA_InsertDateTime)";
        }
        if ((etime != null) && (!"".equals(etime))) {
            sql += " and convert(datetime,'" + etime
                    + "') >= convert(datetime,EA_InsertDateTime)";
        }

        sql += "  order by EA_InsertDateTime desc";
        DoorConnDB db = new DoorConnDB();
        ResultSet rs = db.executestatement(sql);
        if (flag.equals("toQuery")) {

            try {

                while (rs.next()) {
                    DoorEvent de = new DoorEvent();
                    de.setEA_InsertDateTime(rs.getTimestamp(1));
                    de.setEA_Co_Name(rs.getString(2));
                    de.setEA_eventName(rs.getString(3));
                    de.setEA_Pe_FirstName(rs.getString(4));
                    de.setEA_Pe_Code(rs.getString(5));
                    de.setEA_Pe_De_Name(rs.getString(6));
                    list.add(de);
                }
                // request.getSession().setAttribute("list", list);
                request.setAttribute("list", list);
                request.setAttribute("cname", cname);
                request.setAttribute("pename", pename);
                request.setAttribute("eventname", eventname);
                request.setAttribute("btime", btime);
                request.setAttribute("etime", etime);
                RequestDispatcher rd = request
                        .getRequestDispatcher("/page/door/doorQuery.jsp");
                rd.forward(request, response);
            } catch (Exception e) {
            }
        } else {
            try {
                // 获取总列数
                int CountColumnNum = rs.getMetaData().getColumnCount();
                int i = 1;
                // 创建Excel文档
                HSSFWorkbook wb = new HSSFWorkbook();
                // sheet 对应一个工作页
                HSSFSheet sheet = wb.createSheet("巡更表中的数据");
                HSSFRow firstrow = sheet.createRow(0); // 下标为0的行开始
                HSSFCell[] firstcell = new HSSFCell[CountColumnNum];
                String[] names = new String[CountColumnNum];
                names[0] = "钮号";
                names[1] = "人员";
                names[2] = "地点";
                names[3] = "巡检时间";
                names[4] = "棒号";
                names[5] = "事件";
                for (int j = 0; j < CountColumnNum; j++) {
                    firstcell[j] = firstrow.createCell((short) j);
                    firstcell[j].setCellValue(new HSSFRichTextString(names[j]));
                }
                while (rs.next()) {
                    // 创建电子表格的一行
                    HSSFRow row = sheet.createRow(i); // 下标为1的行开始
                    for (int j = 0; j < CountColumnNum; j++) {
                        // 在一行内循环
                        HSSFCell cell = row.createCell((short) j);
                        // 设置表格的编码集,使支持中文
                        // // 先判断数据库中的数据类型
                        // 将结果集里的值放入电子表格中
                        cell.setCellValue(new HSSFRichTextString(rs
                                .getString(j + 1)));
                    }
                    i++;
                }

                response.setHeader("Content-Disposition",
                        "attachment;filename=xungeng.xls");
                response.setHeader("Content-Type", "application/vnd.ms-excel");

                wb.write(response.getOutputStream());
                System.out.println("数据库导出成功");

            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    }

    public void init() throws ServletException {
        // Put your code here
    }

}
DoorlistAction
package com.sino.ibms.action;

import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;

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

import com.sino.ibms.model.DoorEvent;

public class DoorListAction extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    /**
     * Constructor of the object.
     */
    public DoorListAction() {
        super();
    }

    
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }

    @SuppressWarnings("static-access")
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        ArrayList<DoorEvent> cNamelist = new ArrayList<DoorEvent>();
        ArrayList<DoorEvent> pelist = new ArrayList<DoorEvent>();
        ArrayList<DoorEvent> eventlist = new ArrayList<DoorEvent>();
        DoorConnDB db = new DoorConnDB();
        String sql1 = "select distinct EA_Co_Name from AIC_Access_EventMessageDataAccess";
        String sql2 = "select distinct EA_Pe_FirstName from AIC_Access_EventMessageDataAccess";
        String sql3 = "select distinct EA_eventName from AIC_Access_EventMessageDataAccess";
        ResultSet rs1 = db.executestatement(sql1);
        ResultSet rs2 = db.executestatement(sql2);
        ResultSet rs3 = db.executestatement(sql3);
        try {

            while (rs1.next()) {
                DoorEvent de1 = new DoorEvent();
                de1.setEA_Co_Name(rs1.getString(1));
                cNamelist.add(de1);
            }
            while (rs2.next()) {
                DoorEvent de2 = new DoorEvent();
                de2.setEA_Pe_FirstName(rs2.getString(1));
                pelist.add(de2);
            }
            while (rs3.next()) {
                DoorEvent de3 = new DoorEvent();
                de3.setEA_eventName(rs3.getString(1));
                eventlist.add(de3);
            }

            request.setAttribute("cNamelist", cNamelist);
            request.setAttribute("pelist", pelist);
            request.setAttribute("eventlist", eventlist);
            RequestDispatcher rd = request
                    .getRequestDispatcher("/page/door/doorManager.jsp");
            rd.forward(request, response);
        } catch (Exception e) {
            System.out.println("网络连接出现故障");
            RequestDispatcher rd = request
                    .getRequestDispatcher("/error.jsp");
            rd.forward(request, response);
        } finally {
            db.dbclose();
        }
    }

    public void init() throws ServletException {
        // Put your code here
    }

}
DoorConnDB
package com.sino.ibms.action;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DoorConnDB {
    public static  Connection con=null;
    public static  ResultSet rs=null;
    public static Connection getConn() throws SQLException{
        try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=NewAICDatabase";
        con=DriverManager.getConnection(url,"sa","123456");
        
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return con;
    }
    
    public static ResultSet executestatement(String sql){
        
        try {
             con=getConn();
             rs=con.prepareStatement(sql).executeQuery();
        
        } catch (SQLException e) {
            System.out.print("数据库查询处出现问题");
            e.printStackTrace();
        }
        return rs;
    }
    
      public static  void dbclose()
      {
          try {
              if(rs!=null){
                  rs.close();
              }
              if(con!=null){
                  con.close();
              }
        } catch (SQLException e) {
            // TODO 自动生成 catch 块
            e.printStackTrace();
        
        }
    
      }
    /*  example
      @SuppressWarnings("deprecation")
        public static void main(String []args){
            
            String sql="select top 20 EA_InsertDateTime,EA_Co_Name,EA_eventName,EA_Pe_FirstName,EA_Pe_Code,EA_Pe_DE_Name from dbo.AIC_Access_EventMessageDataAccess where EA_Pe_Code is not null and EA_Pe_DE_Name is not null";
            ResultSet r1=executestatement(sql);
            try {
                while(r1.next())
                {
                    
                //    System.out.print(r1.getTimestamp(1).toLocaleString()+"  "+r1.getDate(1)+" "+r1.getTime(1)+" "+r1.getString(2)+" "+r1.getString(3)+" "+r1.getString(4)+" "+r1.getString(5)+"教育发展大厦"+"\n");
                System.out.println(r1.getTimestamp(1).toLocaleString()+" "+r1.getString(2)+" "+r1.getString(3)+" "+r1.getString(4)+" "+r1.getString(5)+" "+r1.getString(6));
                }
                
                String now=new Date().toLocaleString();
                System.out.println(now);
            } catch (SQLException e) {
                // TODO 自动生成 catch 块
                e.printStackTrace();
            }
            finally{
                dbclose();
                
            }
        }
      */
      
}
doorManager.jsp
<%@ page language="java" import="java.util.*,com.sino.ibms.model.*"
    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">
<SCRIPT type="text/javascript" src="/namidoor/js/My97DatePicker/WdatePicker.js"></SCRIPT>
</head>

<body>
    <form method="post" target="door" action="" name="dbform">
        
        <table width="100%">
            <tr>
                <td>
                    <table align="center">
                        <tr class="f2_tr">
                            <td>起始时间:</td>
                            <td><input type="text" class="Wdate" name="btime"
                                id="btime" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
                                readonly="readonly" /> </td>
                            <td>结束时间:</td>
                            <td><input type="text" class="Wdate" name="etime"
                                id="etime" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
                                readonly="readonly" /></td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td>
                    <table align="center">
                        <tr class="f2_tr" align="left">
                            <td>控制器名:</td>
                            <td>
                            <select name="cname" id="cname">
                            <option value="ALL">全部</option>
                        <c:forEach items="${cNamelist}" var="cl">
                            <option value="${cl.EA_Co_Name}">${cl.EA_Co_Name}</option>
                        </c:forEach>
                         </select>
                            </td>
                            <td>人员姓名:</td>
                            <td>
                            <select name="pename" id="pename">
                            <option value="ALL">全部</option>
                        <c:forEach items="${pelist}" var="pl">
                            <option value="${pl.EA_Pe_FirstName}">${pl.EA_Pe_FirstName}</option>
                        </c:forEach>
                         </select>
                            </td>
                            <td>事件:</td>
                            <td>
                            <select name="eventname" id="eventname">
                            <option value="ALL">全部</option>
                        <c:forEach items="${eventlist}" var="el">
                            <option value="${el.EA_eventName}">${el.EA_eventName}</option>
                        </c:forEach>
                             </select>
                            </td>
                            <td><input type="submit" value="查询" class="button" onclick="checkaction(0)"/>
                            <input type="submit" value="导出报表" class="button"  onclick="checkaction(1)"/>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
        
            <table width="100%">
                <tr>
                    <td height="500px"><iframe
                            src="<%=request.getContextPath()%>/page/door/doorQuery.jsp"
                            name="door" width="100%" frameborder="0" marginheight="0"
                            marginwidth="0" height="500px"></iframe></td>
                </tr>
            </table>
        
    </form>
</body>
<script type="text/javascript">
function checkaction(v){
if(v==0){
document.dbform.action="DoorAction?flag=toQuery";
}else{
document.dbform.action="DoorAction?flag=toExcel";
}
dbform.submit();
} 
</script>
</html>
doorQuery
<%@ page language="java" import="java.util.*,com.sino.ibms.model.*"
    pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
    request.setCharacterEncoding("utf-8");
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'doorQuery.jsp' starting page</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">

</head>
<body>
<div align="center">
    <pg:pager url="DoorAction" index="center" maxPageItems="10"
        maxIndexPages="10" isOffset="<%=false%>"
        export="pageOffset,currentPageNumber=pageNumber" scope="request">
        <pg:param name="cname" value="${cname}"/>
        <pg:param name="pename" value="${pename}"/>
        <pg:param name="eventname" value="${eventname}"/>
        <pg:param name="btime" value="${btime}"/>
        <pg:param name="etime" value="${etime}"/>
        <pg:param name="flag" value="toQuery"/>
        <table class="mainTable" border="1px" width="800px" align="center" style="border-collapse:collapse">
            <tr>
                <th>时间</th>
                <th>控制器名称</th>
                <th>事件名称</th>
                <th>人员</th>
                <th>人员编号</th>
                <th>部门</th>
            </tr>
            <c:if test="${empty list}">
                <tr>
                    <td colspan="6" align="center"><font color="red">无相关数据</font>
                    </td>
                </tr>
            </c:if>
            <c:if test="${!empty list}">
                <c:forEach items="${list}" var="list">
                    <pg:item>
                        <tr>
                    <td><fmt:formatDate value="${list.EA_InsertDateTime}" pattern="yyyy-MM-dd hh:mm:ss"/> </td>
                            <td>${list.EA_Co_Name}</td>
                            <td>${list.EA_eventName}</td>
                            <td>${list.EA_Pe_FirstName}</td>
                            <td>${list.EA_Pe_Code}</td>
                            <td>${list.EA_Pe_De_Name}</td>
                        </tr>
                    </pg:item>
                </c:forEach>
            </c:if>
        </table>

        <pg:index>
            <pg:first>
                <a href="<%=pageUrl%>">首页</a>
            </pg:first>
            <pg:prev>
                <a href="<%=pageUrl%>">上一页</a>
            </pg:prev>
            <pg:pages>
                <c:choose>
                    <c:when test="${pageNumber eq currentPageNumber}">
                        <font color="red">[<%=pageNumber%>]</font>
                    </c:when>
                    <c:otherwise>
                        <a href="<%=pageUrl%>"><%=pageNumber%></a>
                    </c:otherwise>
                </c:choose>
            </pg:pages>
            <pg:next>
                <a href="<%=pageUrl%>">下一页</a>
            </pg:next>
            <pg:last>
                <a href="<%=pageUrl%>">尾页</a>
            </pg:last>
            
        共${fn:length(list)}条记录
    </pg:index>
    </pg:pager>
</div>
</body>
</html>
error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
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>My JSP 'error.jsp' starting page</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">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
  
  <body>
   <h1>网络连接故障</h1> <br>
  </body>
</html>
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
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>My JSP 'index.jsp' starting page</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">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
  
  <body>
<form action="DoorListAction" method="post">
 <input type="submit" value="提交" class="button" />
</form>
  </body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    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_3_0.xsd">
  <display-name></display-name>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>DoorAction</servlet-name>
    <servlet-class>com.sino.ibms.action.DoorAction</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>DoorListAction</servlet-name>
    <servlet-class>com.sino.ibms.action.DoorListAction</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>DoorAction</servlet-name>
    <url-pattern>/DoorAction</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>DoorListAction</servlet-name>
    <url-pattern>/DoorListAction</url-pattern>
  </servlet-mapping>
      
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
原文地址:https://www.cnblogs.com/zouteng/p/2662202.html