1.实现DAO
在employeeDAO添加一个方法
selectEmployeeByNameStatus()方法
关键是对空值的处理,如何生成正确的sql语句
新增方法
/**
* 方法六:
* 根据姓名、用户名、状态, 查询所有员工信息,返回到集合中。
* @param employeename
* @param username
* @param status
* @return
*/
public List<Employee> selectEmployeesByNameStatus(String employeename,String username,String status){
conn=ConnectionFactory.getConnection();
List<Employee> employeeslist=new ArrayList<Employee>();
Employee employee=null;
try {
PreparedStatement st=null;
String sql=null;
String usernamesql,employeenamesql,statussql;
//如果名字是null的,或者什么都没有
if(employeename==null||employeename.equals("")){
//就将员工名sql设置为空
employeenamesql="";
}else{
//如果有,就把参数传进去
employeenamesql=" and employeename='"+employeename+"'";
}
//下面是同理
if(username==null||username.equals("")){
usernamesql="";
}else{
usernamesql=" and username='"+username+"'";
}
if(status==null||status.equals("")||status.equals("3")){
statussql="";
}else{
statussql=" and status='"+status+"'";
}
//role为2的是员工,把所有员工都查出来
sql="select * from Employee where role='2' "+usernamesql+employeenamesql+statussql;
st = conn.prepareStatement(sql);
ResultSet rs =st.executeQuery(sql);
while(rs.next()){
employee=new Employee();
employee.setEmployeeid(rs.getInt("employeeid"));
employee.setEmployeename(rs.getString("employeename"));
employee.setUsername(rs.getString("username"));
employee.setPhone(rs.getString("phone"));
employee.setEmail(rs.getString("email"));
employee.setStatus(rs.getString("status"));
employee.setDepartmentid(rs.getInt("departmentid"));
employee.setPassword(rs.getString("password"));
employee.setRole(rs.getString("role"));
employeeslist.add(employee);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
ConnectionFactory.closeConnection();
}
return employeeslist;
}
方法测试:
2.实现查询功能
为了能够统一,所有的业务逻辑都放在service里
service会调用dao的方法
然后servlet又会调用service里的方法
修改employeeservice类
/**
* 调用DAO的方法
* @param employeename
* @param username
* @param status
* @return
*/
public List<Employee> searchEmployees(String employeename,String username,String status){
return dao.selectEmployeesByNameStatus(employeename, username, status);
}
修改新增SearchEmployeeServlet
package com.meeting.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.meeting.dao.EmployeeDAO;
import com.meeting.service.EmployeeService;
import com.meeting.vo.Employee;
public class SearchEmployeesServlet 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 employeename = request.getParameter("employeename");
String username = request.getParameter("username");
String status = request.getParameter("status");
//调用业务逻辑,得到结果集,存到请求中,跳转到JSP页面的过程
EmployeeService service = new EmployeeService();
//调用searchEmployee
List<Employee> list = service.searchEmployees(employeename, username, status);
//得到一个集合赋给Employeelist,然后把它存到searchemployees.jsp
request.setAttribute("employeesList", list);
//这里存了个属性为1的search
request.setAttribute("search", "1");
request.getRequestDispatcher("searchemployees.jsp").forward(request, response);
}
}
新增searchemployee.jsp
<%@ page language="java" import="java.util.*,com.meeting.vo.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>CoolMeeting会议管理系统</title>
<link rel="stylesheet" href="styles/common03.css"/>
<style type="text/css">
</style>
</head>
<body>
<div class="page-content">
<div class="content-nav">
会议预定 >搜索员工
</div>
<form method="post" action="SearchEmployeesServlet">
<fieldset>
<legend>搜索员工</legend>
<table class="formtable">
<tr>
<td>姓名:</td>
<td>
<input type="text" id="employeename" name="employeename" value="${param.employeename}" maxlength="20"/>
</td>
<td>账号名:</td>
<td>
<input type="text" id="username" name="username" value="${param.username}" maxlength="20"/>
</td>
<td>状态:</td>
<td>
<c:if test="${param.status eq null or param.status eq 3}">
<input type="radio" id="status" name="status" value="1" /><label>已批准</label>
<input type="radio" id="status" name="status" value="0"/><label>待审批</label>
<input type="radio" id="status" name="status" value="2"/><label>已关闭</label>
<input type="radio" id="status" name="status" value="3"/ checked><label>所有</label>
</c:if>
<c:if test="${param.status eq '1'}">
<input type="radio" id="status" name="status" value="1" checked/><label>已批准</label>
<input type="radio" id="status" name="status" value="0"/><label>待审批</label>
<input type="radio" id="status" name="status" value="2"/><label>已关闭</label>
<input type="radio" id="status" name="status" value="3"/><label>所有</label>
</c:if>
<c:if test="${param.status eq '0'}">
<input type="radio" id="status" name="status" value="1" /><label>已批准</label>
<input type="radio" id="status" name="status" value="0" checked/><label>待审批</label>
<input type="radio" id="status" name="status" value="2"/><label>已关闭</label>
<input type="radio" id="status" name="status" value="3"/><label>所有</label>
</c:if> <c:if test="${param.status eq '2'}">
<input type="radio" id="status" name="status" value="1" /><label>已批准</label>
<input type="radio" id="status" name="status" value="0"/><label>待审批</label>
<input type="radio" id="status" name="status" value="2" checked/><label>已关闭</label>
<input type="radio" id="status" name="status" value="3"/><label>所有</label>
</c:if>
</td>
</tr>
<tr>
<td colspan="6" class="command">
<input type="submit" class="clickbutton" value="查询"/>
<input type="reset" class="clickbutton" value="重置"/>
</td>
</tr>
</table>
</fieldset>
</form>
<c:if test="${requestScope.search eq 1 }">
<div>
<h3 style="text-align:center;color:black">查询结果</h3>
<div class="pager-header">
<div class="header-info">
共<span class="info-number">54</span>条结果,
分成<span class="info-number">6</span>页显示,
当前第<span class="info-number">1</span>页
</div>
<div class="header-nav">
<input type="button" class="clickbutton" value="首页"/>
<input type="button" class="clickbutton" value="上页"/>
<input type="button" class="clickbutton" value="下页"/>
<input type="button" class="clickbutton" value="末页"/>
跳到第<input type="text" id="pagenum" class="nav-number"/>页
<input type="button" class="clickbutton" value="跳转"/>
</div>
</div>
</div>
<table class="listtable">
<tr class="listheader">
<th>姓名</th>
<th>账号名</th>
<th>联系电话</th>
<th>电子邮件</th>
<th>操作</th>
</tr>
<c:forEach var="emp" items="${requestScope.employeesList}">
<tr>
<td>${emp.employeename}</td>
<td>${emp.username}</td>
<td>${emp.phone}</td>
<td>${emp.email}</td>
<c:if test="${emp.status eq '2' }">
<td>
账号已关闭
</td>
</c:if>
<c:if test="${emp.status ne '2' }">
<td>
<a class="clickbutton" href="ApproveServlet?employeeid=${emp.employeeid}&employeename=${param.employeename}&username=${param.username}&status=${param.status}&oper=close">关闭账号</a>
</td>
</c:if>
</tr>
</c:forEach>
</table>
</div>
</c:if>
<div class="page-footer">
<hr/>
更多问题,欢迎联系<a href="mailto:webmaster@eeg.com">管理员</a>
<img src="images/footer.png" alt="CoolMeeting"/>
</div>
</body>
</html>
修改web.xml
这里记得在adminleft那加上链接
3.关闭账号
不小心关闭浏览器,写的东西没有了- -
使用employeeid来关闭用户,就是把状态变为2
1.修改ApproveServlet
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//得到需要审批的员工id
int employeeid=Integer.parseInt(request.getParameter("employeeid"));
//用oper来知道审批的操作是通过还是不通过
String oper =request.getParameter("oper");
EmployeeDAO dao=new EmployeeDAO();
if(oper!=null&&oper.equals("yes")){
//通过
dao.updateStatus(employeeid,"1");
request.getRequestDispatcher("ViewAllEmployeesServlet?code=approve").forward(request, response);
}
if(oper!=null&&oper.equals("no")){
//不通过
dao.updateStatus(employeeid,"2");
request.getRequestDispatcher("ViewAllEmployeesServlet?code=approve").forward(request, response);
}
if(oper!=null&&oper.equals("close")){
dao.updateStatus(employeeid,"2");
//根据现在的状态,重新做了一次查询
request.getRequestDispatcher("SearchEmployeesServlet").forward(request, response);
}
}
点击关闭账号
数据库中状态变为2