dao
public class UserDaoImpl implements UserDao {
//用户登录密码查询
@Override
public User getLoginUser(Connection connection, String userCode) throws SQLException {
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
User user = null;
if (null != connection) {
String sql = "select * from smbms_user where userCode=?";
Object[] params = {userCode};
resultSet = BaseDao.execute(connection, sql, params, resultSet, preparedStatement);
if (resultSet.next()) {
user = new User();
user.setId(resultSet.getInt("id"));
user.setUserCode(resultSet.getString("userCode"));
user.setUserName(resultSet.getString("userName"));
user.setUserPassword(resultSet.getString("userPassword"));
user.setGender(resultSet.getInt("gender"));
user.setBirthday(resultSet.getDate("birthday"));
user.setPhone(resultSet.getString("phone"));
user.setAddress(resultSet.getString("address"));
user.setUserRole(resultSet.getInt("userRole"));
user.setCreatedBy(resultSet.getInt("createdBy"));
user.setCreationDate(resultSet.getTimestamp("creationDate"));
user.setModifyBy(resultSet.getInt("modifyBy"));
user.setModifyDate(resultSet.getTimestamp("modifyDate"));
}
BaseDao.closeResource(resultSet, preparedStatement, null);
}
return user;
}
//用户修改密码查询
@Override
public int updatePassword(Connection connection, int id, String userPassword) throws SQLException {
PreparedStatement preparedStatement = null;
int execute = 0;
if (connection != null) {
String sql = "update smbms_user set userPassword=? where id = ?";
Object[] params = {userPassword, id};
execute = BaseDao.execute(connection, sql, params, preparedStatement);
BaseDao.closeResource(null, preparedStatement, null);
}
return execute;
}
//查询用户名或者角色查询用户总数
@Override
public int getUserCount(Connection connection, String username, int userRole) throws SQLException {
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
int count = 0;
if (connection != null) {
StringBuffer sql = new StringBuffer();
sql.append("select count(1) as count from smbms_user u,smbms_role r where u.userRole = r.id");
ArrayList<Object> list = new ArrayList<Object>();
if (!StringUtils.isNullOrEmpty(username)) {
sql.append(" and u.userName like ?");
list.add("%" + username + "%");
}
if (userRole > 0) {
sql.append(" and u.userRole like ?");
list.add(userRole);
}
Object[] params = list.toArray();
resultSet = BaseDao.execute(connection, sql.toString(), params, resultSet, preparedStatement);
if (resultSet.next()) {
count = resultSet.getInt("count");
}
BaseDao.closeResource(resultSet, preparedStatement, null);
}
return count;
}
//查询用户列表
@Override
public List<User> getUserList(Connection connection, String username, int userRole, int currentPageNo, int pageSize) throws SQLException {
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
List<User> userList = new ArrayList<User>();
if (connection != null) {
StringBuffer sql = new StringBuffer();
sql.append("select u.*,r.roleName as userRoleName from smbms_user u,smbms_role r where u.userRole = r.id");
List<Object> list = new ArrayList<Object>();
if (username != null) {
sql.append(" and u.userName like ?");
list.add("%"+username+"%");
}
if (userRole > 0) {
sql.append(" and u.userRole=?");
list.add(userRole);
}
sql.append(" order by creationDate DESC limit ?,?");
currentPageNo = (currentPageNo - 1) * pageSize;
list.add(currentPageNo);
list.add(pageSize);
Object[] params = list.toArray();
resultSet = BaseDao.execute(connection, sql.toString(), params, resultSet, preparedStatement);
while (resultSet.next()) {
User user = new User();
user.setId(resultSet.getInt("id"));
user.setUserCode(resultSet.getString("userCode"));
user.setUserName(resultSet.getString("userName"));
user.setGender(resultSet.getInt("gender"));
user.setBirthday(resultSet.getDate("birthday"));
user.setPhone(resultSet.getString("phone"));
user.setUserRole(resultSet.getInt("userRole"));
user.setUserRoleName(resultSet.getString("userRoleName"));
userList.add(user);
}
BaseDao.closeResource(resultSet, preparedStatement, null);
}
return userList;
}
}
basedao
//操作数据库的公共类
public class BaseDao {
private static String driver;
private static String url;
private static String username;
private static String password;
static {
InputStream in = BaseDao.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties = new Properties();
try {
properties.load(in);
} catch (IOException e) {
e.printStackTrace();
}
driver = properties.getProperty("driver");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
}
public static Connection getConnection() throws SQLException {
Connection connection = null;
try {
Class.forName(driver);
connection = DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return connection;
}
//编写查询公共方法
public static ResultSet execute(Connection connection,String sql,Object[] params,ResultSet resultSet,PreparedStatement preparedStatement) throws SQLException {
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
preparedStatement.setObject(i+1,params[i]);
}
resultSet = preparedStatement.executeQuery();
return resultSet;
}
//编写增删改公共方法
public static int execute(Connection connection,String sql,Object[] params,PreparedStatement preparedStatement) throws SQLException {
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
preparedStatement.setObject(i+1,params[i]);
}
int updateRows = preparedStatement.executeUpdate();
return updateRows;
}
//释放资源
public static boolean closeResource(ResultSet resultSet,PreparedStatement preparedStatement,Connection connection){
boolean flag = true;
if (preparedStatement!=null){
try {
preparedStatement.close();
preparedStatement = null;
} catch (SQLException throwables) {
throwables.printStackTrace();
flag = false;
}
}
if (connection!=null){
try {
connection.close();
connection = null;
} catch (SQLException throwables) {
throwables.printStackTrace();
flag = false;
}
}
if (resultSet!=null){
try {
resultSet.close();
resultSet = null;
} catch (SQLException throwables) {
throwables.printStackTrace();
flag = false;
}
}
return flag;
}
}
UserServiceImpl
public class UserServiceImpl implements UserService{
private UserDao userDao;
public UserServiceImpl(){
userDao = new UserDaoImpl();
}
@Override
public User login(String userCode, String userPassword) {
Connection connection = null;
User user = null;
try {
connection = BaseDao.getConnection();
//通过业务层调用对应的具体的数据库操作
user = userDao.getLoginUser(connection,userCode);
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
BaseDao.closeResource(null,null,connection);
}
//匹配密码
if (null != user){
if (!user.getUserPassword().equals(userPassword)){
user = null;
}
}
return user;
}
////通过业务层调用对应的具体的数据库操作
@Override
public boolean updatePassword(int id, String userPassword) {
boolean flag = false;
Connection connection = null;
try {
connection = BaseDao.getConnection();
UserDao userDao = new UserDaoImpl();
if (userDao.updatePassword(connection,id,userPassword)>0){
flag =true;
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
BaseDao.closeResource(null,null,connection);
}
return flag;
}
//
@Override
public int getUserCount(String username, int userRole) {
int count =0;
Connection connection =null;
try {
connection = BaseDao.getConnection();
count = userDao.getUserCount(connection,username,userRole);
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
BaseDao.closeResource(null,null,connection);
}
return count;
}
//
@Override
public List<User> getUserList(String username, int userRole,int currentPageNo, int pageSize) {
Connection connection = null;
List<User> userList = null;
try {
connection = BaseDao.getConnection();
userList = userDao.getUserList(connection, username, userRole, currentPageNo, pageSize);
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
BaseDao.closeResource(null,null,connection);
}
return userList;
}
@Override
public boolean addUser(User user) {
Connection connection = null;
boolean flag = false;
try {
connection = BaseDao.getConnection();
connection.setAutoCommit(false);//开启JDBC事务管理
int i = userDao.addUser(connection, user);
connection.commit();
if (i>0){
flag = true;
System.out.println("add success!");
}else {
System.out.println("add failed!");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
try {
connection.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
}finally {
BaseDao.closeResource(null,null,connection);
}
return flag;
}
LoginServlet
public class LoginServlet extends HttpServlet {
//Servlet:控制层调用业务层
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("LoginServlet--start....");
//获取用户名和密码
String userCode = req.getParameter("userCode");
String userPassword = req.getParameter("userPassword");
//和数据库中的密码进行对比,调用业务层
UserService userService = new UserServiceImpl();
User user = userService.login(userCode,userPassword);
if(user!=null){//查到这个人
//将用户的信息放到Session;
req.getSession().setAttribute(Constants.USER_SESSION,user);
//跳转到主页
resp.sendRedirect("jsp/frame.jsp");
}else {//查不到这个人
//转发回登录页面,顺带提示它,用户名或者密码错误;
req.setAttribute("error","用户名或者密码不正确");
req.getRequestDispatcher("login.jsp").forward(req,resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
LogoutServlet
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//移除用户的Constants.USER_SESSION
req.getSession().removeAttribute(Constants.USER_SESSION);
resp.sendRedirect(req.getContextPath()+"/login.jsp");//返回登录页面
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
UserServlet
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req.getParameter("method");
if (method != null && method.equals("savepwd")) {
this.updatePwd(req, resp);
} else if (method.equals("pwdmodify") && method != null) {
this.pwdModify(req, resp);
} else if (method.equals("query") && method != null) {
this.query(req, resp);
} else if (method.equals("add") && method != null) {
this.add(req, resp);
} else if (method.equals("getrolelist") && method != null) {
this.getRoleList(req, resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
//修改密码
public void updatePwd(HttpServletRequest req, HttpServletResponse resp) {
Object attribute = req.getSession().getAttribute(Constants.USER_SESSION);
String newpassword = req.getParameter("newpassword");
boolean flag = false;
if (attribute != null && newpassword != null) {
UserService userService = new UserServiceImpl();
flag = userService.updatePassword(((User) attribute).getId(), newpassword);
if (flag) {
req.setAttribute("massage", "修改密码成功,请退出,使用新密码登录");
//密码修改成功,移除当前Session
req.getSession().removeAttribute(Constants.USER_SESSION);
} else {
req.setAttribute("massage", "密码修改失败");
}
} else {
req.setAttribute("massage", "修改密码成功,请退出,使用新密码登录");
}
try {
req.getRequestDispatcher("pwdmodify.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//验证旧密码
public void pwdModify(HttpServletRequest req, HttpServletResponse resp) {
Object attribute = req.getSession().getAttribute(Constants.USER_SESSION);
String oldpassword = req.getParameter("oldpassword");
HashMap<String, String> resultMap = new HashMap<String, String>();
if (attribute == null) { //Session过期了
resultMap.put("result", "sessionerror");
} else if (StringUtils.isNullOrEmpty(oldpassword)) {// 输入的密码为空
resultMap.put("result", "error");
} else {
String userPassword = ((User) attribute).getUserPassword();
if (oldpassword.equals(userPassword)) {
resultMap.put("result", "true");
} else {
resultMap.put("result", "false");
}
}
try {
resp.setContentType("application/json");
PrintWriter writer = resp.getWriter();
//JSONArray 阿里巴巴的JSON工具类,装换格式
/*
resultMap = ["result","sessionerror","result","error"]
Json格式 = {key:value}
*/
writer.write(JSONArray.toJSONString(resultMap));
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//
public void query(HttpServletRequest req, HttpServletResponse resp) {
String queryUserName = req.getParameter("queryname");
String temp = req.getParameter("queryUserRole");
String pageIndex = req.getParameter("pageIndex");
int queryUserRole = 0;
//获取用户列表
UserService userService = new UserServiceImpl();
//第一次走这个请求,一定是第一页,页面大小固定的;
int pageSize = 5;//可以把这个写到配置文件中,方便后期修改;
int currentPageNo = 1;
if (queryUserName == null) {
queryUserName = "";
}
if (temp != null && !temp.equals("")) {
queryUserRole = Integer.parseInt(temp);
}
if (pageIndex != null) {
currentPageNo = Integer.parseInt(pageIndex);
}
//获取用户的总数
int totalCount = userService.getUserCount(queryUserName, queryUserRole);
//总页数支持
PageSupport pageSupport = new PageSupport();
pageSupport.setCurrentPageNo(currentPageNo);
pageSupport.setPageSize(pageSize);
pageSupport.setTotalCount(totalCount);
int totalPageCount = pageSupport.getTotalPageCount();
//控制首页和尾页
//如果页面要小于1了,就显示第一页的东西
if (currentPageNo < 1) {
currentPageNo = 1;
} else if (currentPageNo > totalPageCount) {
//当前页面大于最后一页
currentPageNo = totalCount;
}
//获取用户列表展示
List<User> userList = userService.getUserList(queryUserName, queryUserRole, currentPageNo, pageSize);
req.setAttribute("userList", userList);
List<Role> roleList = null;
RoleServiceImpl roleService = new RoleServiceImpl();
roleList = roleService.getRoleList();
req.setAttribute("roleList", roleList);
req.setAttribute("queryUserName", queryUserName);
req.setAttribute("queryUserRole", queryUserRole);
req.setAttribute("totalPageCount", totalPageCount);
req.setAttribute("totalCount", totalCount);
req.setAttribute("currentPageNo", currentPageNo);
//返回前端
try {
req.getRequestDispatcher("userlist.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//
public void add(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
String userCode = req.getParameter("userCode");
String userName = req.getParameter("userName");
String userPassword = req.getParameter("userPassword");
String gender = req.getParameter("gender");
String birthday = req.getParameter("birthday");
String phone = req.getParameter("phone");
String address = req.getParameter("address");
String userRole = req.getParameter("userRole");
UserServiceImpl userService = new UserServiceImpl();
User user = new User();
user.setUserCode(userCode);
user.setUserName(userName);
user.setUserPassword(userPassword);
user.setGender(Integer.valueOf(gender));
try {
user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(birthday));
} catch (ParseException e) {
e.printStackTrace();
}
user.setPhone(phone);
user.setAddress(address);
user.setUserRole(Integer.valueOf(userRole));
user.setCreationDate(new Date());
user.setCreatedBy(((User) req.getSession().getAttribute(Constants.USER_SESSION)).getId());
if (userService.addUser(user)) {
resp.sendRedirect(req.getContextPath() + "/jsp/user.do?method=query");
} else {
req.getRequestDispatcher("useradd.jsp").forward(req, resp);
}
}
private void getRoleList(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
List<Role> roleList = null;
RoleService roleService = new RoleServiceImpl();
roleList = roleService.getRoleList();
//把roleList转换成json对象输出
resp.setContentType("application/json");
PrintWriter outPrintWriter = resp.getWriter();
outPrintWriter.write(JSONArray.toJSONString(roleList));
outPrintWriter.flush();
outPrintWriter.close();
}
}
SysFilter
public class SysFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
User user = (User) req.getSession().getAttribute(Constants.USER_SESSION);
if (user==null){
resp.sendRedirect("/smbms/error.jsp");
}else{
chain.doFilter(request,response);
}
}
@Override
public void destroy() {
}
}
CharacterEncodingFilter
public class CharacterEncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
login
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>系统登录 - 超市订单管理系统</title>
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath }/css/style.css" />
<script type="text/javascript">
/* if(top.location!=self.location){
top.location=self.location;
} */
</script>
</head>
<body class="login_bg">
<section class="loginBox">
<header class="loginHeader">
<h1>超市订单管理系统</h1>
</header>
<section class="loginCont">
<form class="loginForm" action="${pageContext.request.contextPath }/login.do" name="actionForm" id="actionForm" method="post" >
<div class="info">${error }</div>
<div class="inputbox">
<label for="userCode">用户名:</label>
<input type="text" class="input-text" id="userCode" name="userCode" placeholder="请输入用户名" required/>
</div>
<div class="inputbox">
<label for="userPassword">密码:</label>
<input type="password" id="userPassword" name="userPassword" placeholder="请输入密码" required/>
</div>
<div class="subBtn">
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</div>
</form>
</section>
</section>
</body>
</html>
springboot项目
Employee
package com.axj.helloworld.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
//员工表
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee {
private Integer id;
private String name;
private String email;
private Integer gender;//1:男 0:女
private Department department;
private Date birth;
public Employee(Integer id, String name, String email, Integer gender, Department department) {
this.id = id;
this.name = name;
this.email = email;
this.gender = gender;
this.department = department;
this.birth = new Date();
}
}
Department
package com.axj.helloworld.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department {
private Integer id;
private String departmentName;
}
DepartmentDao
package com.axj.helloworld.dao;
import com.axj.helloworld.pojo.Department;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@Repository
public class DepartmentDao {
private static Map<Integer, Department> departments = null;
static{
departments = new HashMap<Integer, Department>();
departments.put(101,new Department(101,"技术部"));
departments.put(102,new Department(102,"策划部"));
departments.put(103,new Department(103,"管理部"));
departments.put(104,new Department(104,"财务部"));
departments.put(105,new Department(105,"人力部"));
}
//返回所有部门信息
public Collection<Department> getdepartments(){
return departments.values();
}
//增加部门
public void addEmployee(Department department){
int id =105;
departments.put(id++,department);
}
//根据id查询部门
public Department getdepartmentById(int id){
return departments.get(id);
}
}
EmployeeDao
package com.axj.helloworld.dao;
import com.axj.helloworld.pojo.Department;
import com.axj.helloworld.pojo.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.Map;
@Repository
public class EmployeeDao {
private static Map<Integer, Employee> employees = null;
//部门外表
@Autowired
private DepartmentDao departmentDao;
static{
employees = new HashMap<Integer, Employee>();
employees.put(1001,new Employee(1001,"张三","zdsadas@qq.com",0,new Department(101,"技术部")));
employees.put(1002,new Employee(1002,"李四","1316546@qq.com",1,new Department(102,"策划部")));
employees.put(1003,new Employee(1003,"王五","8974415@qq.com",0,new Department(103,"管理部")));
employees.put(1004,new Employee(1004,"甲六","6465165@qq.com",1,new Department(104,"财务部")));
employees.put(1005,new Employee(1005,"陈七","9615615@qq.com",0,new Department(105,"人力部")));
}
private static Integer initId = 1006;
//添加员工
public void addemployee(Employee employee){
if (employee.getId()==null) {
employee.setId(initId++);
}
employee.setDepartment(departmentDao.getdepartmentById(employee.getDepartment().getId()));
employees.put(employee.getId(),employee);
}
//通过id查询员工信息
public Employee query(Integer id){
return employees.get(id);
}
//通过id删除员工
public void delete(Integer id){
employees.remove(id);
}
//修改员工信息
public void update(Employee employee){
}
}
controller