搭建一个maven web项目
配置Tomcat
测试项目是否能够跑起来
导入项目中会遇到的jar包
jsp,servlet,mysql驱动,jstl,starand
创建项目包结构
编写实体类
ORM映射:表-类映射
编写基础公共类
数据库配置文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8
username=root
password=0927
编写数据库公共类
package com.hao.dao;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
/**
* @author 许浩
* @date 2020/7/19 - 16:19
*/
//操作数据库的公共类
public class BaseDao {
private static String driver;
private static String url;
private static String username;
private static String password;
//静态代码块,类加载的时候就初始化了
static {
Properties properties = new Properties();
//通过类加载器来加载资源
InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("db.properties");
try {
properties.load(is);
} 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() {
Connection connection = null;
try {
Class.forName(driver);
connection = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
//编写查询公共类
public static ResultSet execute(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet, String sql, Object[] params) 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, PreparedStatement preparedStatement, String sql, Object[] params) 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(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {
boolean flag = true;
if (resultSet != null) {
try {
resultSet.close();
//GC回收
resultSet = null;
} catch (SQLException e) {
e.printStackTrace();
flag = false;
}
}
if (preparedStatement != null) {
try {
preparedStatement.close();
//GC回收
preparedStatement = null;
} catch (SQLException e) {
e.printStackTrace();
flag = false;
}
}
if (connection != null) {
try {
connection.close();
//GC回收
connection = null;
} catch (SQLException e) {
e.printStackTrace();
flag = false;
}
}
return flag;
}
}
编写字符编码过滤器并注册
package com.hao.filter;
import javax.servlet.*;
import java.io.IOException;
/**
* @author 许浩
* @date 2020/7/19 - 16:51
*/
public class CharacterEncodingFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
filterChain.doFilter(servletRequest,servletResponse);
}
public void destroy() {
}
}
导入静态资源
编写前端页面
设置首页
<welcome-file-list>
<welcome-file>login.jspwelcome-file>
welcome-file-list>
编写dao层登录用户登录的接口
//得到要登录的用户
public User getLoginUser(Connection connection, String userCode, String userPassword) throws SQLException;
编写dao接口的实现类
//得到要登录的用户
public User getLoginUser(Connection connection, String userCode, String userPassword) throws SQLException {
PreparedStatement pstm = null;
ResultSet rs = null;
User user = null;
if (connection != null) {
String sql = "select * from smbms_user where userCode=? and userPassword=?";
Object[] params = {userCode, userPassword};
rs = BaseDao.execute(connection, pstm, rs, sql, params);
if (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setUserCode(rs.getString("userCode"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("userPassword"));
user.setGender(rs.getInt("gender"));
user.setBirthday(rs.getDate("birthday"));
user.setPhone(rs.getString("phone"));
user.setAddress(rs.getString("address"));
user.setUserRole(rs.getInt("userRole"));
user.setCreatedBy(rs.getInt("createdBy"));
user.setCreationDate(rs.getTimestamp("creationDate"));
}
BaseDao.closeResource(null, pstm, rs);
}
return user;
}
业务层接口
public interface UserService {
//用户登录
public User login(String usercode, String password);
}
业务层实现类
package com.hao.service.user;
import com.hao.dao.BaseDao;
import com.hao.dao.user.UserDao;
import com.hao.dao.user.UserDaoImpl;
import com.hao.pojo.User;
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.SQLException;
/**
* @author 许浩
* @date 2020/7/19 - 19:35
*/
public class UserServiceImpl implements UserService {
//业务层都会调用dao层,所以我们要引入Dao层
private UserDao userDao;
public UserServiceImpl() {
userDao = new UserDaoImpl();
}
public User login(String usercode, String password) {
Connection connection = null;
User user = null;
try {
connection = BaseDao.getConnection();
//通过业务层调用对应的具体的数据库操作
user = userDao.getLoginUser(connection, usercode);
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeResource(connection, null, null);
}
return user;
}
}
编写Servlet
package com.hao.servlet;
import com.hao.pojo.User;
import com.hao.service.user.UserServiceImpl;
import com.hao.util.Constants;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author 许浩
* @date 2020/7/19 - 20:11
*/
public class LoginServlet extends HttpServlet {
//Servlet:控制层,调用业务层代码
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取用户名和密码
String userCode = req.getParameter("userCode");
String userPassword = req.getParameter("userPassword");
//和数据库中的密码进行对比,调用业务层
UserServiceImpl 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);
}
}
注册Servlet
<servlet>
<servlet-name>LoginServletservlet-name>
<servlet-class>com.hao.servlet.LoginServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>LoginServletservlet-name>
<url-pattern>/login.dourl-pattern>
servlet-mapping>
测试访问,确保以上功能成功
注销功能:
思路:
移除Session
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//用处用户的Session
req.getSession().removeAttribute(Constants.User_Session);
//返回登录页面
resp.sendRedirect("/login.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
注册xml
<servlet>
<servlet-name>LogoutServletservlet-name>
<servlet-class>com.hao.servlet.LogoutServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>LogoutServletservlet-name>
<url-pattern>/jsp/logout.dourl-pattern>
servlet-mapping>
登录拦截优化
编写 过滤器,并注册
public class SysFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)req;
HttpServletResponse response=(HttpServletResponse)resp;
//过滤器,从Session中获取用户
User user = (User) request.getSession().getAttribute(Constants.User_Session);
if (user==null){ //已经移除或注销了
response.sendRedirect("/smbms/error.jsp");
}
filterChain.doFilter(req,resp);
}
public void destroy() {
}
}
导入前端素材
UserDao接口
//修改当前用户密码
public int updatePwd(Connection connection,String id,String password) throws SQLException;
UserDao实现类
//修改当前用户密码
public int updatePwd(Connection connection, String id, String password) throws SQLException {
PreparedStatement pstm = null;
int excute = 0;
if (connection != null) {
String sql = "update smbms_user set userPassword=? where id=?";
Object[] params = {password, id};
excute = BaseDao.execute(connection, pstm, sql, params);
BaseDao.closeResource(null, pstm, null);
}
return excute;
}
UserService接口
//根据用户ID修改密码
public boolean updatePwd(int id, String password);
UserService实现类
public boolean updatePwd(int id, String password) {
Connection connection = null;
boolean flag = false;
//修改密码
try {
connection = BaseDao.getConnection();
if (userDao.updatePwd(connection, id, password) > 0) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeResource(connection, null, null);
}
return flag;
}
实现复用,需要提出取方法
public void updatePwd(HttpServletRequest req,HttpServletResponse resp){
//从Session里面拿ID;
Object attribute = req.getSession().getAttribute(Constants.User_Session);
String newpassword = req.getParameter("newpassword");
boolean flag = false;
if (attribute != null && newpassword != null) {
UserServiceImpl userService = new UserServiceImpl();
flag = userService.updatePwd(((User) (attribute)).getId(), newpassword);
if (flag) {
req.setAttribute("message", "修改密码成功,请退出,并使用新密码登录");
//密码修改成功,移除当前Session
req.getSession().removeAttribute(Constants.User_Session);
} else {
//密码修改失败
req.setAttribute("message", "密码修改失败");
}
} else {
req.setAttribute("message", "新密码有问题");
}
try {
req.getRequestDispatcher("pwdmodify.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
注册xml
<servlet>
<servlet-name>UserServletservlet-name>
<servlet-class>com.hao.servlet.UserServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>UserServletservlet-name>
<url-pattern>/jsp/user.dourl-pattern>
servlet-mapping>
优化密码修改使用Ajax
阿里巴巴的fastjson
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.4version>
dependency>
代码实现
//验证旧密码,session中有用户的密码
public void pwdModify(HttpServletRequest req, HttpServletResponse resp) {
Object o = req.getSession().getAttribute(Constants.User_Session);
String oldpassword = req.getParameter("oldpassword");
//万能的Map
Map<String, String> resultMap = new HashMap<String, String>();
if (o == null) { //Session失效了
resultMap.put("result", "sessionerror");
} else if (StringUtils.isNullOrEmpty(oldpassword)) { //输入密码为空
resultMap.put("result", "error");
} else {
String userPassword = ((User) o).getUserPassword(); //Session中用户的密码
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"]
Json格式={key:value}
*/
writer.write(JSONArray.toJSONString(resultMap));
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
测试
思路:
用户分页的工具类
用户列表页面导入
userlist.jsp
rollpage.jsp
UserDao
//查询用户总数
public int getUserCount(Connection connection,String username,int userRole) throws SQLException;
UserDaoImpl
//根据用户名或角色查询用户总数
public int getUserCount(Connection connection, String username, int userRole) throws SQLException {
PreparedStatement pstm = null;
ResultSet rs = null;
int count = 0;
if (connection != null) {
List<Object> list = new ArrayList<Object>();
StringBuffer sql = new StringBuffer();
sql.append("SELECT COUNT(1) as count FROM smbms_user u,smbms_role r where u.userRole=r.id");
if (!StringUtils.isNullOrEmpty(username)) {
sql.append(" and u.userName like ?");
list.add("%" + username + "%");//index:0
}
if (userRole > 0) {
sql.append(" and u.userRole like ?");
list.add(userRole); //index:1
}
//把list转换为数组
Object[] params = list.toArray();
rs = BaseDao.execute(connection, pstm, rs, sql.toString(), params);
if (rs.next()) {
count = rs.getInt("count");
}
BaseDao.closeResource(null, pstm, rs);
}
return count;
}
UserService
//查询记录数
public int getUserCount(String username,int userRole);
UserServiceImpl
//查询记录数
public int getUserCount(String username, int userRole) {
Connection connection=null;
int userCount = 0;
try {
connection=BaseDao.getConnection();
userCount = userDao.getUserCount(connection, username, userRole);
} catch (SQLException e) {
e.printStackTrace();
}finally {
BaseDao.closeResource(connection,null,null);
}
return userCount;
}
UserDao
//通过条件查询-userList
public List getUserList(Connection connection, String userName, int userRole, int currentPageNo, int pageSize) throws SQLException;
UserDaoImpl
//通过条件查询-userList
public List<User> getUserList(Connection connection, String userName, int userRole, int currentPageNo, int pageSize) throws SQLException {
PreparedStatement pstm = null;
ResultSet rs = 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(!StringUtils.isNullOrEmpty(userName)){
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();
System.out.println("sql ----> " + sql.toString());
rs = BaseDao.execute(connection, pstm, rs, sql.toString(), params);
while(rs.next()){
User _user = new User();
_user.setId(rs.getInt("id"));
_user.setUserCode(rs.getString("userCode"));
_user.setUserName(rs.getString("userName"));
_user.setGender(rs.getInt("gender"));
_user.setBirthday(rs.getDate("birthday"));
_user.setPhone(rs.getString("phone"));
_user.setUserRole(rs.getInt("userRole"));
_user.setUserRoleName(rs.getString("userRoleName"));
userList.add(_user);
}
BaseDao.closeResource(null, pstm, rs);
}
return userList;
}
UserService
//根据条件查询用户列表
public List<User> getUserList(String queryUserName, int queryUserRole, int currentPageNo, int pageSize);
UserServiceImpl
//根据条件查询用户列表
public List<User> getUserList(String queryUserName,int queryUserRole,int currentPageNo, int pageSize) {
Connection connection = null;
List<User> userList = null;
System.out.println("queryUserName ---- > " + queryUserName);
System.out.println("queryUserRole ---- > " + queryUserRole);
System.out.println("currentPageNo ---- > " + currentPageNo);
System.out.println("pageSize ---- > " + pageSize);
try {
connection = BaseDao.getConnection();
userList = userDao.getUserList(connection, queryUserName,queryUserRole,currentPageNo,pageSize);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
BaseDao.closeResource(connection, null, null);
}
return userList;
}
为了 职责统一,可以把角色的操作单独放在一个包,和pojo相对应
RoleDao
public interface RoleDao {
//获取角色列表
public List<Role> getRoleList(Connection connection) throws SQLException;
}
RoleDaoImpl
//获取角色列表
public List<Role> getRoleList(Connection connection) throws SQLException {
ResultSet resultSet = null;
PreparedStatement pstm = null;
List<Role> list = new ArrayList<Role>();
if (connection != null) {
String sql = "select * from smbms_role";
pstm = connection.prepareStatement(sql);
Object[] params = {};
resultSet = BaseDao.execute(connection, pstm, resultSet, sql, params);
while (resultSet.next()) {
Role _role = new Role();
_role.setId(resultSet.getInt("id"));
_role.setRoleCode(resultSet.getString("roleCode"));
_role.setRoleName(resultSet.getString("roleName"));
list.add(_role);
}
BaseDao.closeResource(null, pstm, resultSet);
}
return list;
}
RoleService
public interface RoleService {
//获得角色列表
public List<Role> getRoleList();
}
RoleServiceImpl
//获得角色列表
public class RoleServiceImpl implements RoleService {
//引入Dao
private RoleDao roleDao;
public RoleServiceImpl() {
roleDao = new RoleDaoImpl();
}
public List<Role> getRoleList() {
Connection connection = null;
List<Role> roleList = null;
try {
connection = BaseDao.getConnection();
roleList = roleDao.getRoleList(connection);
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeResource(connection, null, null);
}
return roleList;
}
}
//查询用户列表
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; //用户选择角色默认为0(1,2,3)
//获取用户列表
UserServiceImpl userService = new UserServiceImpl();
List<User> userList = null;
//第一次走这个请求,一定是第一页,页面大小固定
int pageSize = 5; //默认页面大小为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(); //获得分页数
//控制首页和尾页
if (totalPageCount < 1) {
currentPageNo = 1;
} else if (totalPageCount < currentPageNo) { //当前页大于总页数
currentPageNo = totalPageCount;
}
//获取用户列表展示
userList = userService.getUserList(queryUsername, queryUserRole, currentPageNo, pageSize);
req.setAttribute("userList", userList);
//获取角色列表
RoleServiceImpl roleService = new RoleServiceImpl();
List<Role> roleList = roleService.getRoleList();
req.setAttribute("roleList", roleList); //用户列表
req.setAttribute("totalCount", totalCount); //用户总数总数
req.setAttribute("currentPageNo", currentPageNo); //当前页
req.setAttribute("totalPageCount",totalPageCount); //页面总数
req.setAttribute("queryUserName",queryUsername);
req.setAttribute("queryUserRole",queryUserRole);
//返回前端
try {
req.getRequestDispatcher("userlist.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
UserDao
//增加用户信息
public int add(Connection connection,User user) throws Exception;
UserDaoImpl
public int add(Connection connection, User user) throws Exception {
PreparedStatement pstm = null;
int updateRows = 0;
if (connection != null) {
String sql = "insert into smbms_user (userCode,userName,userPassword,userRole,gender,birthday,phone,address,creationDate,createdBy) values(?,?,?,?,?,?,?,?,?,?)";
Object[] params = {user.getUserCode(), user.getUserName(), user.getUserPassword(), user.getUserRole(), user.getGender(), user.getBirthday(), user.getPhone(), user.getAddress(), user.getCreationDate(), user.getCreatedBy()};
updateRows = BaseDao.execute(connection, pstm, sql, params);
BaseDao.closeResource(null, pstm, null);
}
return updateRows;
}
UserService
//添加用户
public boolean add(User user);
UserServiceImpl
public boolean add(User user) {
Connection connection = null;
boolean flag = false;
try {
connection = BaseDao.getConnection();
connection.setAutoCommit(false);//开启事务
int updateRows = userDao.add(connection, user);
connection.commit();
if (updateRows > 0) {
flag = true;
} else {
System.out.println("添加失败");
}
} catch (Exception e) {
e.printStackTrace();
try {
connection.rollback();//添加失败,数据回滚
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return flag;
}
UserServlet
//添加用户
public void add(HttpServletRequest req, HttpServletResponse resp) throws Exception {
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("userName");
String userRole = req.getParameter("userRole");
User user = new User();
user.setUserCode(userCode);
user.setUserName(userName);
user.setUserPassword(userPassword);
user.setAddress(address);
try {
user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(birthday));
} catch (ParseException e) {
e.printStackTrace();
}
user.setGender(Integer.valueOf(gender));
user.setPhone(phone);
user.setUserRole(Integer.valueOf(userRole));
user.setCreationDate(new Date());
user.setCreatedBy(((User) req.getSession().getAttribute(Constants.User_Session)).getId());
UserService userService = new UserServiceImpl();
if (userService.add(user)) {
resp.sendRedirect(req.getContextPath() + "/jsp/user.do?method=query");
} else {
req.getRequestDispatcher("useradd.jsp").forward(req, resp);
}
}
UserDao
//通过userID删除对象
public int deleteUserById(Connection connection, Integer delId)throws Exception;
UserDaoImpl
//通过用户id删除用户
public int deleteUserById(Connection connection, Integer delId) throws Exception {
PreparedStatement pstm = null;
int flag = 0;
if (connection != null) {
String sql = "delete from smbms_user where id=?";
Object[] params = {delId};
flag = BaseDao.execute(connection, pstm, sql, params);
BaseDao.closeResource(null, pstm, null);
}
return flag;
}
UserService
//删除用户
public boolean deleteUserById(Integer delId);
UserServiceImpl
//通过id删除用户
public boolean deleteUserById(Integer delId) {
Connection connection = null;
boolean flag = false;
try {
connection = BaseDao.getConnection();
if (userDao.deleteUserById(connection, delId) > 0) {
flag = true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
BaseDao.closeResource(connection, null, null);
}
return flag;
}
UserServlet
//删除用户
private void delUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("uid");
Integer delId = 0;
try {
delId = Integer.parseInt(id);
} catch (Exception e) {
delId = 0;
}
HashMap<String, String> resultMap = new HashMap<String, String>();
if (delId <= 0) {
resultMap.put("delResult", "notexist");
} else {
UserService userService = new UserServiceImpl();
if (userService.deleteUserById(delId)) {
resultMap.put("delResult", "true");
} else {
resultMap.put("delResult", "false");
}
}
}
UserDao
//修改用户名信息
public int modify(Connection connection, User user)throws Exception;
UserDaoImpl
//修改用户信息
public int modify(Connection connection, User user) throws Exception {
int flag = 0;
PreparedStatement pstm = null;
if (connection != null) {
String sql = "update smbms_user set userName=?,gender=?,birthday=?,phone=?,address=?,userRole=?,modifyBy=?,modifyDate=? where id =?";
Object[] params = {user.getUserName(), user.getGender(), user.getBirthday(),
user.getPhone(), user.getAddress(), user.getUserRole(), user.getModifyBy(),
user.getModifyDate(), user.getId()};
flag = BaseDao.execute(connection, pstm, sql, params);
BaseDao.closeResource(null, pstm, null);
}
return flag;
}
UserService
//修改用户
public boolean modify(User user);
UserServiceImpl
//修改用户
public boolean modify(User user) {
Connection connection = null;
boolean flag = false;
try {
connection = BaseDao.getConnection();
if (userDao.modify(connection, user) > 0)
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
BaseDao.closeResource(connection, null, null);
}
return flag;
}
UserServlet
//修改用户数据
private void modify(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("uid");
String userName = request.getParameter("userName");
String gender = request.getParameter("gender");
String birthday = request.getParameter("birthday");
String phone = request.getParameter("phone");
String address = request.getParameter("address");
String userRole = request.getParameter("userRole");
User user = new User();
user.setId(Integer.valueOf(id));
user.setUserName(userName);
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.setModifyBy(((User) request.getSession().getAttribute(Constants.User_Session)).getId());
user.setModifyDate(new Date());
UserService userService = new UserServiceImpl();
if (userService.modify(user)) {
response.sendRedirect(request.getContextPath() + "/jsp/user.do?method=query");
} else {
request.getRequestDispatcher("usermodify.jsp").forward(request, response);
}
}