1
package com.attendance.bean;
public class Department {
//set.get.构造方法无参+有参,toString
private String departmentId;// 部门编号
private String departmentName;// 部门名称
private String name;// 负责人
private String totalUser;// 总人数
private String createTime;// 创建时间
private String manager;
public Department() {
// TODO Auto-generated constructor stub
}
public Department(String departmentId, String departmentName, String name, String totalUser, String createTime,
String manager) {
super();
this.departmentId = departmentId;
this.departmentName = departmentName;
this.name = name;
this.totalUser = totalUser;
this.createTime = createTime;
this.manager = manager;
}
public String getDepartmentId() {
return departmentId;
}
public void setDepartmentId(String departmentId) {
this.departmentId = departmentId;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTotalUser() {
return totalUser;
}
public void setTotalUser(String totalUser) {
this.totalUser = totalUser;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getManager() {
return manager;
}
public void setManager(String manager) {
this.manager = manager;
}
@Override
public String toString() {
return "Department [departmentId=" + departmentId + ", departmentName=" + departmentName + ", name=" + name
+ ", totalUser=" + totalUser + ", createTime=" + createTime + ", manager=" + manager + "]";
}
}
2
package com.attendance.bean;
/**
*
* @author 用户信息
*/
public class UserInfoBean {
private String id;
private String account;
private String password;
private String name;
private String departmentId;
private String sex;
private String birthday;
private String mobile;
private String email;
private String usertype;
private String create_time;
private String mylevel;
private String state;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartmentId() {
return departmentId;
}
public void setDepartmentId(String departmentId) {
this.departmentId = departmentId;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUsertype() {
return usertype;
}
public void setUsertype(String usertype) {
this.usertype = usertype;
}
public String getCreate_time() {
return create_time;
}
public void setCreate_time(String create_time) {
this.create_time = create_time;
}
public String getMylevel() {
return mylevel;
}
public void setMylevel(String mylevel) {
this.mylevel = mylevel;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
@Override
public String toString() {
return "UserInfoBean [id=" + id + ", account=" + account + ", password=" + password + ", name=" + name
+ ", departmentId=" + departmentId + ", sex=" + sex + ", birthday=" + birthday + ", mobile=" + mobile
+ ", email=" + email + ", usertype=" + usertype + ", create_time=" + create_time + ", mylevel="
+ mylevel + ", state=" + state + "]";
}
}
3.
package com.attendance.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.attendance.bean.Department;
public interface DeptDao {
/**
* 根据起始记录数、结束记录数以及检索条件,获取当前页的部门信息列表
* @param fromCount 起始记录数
* @param endCount 截止记录数
* @param queryInforMap 检索条件
* @return List 当前页的数据列表
*/
public List getComponentPageList(int fromCount, int endCount,HashMap queryInforMap);
/**
* 根据检索条件,获取满足条件的记录总数
* @param queryInforMap
* @return 总记录数
*/
public int getTotalRecordNumber(HashMap<String,String> queryInforMap);
/**
* 负责人下拉框
* @return
*/
public Map<String,String> deptSeekUser();
/**
* 自动生成部门编号
* @return
*/
public String getDeptId();
/**
* 添加部门信息
* @param dept
*/
public void insertDept(Department department);
/**
* 修改部门信息
* @param dept
*/
public void updateDept(Department department);
public void deleteDept(String deptId);
}
4.
package com.attendance.dao;
public interface LoginDao {
public String login(String account,String password) ;
}
5
package com.attendance.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
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.attendance.bean.Department;
import com.attendance.bean.UserInfoBean;
import com.attendance.dao.DeptDao;
import common.util.ConnectionPool;
import common.util.FieldCheck;
public class DeptDaoImpl implements DeptDao{
private Connection conn = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
/**
* 根据检索条件得到部门列表 部门一览查询
*/
public List getComponentPageList(int fromCount, int endCount,HashMap queryInforMap) {
List<Department> deptList = new ArrayList<Department>();
// 1.获取连接
conn = ConnectionPool.getConn();
// 2.创建sql
String sql = "select * from (select rownum rn,d.department_id,d.department_name,u.name,u.account,d.total_user,d.create_time from t_department d, t_user_info u where d.manager = u.account and d.department_name like '%' || ? || '%') where rn>=? and rn<=?";
try {
// 3.给占位符赋值
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, FieldCheck.convertNullToEmpty((String) queryInforMap.get("departmentName")));
pstmt.setInt(2, fromCount);
pstmt.setInt(3, endCount);
// 4.发送执行sql
rs = pstmt.executeQuery();
// 5.从结果集中取数据
while (rs.next()) {
Department dept = new Department();
dept.setDepartmentId(rs.getString("department_id"));
dept.setDepartmentName(rs.getString("department_name"));
dept.setManager(rs.getString("account"));
dept.setName(rs.getString("name"));
dept.setTotalUser(rs.getString("total_user"));
dept.setCreateTime(rs.getString("create_time"));
deptList.add(dept);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnectionPool.close(pstmt, rs, conn);
}
return deptList;
}
/**
* 得到总的记录条数
*/
public int getTotalRecordNumber(HashMap<String, String> queryInforMap) {
int totalNum=0;
// 1.获取连接
conn = ConnectionPool.getConn();
// 2.创建sql
String sql = "select count(*) num from t_department d, t_user_info u where d.manager = u.account and d.department_name like '%' || ? || '%'";
try {
// 3.给占位符赋值
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, FieldCheck.convertNullToEmpty(queryInforMap.get("departmentName")));
// 4.发送执行sql
rs = pstmt.executeQuery();
// 5.从结果集中取数据:得到总的记录条数
while (rs.next()) {
totalNum = rs.getInt("num");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnectionPool.close(pstmt, rs, conn);
}
return totalNum;
}
/**
* 自动生成部门编号
* @return
*/
public String getDeptId(){
int deptId=0;
try{
// 1.获取连接
conn= ConnectionPool.getConn();
//3.创建sql+赋值+发送执行sql
pstmt = conn.prepareStatement("select max(department_id) from t_department");
rs = pstmt.executeQuery();
if (rs.next())
deptId = rs.getInt(1);
}catch (Exception ex) {
ex.printStackTrace();
} finally {
ConnectionPool.close(pstmt, rs, conn);
}
String deptIdS=String.valueOf(deptId+1);
return deptIdS;
}
/**
* 查询添加部门时负责人下拉框
* @return
*/
public Map<String,String> deptSeekUser(){
Map<String,String> userMap=new HashMap();
// 1.获取连接
conn = ConnectionPool.getConn();
//2.创建sql
String sql ="select account,name from t_user_info";
try{
//3.给占位符赋值
pstmt = conn.prepareStatement(sql);
//4.发送执行sql
rs = pstmt.executeQuery();
//5.从结果集中取数据
while (rs.next()) {
UserInfoBean user=new UserInfoBean();
user.setName(rs.getString("name"));
user.setAccount(rs.getString("account"));
userMap.put(user.getAccount(),user.getName());
}
}catch (SQLException e) {
e.printStackTrace();
} finally {
//5.关闭结果集
ConnectionPool.close(pstmt, rs, conn);
}
return userMap;
}
/**
* 插入部门信息
*/
public void insertDept(Department department) {
System.out.println("DeptDaoImpl==insertDepart===");
Connection conn=null;
PreparedStatement pstmt=null;
int rs=0;
try{
// 1.获取连接
conn = ConnectionPool.getConn();
//2.创建sql
String sql ="insert into t_department(department_Id,department_Name,manager,total_User,create_Time) values(?,?,?,?,to_date(?,'YYYY-MM-DD HH24:MI:SS '))";
//3.给占位符赋值
pstmt = conn.prepareStatement(sql);
System.out.println("DeptDaoImpl==insertDepart===department.getDepartmentId()="+department.getDepartmentId());
pstmt.setString(1,department.getDepartmentId());
System.out.println("DeptDaoImpl==insertDepart===department.getDepartmentName()="+department.getDepartmentName());
pstmt.setString(2,department.getDepartmentName());
System.out.println("DeptDaoImpl==insertDepart===department.getManager()="+department.getManager());
pstmt.setString(3,department.getManager());
pstmt.setString(4,"0");
pstmt.setString(5, department.getCreateTime());
System.out.println("DeptDaoImpl==insertDepart===department.getCreateTime()="+department.getManager());
//4.发送执行sql
int i= pstmt.executeUpdate();
if(i>=1){
System.out.println("部门表插入成功");
}else{
System.out.println("部门表插入失败");
}
}catch (SQLException e) {
e.printStackTrace();
}finally {
//5.关闭结果集
ConnectionPool.close(pstmt,conn);
}
}
/**
* 修改部门信息
*/
public void updateDept(Department department) {
System.out.println("DeptDaoImpl==insertDepart===");
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs =null;
int i=0;
try{
conn = ConnectionPool.getConn();
String sql ="update t_department set department_Name=?,manager=? where department_Id=?";
pstmt = conn.prepareStatement(sql);
System.out.println("DeptDaoImpl==insertDepart===department.getDepartmentName()="+department.getDepartmentName());
pstmt.setString(1,department.getDepartmentName());
System.out.println("DeptDaoImpl==insertDepart===department.getDepartmentId()="+department.getManager());
pstmt.setString(2,department.getManager());
System.out.println("DeptDaoImpl==insertDepart===department.getDepartmentId()="+department.getDepartmentId());
pstmt.setString(3,department.getDepartmentId());
i= pstmt.executeUpdate();
if(i>=1){
System.out.println("部门表修改成功");
}else{
System.out.println("部门表修改失败");
}
}catch (SQLException e) {
e.printStackTrace();
} finally {
//5.关闭结果集
ConnectionPool.close(pstmt,conn);
}
}
/**
* 删除部门信息
*/
public void deleteDept(String deptId){
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs =null;
try{//加载驱动2.建立链接
conn=ConnectionPool.getConn();
//3.发送sql
String sql ="delete from t_department where department_Id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,deptId);
int i=pstmt.executeUpdate();
if(i>=1){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
ConnectionPool.close(pstmt,conn);
}
}
}
6
package com.attendance.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.attendance.dao.LoginDao;
import common.util.ConnectionPool;
public class LoginDaoImpl implements LoginDao {
@Override
public String login(String account, String password) {
//方便返回mylevel
String mylevel=null;
//(1)建立连接
Connection connection=ConnectionPool.getConn();
//(2)验证:执行sql语句验证用户是否存在,如果存在用户的身份是什么_?为占位符,后面插入数据
String sql="select mylevel from t_user_info where account=? and password=?";
//(3)执行sql语句
try {//抛出异常
//连接
PreparedStatement preparedStatement=connection.prepareStatement(sql);
//传递参数?
preparedStatement.setString(1, account);
preparedStatement.setString(2, password);
//执行
ResultSet resultSet=preparedStatement.executeQuery();
//resultSet中如果由数据,证明输入的用户名和密码正确; resultSet中没有数据,证明用户不存在或用户名密码不正确
if(resultSet.next()) {
mylevel=resultSet.getString(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mylevel;
}
}
7.
package com.attendance.service;
import java.util.Map;
import com.attendance.bean.Department;
public interface DeptService {
/**
* 负责人下拉框
* @return
*/
public Map<String, String> deptSeekUser();
/**
* 自动生成部门编号
*/
public String getDeptId();
public void insertDept(Department dept);
public void updateDept(Department dept);
public void deleteDept(String deptId);
}
8.
package com.attendance.service;
public interface LoginService {
public String login(String account,String password);
}
9.
package com.attendance.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.attendance.bean.Department;
import com.attendance.dao.DeptDao;
import com.attendance.dao.impl.DeptDaoImpl;
import com.attendance.service.DeptService;
import common.service.PageInforService;
public class DeptServiceImpl extends PageInforService implements DeptService{
/**
* 负责人下拉框
*/
public Map<String, String> deptSeekUser() {
DeptDao deptDao=new DeptDaoImpl();
return deptDao.deptSeekUser();
}
/**
* 自动生成部门编号
*/
@Override
public String getDeptId() {
DeptDao deptDao=new DeptDaoImpl();
return deptDao.getDeptId();
}
@Override
public void insertDept(Department dept) {
DeptDao deptDao=new DeptDaoImpl();
deptDao.insertDept(dept);
}
@Override
public void updateDept(Department dept) {
DeptDao deptDao=new DeptDaoImpl();
deptDao.updateDept(dept);
}
@Override
public void deleteDept(String deptId) {
DeptDao deptDao=new DeptDaoImpl();
deptDao.deleteDept(deptId);
}
//取得部门一览总件数_根据检索条件,获取满足条件的记录总数
public int getTotalRecordNumber(HashMap queryInforMap) {
DeptDao deptDao = new DeptDaoImpl();
return deptDao.getTotalRecordNumber(queryInforMap);
}
//取得部门一览:根据起始记录数、结束记录数以及检索条件,获取当前页的部门信息列表
@Override
public List<Department> getComponentPageList(int formCount, int endCount, HashMap queryInforMap) {
DeptDao deptDao = new DeptDaoImpl();
return deptDao.getComponentPageList(formCount, endCount, queryInforMap);
}
}
10
package com.attendance.service.impl;
import com.attendance.dao.LoginDao;
import com.attendance.dao.impl.LoginDaoImpl;
import com.attendance.service.LoginService;
/**
* 接口层:servlet->impl接口层交互->loginservice
* 接口不需要具体的实现代码
* service变动不妨碍servlet;serviceimpl变动时会影响
* @author 戴尔
*代码的独立性
*实现业务的交互
*/
public class LoginServiceImpl implements LoginService {
@Override //重写方法
public String login(String account, String password) {
LoginDao loginDao=new LoginDaoImpl();
return loginDao.login(account, password);
}
}
11
package com.attendance.servlet;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
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.attendance.bean.Department;
import com.attendance.service.DeptService;
import com.attendance.service.impl.DeptServiceImpl;
public class DeptCudServlet extends HttpServlet {
public DeptCudServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
//接收用户从前台发出的请求,判断添加、删除、修改还是批量删除操作,
//到相应的方法进行操作
String method = request.getParameter("method");
System.out.println("DeptCudServlet=doPost=method==="+method);
if("insert".equals(method)){//用户查询列表页面点击新增按钮
deptSearch(request,response);
}
else if("insertSave".equals(method)){//新增用户保存工作
insertDept(request,response);
}
else if("update".equals(method)){//用户修改工作
deptSeek(request,response);
}
else if("updateSave".equals(method)){//修改用户保存工作
updateDept(request,response);
}
else if("delete".equals(method)){//单行删除
deleteDept(request,response);
}else if("delMany".equals(method)){//删除多个用户
deleteManyDept(request,response);
}
}
/**
* 部门新增列表页面点击新增:转向到用户增加页面
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void deptSearch(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
//改HashMap();
Map<String,String> map = new HashMap();
DeptService deptService = new DeptServiceImpl();
map=deptService.deptSeekUser();//查询
request.setAttribute("userMap", map);//放入
request.getRequestDispatcher("/pages/dept/deptInsert.jsp").forward(request, response);
}
/**新增用户保存工作
*
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void insertDept(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
//1.往部门表插入数据
//获取部门编号
String deptid = request.getParameter("deptid");
//获取部门名称
String deptname = request.getParameter("deptname");
deptname = new String(deptname.getBytes("iso-8859-1"),"utf-8");
System.out.println("**********************====deptNamea====="+deptname);
//获取部门负责人
String managerId = request.getParameter("managerId");
System.out.println("**********************"+managerId);
//获取当前系统时间
Date day=new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String createTime=df.format(day);
System.out.println("**********************"+createTime);
//将四个参数放到dep中
DeptService deptServiceImpl = new DeptServiceImpl();
Department dept = new Department();
dept.setDepartmentId(deptid);
dept.setDepartmentName(deptname);
dept.setManager(managerId);
dept.setCreateTime(createTime);
deptServiceImpl.insertDept(dept);
//转向到部门查询列表页面
request.getRequestDispatcher("deptServlet?method=firstPage").forward(request, response);
}
/*
* 用户修改列表页面点击修改:转向到用户修改页面
* @param request
* @param reponse
* @throws ServletException
* @throws IOException
*/
public void deptSeek(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
//获取部门编号
String deptId = request.getParameter("deptId");
//获取部门名称
String deptName = request.getParameter("deptName");
deptName = new String(deptName.getBytes("iso-8859-1"),"utf-8");
System.out.println("**********************====deptNamea====="+deptName);
//获取部门负责人
String manager = request.getParameter("manager");
Department dept=new Department();
dept.setDepartmentId(deptId);
dept.setDepartmentName(deptName);
dept.setManager(manager);
Map<String , String > map = new HashMap();
DeptService deptService = new DeptServiceImpl();
map=deptService.deptSeekUser();
request.setAttribute("userMap", map);
request.setAttribute("dept", dept);
request.getRequestDispatcher("/pages/dept/deptUpdate.jsp").forward(request, response);
}
/**
* 部门的修改
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void updateDept(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
//1.往部门表修改数据
//获取部门编号
String deptid = request.getParameter("deptid");
//获取部门名称
String deptname = request.getParameter("deptname");
deptname = new String(deptname.getBytes("iso-8859-1"),"utf-8");
//获取部门负责人
String managerId = request.getParameter("managerId");
//将三个参数放到dep中
DeptService deptServiceImpl = new DeptServiceImpl();
Department dept = new Department();
dept.setDepartmentId(deptid);
dept.setDepartmentName(deptname);
dept.setManager(managerId);
deptServiceImpl.updateDept(dept);
//转向到部门查询列表页面
request.getRequestDispatcher("deptServlet?method=firstPage").forward(request, response);
}
public void deleteDept(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
//1.往部门表删除单行数据
//获取部门编号
String deptId = request.getParameter("deptId");
System.out.println("**********************====deptId"+deptId);
DeptService deptServiceImpl = new DeptServiceImpl();
deptServiceImpl.deleteDept(deptId);
//转向到部门查询列表页面
request.getRequestDispatcher("deptServlet?method=firstPage").forward(request, response);
}
public void deleteManyDept(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
String deptIdS=request.getParameter("deptIdS");
String[] deptId= deptIdS.split(",");
for(int i=0;i<deptId.length;i++){
DeptService deptservice=new DeptServiceImpl();
String temp=deptId[i];
deptservice.deleteDept(temp);
}
//2.返回到用户查询页面
request.getRequestDispatcher("deptServlet?method=firstPage").forward(request, response);
}
}
12
package com.attendance.servlet;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.attendance.service.impl.DeptServiceImpl;
import common.controller.PageListBaseServlet;
/**
* @author 戴尔
*部门分页的功能实现servlet处理器-DeptPageListServlet
*/
public class DeptPageListServlet extends PageListBaseServlet {
/**
* 初始化PageInforBean
*/
@Override
public void initPageInforBean(HttpServletRequest request, HttpServletResponse response) {
//获取页面中的部门名字
String departmentName=request.getParameter("departmentName");
//把搜索条件存入session
HttpSession session=request.getSession();
session.setAttribute("departmentName", departmentName);
//将检索条件封装到pageInforBean
HashMap<String, String> hm=new HashMap<>();
hm.put("departmentName", departmentName);
//获取分页实体
super.getPageInforBean().setHm(hm);
//查询:调用父类的方法_底层(DaoImpl)和数据库建立连接之后,查询到的数据
super.setPageInforService(new DeptServiceImpl());
//jsp->servlet->service->dao
super.setForwad("/pages/dept/deptSearch.jsp");
}
}
13
package com.attendance.servlet;
import java.io.IOException;
import javax.security.auth.message.callback.PrivateKeyCallback.Request;
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 com.attendance.service.LoginService;
import com.attendance.service.impl.LoginServiceImpl;
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//(1)获取用户从界面上提交的用户名和密码
//定义变量来接受从login.jsp中获取的相应的值
String account=req.getParameter("account");
String pass=req.getParameter("password");
//(2)校验:将用户名和密码 与数据库中存储是数据信息去对比(利用service层进行交互)
LoginService loginService=new LoginServiceImpl();
String mylevel=loginService.login(account, pass);
//从当前request中获取session,如果没有创建一个新的并返回
HttpSession session=req.getSession();//获session
if (mylevel!=null) {
session.setAttribute("mylevel", mylevel);
//有用户的时候,用response.sendRedirect跳转到主页面
resp.sendRedirect("main.jsp");
}else {//如果没有用户,显示提示信息 并用请求转发回到登录界面
req.setAttribute("error","登录名或密码不正确!!!");
//重定向
//req.getRequestDispatcher(req.getContextPath()+"login.jsp");
System.out.println(req.getContextPath());
req.getRequestDispatcher("login.jsp").forward(req, resp); //请求转发
}
}
}
14
package common.bean;
/**
* @author 戴尔
*封装信息查询页面的相关的分页信息
* 实现视图层、控制器、模型层数据传递--分页信息
* 用select rownum,部门名 from 部门管理表;
* select * from 部门管理表;(1)
* select count(*) from 部门管理表 where manager=;
* select t.部门id,u.name from 部门管理表 t join 用户信息表 u on t.manager=u.account;
* select * from 用户信息表;(2)
*/
import java.util.HashMap;
import java.util.List;
import com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.PrivateKeyResolver;
public class PageInforBean {
//总记录数,总条数
private int totalNumber=0;
//每页显示记录数,默认每页显示5条记录
private int showCount=5;
//总页数
private int totalPage=0;
//从当前页的开始记录
private int formCount=0;
//当前页码
private int currentPage=0;
//当前页的数据列表
private List list=null;
//存储检索条件
private HashMap<String, String> hm;
public int getTotalNumber() {
return totalNumber;
}
public void setTotalNumber(int totalNumber) {
this.totalNumber = totalNumber;
}
public int getShowCount() {
return showCount;
}
public void setShowCount(int showCount) {
this.showCount = showCount;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getFormCount() {
return formCount;
}
public void setFormCount(int formCount) {
this.formCount = formCount;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public HashMap<String, String> getHm() {
return hm;
}
public void setHm(HashMap<String, String> hm) {
this.hm = hm;
}
@Override
public String toString() {
return "PageInforBean [totalNumber=" + totalNumber + ", showCount=" + showCount + ", totalPage=" + totalPage
+ ", formCount=" + formCount + ", currentPage=" + currentPage + ", list=" + list + ", hm=" + hm + "]";
}
}
15
package common.controller;
import java.io.IOException;
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 com.mysql.fabric.Response;
import com.sun.java_cup.internal.runtime.virtual_parse_stack;
import common.bean.PageInforBean;
import common.service.PageInforService;
/**
* @author 戴尔
*实现分页功能的共通代码--servlet类
*/
public abstract class PageListBaseServlet extends HttpServlet {
//(1.1)
//分页的抽象类
private PageInforService pageInforService=null;
//分页信息Bean
private PageInforBean pageInforBean=null;
//跳转路径
private String forwad=null;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
pageInforBean=new PageInforBean();
//拿到每页显示多少条数据(1)
String showCount =request.getParameter("showCount");
//如果每页显示记录不为空或“”,将pageInforBean获取转为整型的每页显示条数。
if (showCount!=null && !"".equals(showCount)) {
pageInforBean.setShowCount(Integer.valueOf(showCount));
}
//(2)
String pageNo=request.getParameter("pageNo");
//如果每页显示记录不为空或“”,将pageInforBean获取转为整型的每页显示条数。
if (pageNo!=null && !"".equals(pageNo)) {
pageInforBean.setShowCount(Integer.valueOf(pageNo));
}
//(4)
setPageInforBean(pageInforBean);
initPageInforBean(request, response);
//通过session传递数据
HttpSession session=request.getSession();
initPageInforBean(request,response);
if (request.getParameter("method")!=null) {
if (request.getParameter("method").equals("firstPage")) {
//显示第一页内容
session.setAttribute("pageInforBean", pageInforService.getPageInitiaList(pageInforBean));
}else if (request.getParameter("method").equals("showPage")) {
//非第一页,根据页码为几,显示第几页的内容
session.setAttribute("pageInforBean", pageInforService.getPageListByPageNo(pageInforBean));
}
}
response.sendRedirect(request.getContextPath()+this.forwad);
}
//(3)
/**
* 初始化条件信息PageInforBean ,封装客户端传递的查询
* @param request
* @param response
*/
public abstract void initPageInforBean(HttpServletRequest request,HttpServletResponse response);
public PageInforService getPageInforService() {
return pageInforService;
}
public void setPageInforService(PageInforService pageInforService) {
this.pageInforService = pageInforService;
}
public void setPageInforBean(PageInforBean pageInforBean) {
this.pageInforBean = pageInforBean;
}
public String getForwad() {
return forwad;
}
public void setForwad(String forwad) {
this.forwad = forwad;
}
public PageInforBean getPageInforBean() {
// TODO Auto-generated method stub
return pageInforBean;
}
}
16
package common.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodingFilter implements Filter {
private String encoding = null;
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (encoding != null) {
request.setCharacterEncoding(encoding);
response.setContentType(encoding);
}
chain.doFilter(request, response);
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig config) throws ServletException {
encoding = config.getInitParameter("encoding");
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
17
package common.service;
import java.util.HashMap;
import java.util.List;
import common.bean.PageInforBean;
/**
* @author 戴尔
*实现分页功能共通的业务逻辑处理
*/
public abstract class PageInforService {
//检索首页(1)
public PageInforBean getPageInitiaList(PageInforBean pageInforBean) {
pageInforBean.setCurrentPage(1);
//返回首页的信息
return getPageListByPageNo(pageInforBean);
}
/**
* 根据页码检索 对应页面的内容(2)
*/
public PageInforBean getPageListByPageNo(PageInforBean pageInforBean) {
//检索条件
HashMap queryInforMap=pageInforBean.getHm();
//获取当前页的页码 :(当前页码-1)*每页显示条数+1
if (pageInforBean.getCurrentPage()==1) {//若为第一页
pageInforBean.setFormCount(1);
}else {
pageInforBean.setFormCount((pageInforBean.getCurrentPage()-1)*pageInforBean.getShowCount()+1);
}
//根据检索条件,查询满足条件的总记录数
int totalNumber=getTotalRecordNumber(queryInforMap);
pageInforBean.setTotalNumber(totalNumber);
//总记录数%每页显示数,获取总页数
int showCount=pageInforBean.getShowCount();
int tmp=totalNumber%showCount;
//余数tmp为0,正好为tmpPageNumber;不为0,为tmpPageNumber+1
int tmpPageNumber=totalNumber/showCount;
//获取总页数
pageInforBean.setTotalPage(tmp==0 ? tmpPageNumber : tmpPageNumber+1);
//当前页的最后一行
int endCount=pageInforBean.getFormCount()+showCount-1;
//根据起始记录数,结束记录数,检索条件,获取当前的数据列表
pageInforBean.setList(getComponentPageList(pageInforBean.getFormCount(), endCount, queryInforMap));
return pageInforBean;
}
/**
* 根据检索条件,获取满足条件的总记录数,根据不同的业务发生变化
*/
public abstract int getTotalRecordNumber(HashMap queryInforMap);
/**
* 抽象类占位
*/
public abstract List getComponentPageList(int formCount,int endCount,HashMap queryInforMap) ;
}
18
package common.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 建立与数据库的链接的工具类
*
* @author 戴尔
*
*/
public class ConnectionPool {
/**
* 建立链接,定义静态方法
*
*/
public static Connection getConn() {
// 定义变量接收建立的连接
Connection conn= null;
try {
// 1.加就驱动,导入使用jdbc的jar包
Class.forName("oracle.jdbc.driver.OracleDriver");
try {
// 2.建立连接
//"Oracle链接地址=jdbc驱动连接:连接的是Oracle数据库:以thin的方式连接:连接@localhost本地的:访问端口号为1521:数据库实例为xe","数据库用户名","密码"
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "mygyn", "111111");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
/**
*
* 释放资源(更新时)
*/
public static void close(PreparedStatement stmt, Connection conn) {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 释放资源(增删)
*/
public static void close(PreparedStatement stmt, ResultSet rs, Connection conn) {
// TODO Auto-generated method stub
try {
if (stmt != null) {
stmt.close();
stmt = null;
}
if (rs != null) {
rs.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
19
package common.util;
public class FieldCheck {
/**
* 判断字符串是否为null或空串
* @param str
* @return
*/
public static boolean isNullOrBlank(String str){
return(str==null || str.trim().length()==0);
}
/**
* 将null转换为空
* @param str
* @return
*/
public static String convertNullToEmpty(String str){
if(str==null)
return "";
else
return str;
}
/**
* 去掉字符串两边的空格
* @param str
* @return
*/
public static String trimString(String str){
if(str==null)
return "";
else
return str.trim();
}
}