天天看點

狂神 原生JavaWeb 三層架構 JDBC (超市訂單管理系統smbms)---

[](()3)權限攔截

未登入使用者不允計通路背景
  • 過濾器

public class LoginFilter implements Filter {

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response = (HttpServletResponse) resp;

Object user = request.getSession().getAttribute(Constants.USER_SESSION);

// 未登入

if (user == null) {

response.sendRedirect(request.getContextPath() + “/error.jsp”);

}

// 執行下一鍊

chain.doFilter(request, response);

}

@Override

public void destroy() {

}

}

[](()4)修改密碼

[](()(1)Dao層

public interface UserDao {

int modifyPwd(Connection connection, int id, String newPassword);

}

public class UserDaoImpl implements UserDao{

@Override

public int modifyPwd(Connection connection, int id, String newPassword){

if(connection == null){

return 0;

}

String sql = “update smbms_user set userPassword = ? where id = ?”;

//Object[] params = {newPassword,id};

List params = new ArrayList<>();

params.add(newPassword);

params.add(id);

int i = 0;

try {

i = BaseDao.executeUpdate(connection, sql, params);

} catch (SQLException e) {

e.printStackTrace();

} finally {

return i;

}

}

}

[](()(2)Service層

public interface UserService {

boolean modifyPwd(int id, String newPassword);

}

public class UserServiceImpl implements UserService {

@Override

public boolean modifyPwd(int id, String newPassword) {

Connection connection = BaseDao.getConnection();

int i = userDao.modifyPwd(connection, id, newPassword);

// 關閉連接配接

BaseDao.close(connection, null, null);

if (i > 0) {

return true;

}

return false;

}

}

[](()(3)Servlet層

類的複用

public class UserServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String method = req.getParameter(“method”);

if(StringUtils.isNullOrEmpty(method)){

return;

}

// 修改密碼

if (Objects.equals(“modifypwd”, method)) {

modifyPwd(req, resp);

return;

}

// 檢驗舊密碼

if (Objects.equals(“checkpwd”, method)) {

checkPwd(req, resp);

return;

}

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGet(req, resp);

}

private void modifyPwd(HttpServletRequest req, 《一線大廠Java面試題解析+後端開發學習筆記+最新架構講解視訊+實戰項目源碼講義》無償開源 威信搜尋公衆号【程式設計進階路】 HttpServletResponse resp) throws ServletException, IOException {

// —從Session中擷取使用者—

User user = (User) req.getSession().getAttribute(Constants.USER_SESSION);

// Session失效

if(user==null){

req.setAttribute(Constants.MESSAGE,“請重新登入!”);

req.getRequestDispatcher(“/login.jsp”).forward(req,resp);

return;

}

// —得到使用者輸入的舊密碼—

String oldpassword = req.getParameter(“oldpassword”);

if(StringUtils.isNullOrEmpty(oldpassword) || !Objects.equals(user.getUserPassword(),oldpassword)){

// 舊密碼不合法:空 | null | 新舊不一緻

// 請求轉發至修改密碼頁面,傳回

req.setAttribute(Constants.MESSAGE,“舊密碼錯誤!”);

req.getRequestDispatcher(“/jsp/pwdmodify.jsp”).forward(req,resp);

return;

}

// —得到使用者輸入的新密碼—

String newpassword = req.getParameter(“newpassword”);

// 修改密碼

UserServiceImpl userService = new UserServiceImpl();

boolean b = userService.modifyPwd(user.getId(), newpassword);

// 修改成功:移除Session中的User,重定向至登入頁,給出提示資訊,退出

if(b){

req.getSession().removeAttribute(Constants.USER_SESSION);

req.setAttribute(Constants.MESSAGE,“密碼修改成功!請重新登入!”);

req.getRequestDispatcher(“/login.jsp”).forward(req,resp);

return;

}

// 修改失敗:請求轉發至修改密碼頁面,給出提示資訊

req.setAttribute(Constants.MESSAGE,“密碼修改失敗!”);

req.getRequestDispatcher(“/jsp/pwdmodify.jsp”).forward(req,resp);

}

}

  • web.xml 中配置 Servlet

userServlet

com.tuwer.servlet.user.UserServlet

userServlet

/jsp/user.do

[](()(4)優化:Ajax檢驗舊密碼

  • js片段

$.ajax({

type:“GET”,

url:path+“/jsp/user.do”,

data:{method:“checkpwd”,oldpassword:oldpassword.val()},

dataType:“json”,

success:function(data){

if(data.result == “true”){//舊密碼正确

validateTip(oldpassword.next(),{“color”:“green”},imgYes,true);

}else if(data.result == “false”){//舊密碼輸入不正确

validateTip(oldpassword.next(),{“color”:“red”},imgNo + " 原密碼輸入不正确",false);

}else if(data.result == “sessionerror”){//目前使用者session過期,請重新登入

validateTip(oldpassword.next(),{“color”:“red”},imgNo + " 目前使用者session過期,請重新登入",false);

}else if(data.result == “error”){//舊密碼輸入為空

validateTip(oldpassword.next(),{“color”:“red”},imgNo + " 請輸入舊密碼",false);

}

},

error:function(data){

//請求出錯

validateTip(oldpassword.next(),{“color”:“red”},imgNo + " 請求錯誤",false);

}

});

  • Servlet

private void checkPwd(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// 結果集

Map<String, String> resultMap = new HashMap<>(1);

// —從Session中擷取使用者—

User user = (User) req.getSession().getAttribute(Constants.USER_SESSION);

// Session失效

if (user == null) {

resultMap.put(“result”, “sessionerror”);

} else {

// —得到使用者輸入的舊密碼—

String oldpassword = req.getParameter(“oldpassword”);

if (StringUtils.isNullOrEmpty(oldpassword)) {

// 舊密碼不合法:空 | null

resultMap.put(“result”, “error”);

} else if (Objects.equals(user.getUserPassword(), oldpassword)) {

// 密碼新舊一緻

resultMap.put(“result”, “true”);

} else {

resultMap.put(“result”, “false”);

}

}

// —傳回json資料—

resp.setContentType(“application/json”);

PrintWriter writer = resp.getWriter();

// 自定義JSON {“result”:“true”}

//writer.print(“{“result”:”" + resultMap.get(“result”) + “”}");

// 調用阿裡巴巴JSON

writer.print(JSONArray.toJSONString(resultMap));

writer.close();

}

com.alibaba

fastjson

1.2.78

  • web.xml中不用再注冊(複用)

[](()5、使用者管理

================================================================

[](()1)檢視使用者清單

分頁查詢使用者資訊
  • 需要查使用者資訊 / 需要統計使用者總數 / 需要查角色表
  • 支援名稱模糊查詢
  • 支援按角色查詢
狂神 原生JavaWeb 三層架構 JDBC (超市訂單管理系統smbms)---

[](()(1)Dao層

  • 接口方法
UserDao.java

int getUserCount(Connection connection,String userName,int userRole);

List getUserList(

Connection connection,

String userName,

int userRole,

int startIndex,

int pageSize

);

角色接口

public interface RoleDao {

List getRoleList(Connection connection);

}

  • 實作類
UserDaoImpl.java

@Override

public int getUserCount(Connection connection, String userName, int userRole) {

if (connection == null) {

return 0;

}

//String sql = “select count(1) from smbms_user u,smbms_role r where u.userRole = ? and u.userName like ? and u.userRole = r.id”;

// 隻要數量,不需要查角色表

StringBuffer sql = new StringBuffer();

sql.append(“select count(1) as count from smbms_user u”);

// 參數

List params = new ArrayList<>();

// —拼接sql及參數清單—

// 判斷是否有使用者名

boolean noUserName = StringUtils.isNullOrEmpty(userName);

// 判斷是否有用色

boolean noUserRole = userRole < 1;

// 沒有角色

if (noUserRole) {

// 有使用者名

if (!noUserName) {

sql.append(" where u.userName like ?");

params.add(“%” + userName + “%”);

}

}

// 有角色

else {

sql.append(" where u.userRole = ?");

params.add(userRole);

// 有使用者名

if (!noUserName) {

sql.append(" and u.userName like ?");

params.add(“%” + userName + “%”);

}

}

int count = 0;

try {

RowSet rowSet = BaseDao.executeQuery(connection, sql.toString(), params);

if (rowSet.next()) {

count = rowSet.getInt(“count”);

}

} catch (SQLException e) {

e.printStackTrace();

}

return count;

}

@Override

public List getUserList(

Connection connection,

String userName,

int userRole,

int startIndex,

int pageSize) {

if (connection == null) {

return null;

}

StringBuffer sql = new StringBuffer();

sql.append(“select u.*,r.roleName as userRoleName from smbms_user u,smbms_role r where”);

// 參數

List params = new ArrayList<>();

// —拼接sql及參數清單—

// 判斷是否有使用者名

boolean noUserName = StringUtils.isNullOrEmpty(userName);

// 判斷是否有用色

boolean noUserRole = userRole < 1;

// 沒有角色

if (noUserRole) {

// 有使用者名

if (!noUserName) {

sql.append(" u.userName like ? and");

params.add(“%” + userName + “%”);

}

sql.append(" u.userRole = r.id");

}

// 有角色

else {

sql.append(" u.userRole = ? and");

params.add(userRole);

// 有使用者名

if (!noUserName) {

sql.append(" u.userName like ? and");

params.add(“%” + userName + “%”);

}

sql.append(" u.userRole = r.id");

}

sql.append(" order by creationDate desc limit ?,?");

params.add(startIndex - 1);

params.add(pageSize);

List userList = new ArrayList<>();

try {

RowSet rs = BaseDao.executeQuery(connection, 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.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((LocalDateTime) rs.getObject(“creationDate”));

user.setModifyBy(rs.getInt(“modifyBy”));

user.setModifyDate((LocalDateTime) rs.getObject(“modifyDate”));

user.setUserRoleName(rs.getString(“roleName”));

//user.setUserRoleName(rs.getString(rs.getMetaData().getColumnName(14)));

userList.add(user);

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

return userList;

}

}

RoleDaoImpl.java

public class RoleDaoImpl implements RoleDao{

@Override

public List getRoleList(Connection connection) {

if(connection == null){

return null;

}

String sql = “select * from smbms_role order by creationDate desc”;

List roleList = new ArrayList<>();

try {

RowSet rs = BaseDao.executeQuery(connection, sql, null);

while (rs.next()){

Role r = new Role();

r.setId(rs.getInt(“id”));

r.setRoleCode(rs.getString(“roleCode”));

r.setRoleName(rs.getString(“roleName”));

r.setCreatedBy(rs.getInt(“createdBy”));

r.setCreatedBy(rs.getInt(“createdBy”));

r.setCreationDate((LocalDateTime) rs.getObject(“creationDate”));

r.setModifyBy(rs.getInt(“modifyBy”));

r.setModifyDate((LocalDateTime) rs.getObject(“modifyDate”));

roleList.add®;

}

} catch (SQLException e) {

e.printStackTrace();

}

return roleList;

}

}

[](()(2)Service層

  • 接口方法
UserService.java

int getUserCount(String userName,int userRole);

List getUserList(

String userName,

int userRole,

int startIndex,

int pageSize

);

RoleService.java

public interface RoleService {

List getRoleList();

}

  • 實作類
UserServiceImpl.java

@Override

public int getUserCount(String userName, int userRole) {

Connection connection = BaseDao.getConnection();

int count = userDao.getUserCount(connection, userName, userRole);

// 關閉連接配接

BaseDao.close(connection, null, null);

return count;

}

@Override

public List getUserList(String userName, int userRole, int startIndex, int pageSize) {

Connection connection = BaseDao.getConnection();

List userList = userDao.getUserList(connection, userName, userRole, startIndex, pageSize);

// 關閉連接配接

BaseDao.close(connection, null, null);

return userList;

}

RoleServiceImpl.java

public class RoleServiceImpl implements RoleService {

RoleDao roleDao;

public RoleServiceImpl() {

this.roleDao = new RoleDaoImpl();

}

@Override

public List getRoleList() {

Connection connection = BaseDao.getConnection();

List roleList = roleDao.getRoleList(connection);

// 關閉連接配接

BaseDao.close(connection, null, null);

return roleList;

}

}

[](()(3)Servlet層

UserServlet.java

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String method = req.getParameter(“method”);

if (StringUtils.isNullOrEmpty(method)) {

return;

}

// 查詢使用者清單

if (Objects.equals(“query”, method)) {

query(req, resp);

return;

}

}

private void query(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// —從Session中擷取使用者—

User user = (User) req.getSession().getAttribute(Constants.USER_SESSION);

// Session失效

if (user == null) {

req.setAttribute(Constants.MESSAGE, “請重新登入!”);

req.getRequestDispatcher(“/login.jsp”).forward(req, resp);

return;

}

// —準備參數—

// 要查詢使用者名

String queryName = req.getParameter(“queryname”);

// 要查詢角色

int userRoleId = PageUtil.strToInt_0123(req.getParameter(“queryUserRole”));

// 總記錄數

UserServiceImpl userService = new UserServiceImpl();

int rows = userService.getUserCount(queryName, userRoleId);

// 總頁數

int pages = PageUtil.getPages(rows, Constants.PAGE_SIZE);

// 目前頁

int currentPage = PageUtil.getCurrentPage(req.getParameter(“pageIndex”), pages);

// 查詢起始位置

int startIndex = PageUtil.getStartIndex(currentPage, Constants.PAGE_SIZE);

// —擷取角色清單—

RoleServiceImpl roleService = new RoleServiceImpl();

List roleList = roleService.getRoleList();

// 把角色清單存入Session中,友善後面使用

req.getSession().setAttribute(Constants.ROLE_SESSION, roleList);

// —擷取使用者清單—

List userList = userService.getUserList(queryName, userRoleId, startIndex, Constants.PAGE_SIZE);

// 轉發請求

req.setAttribute(“roleList”, roleList);

req.setAttribute(“userList”, userList);

req.setAttribute(“totalCount”, rows);

req.setAttribute(“currentPageNo”, currentPage);

req.setAttribute(“totalPageCount”, pages);

req.setAttribute(“queryUserName”, queryName);

req.setAttribute(“queryUserRole”, userRoleId);

req.setAttribute(“startIndex”, startIndex);

req.getRequestDispatcher(“/jsp/userlist.jsp”).forward(req, resp);

}

狂神 原生JavaWeb 三層架構 JDBC (超市訂單管理系統smbms)---

[](()2)添加使用者

狂神 原生JavaWeb 三層架構 JDBC (超市訂單管理系統smbms)---

[](()(1)Dao層

boolean userCodeIsExist(Connection connection,String userCode);

int addUser(Connection connection,User user);

@Override

public boolean userCodeIsExist(Connection connection, String userCode) {

if (connection == null) {

return false;

}

String sql = “select count(1) as count from smbms_user where userCode = ?”;

// 參數

List params = new ArrayList<>();

params.add(userCode);

boolean isExist = false;

try {

RowSet rowSet = BaseDao.executeQuery(connection, sql, params);

if (rowSet.next()) {

if (rowSet.getInt(“count”) > 0) {

isExist = true;

}

}

} catch (SQLException e) {

e.printStackTrace();

}

return isExist;

}

@Override

public int addUser(Connection connection, User user) {

if (connection == null) {

return 0;

}

String sql = “insert into smbms_user (userCode,userName,userPassword,” +

"userRole,gender,birthday,phone,address,creationDate,createdBy) " +

“values(?,?,?,?,?,?,?,?,?,?)”;

// 參數

List params = new ArrayList<>();

params.add(user.getUserCode());

params.add(user.getUserName());

params.add(user.getUserPassword());

params.add(user.getUserRole());

params.add(user.getGender());

params.add(user.getBirthday());

params.add(user.getPhone());

params.add(user.getAddress());

params.add(user.getCreationDate());

params.add(user.getCreatedBy());

int i = 0;

try {

i = BaseDao.executeUpdate(connection, sql, params);

} catch (SQLException e) {

e.printStackTrace();

}

return i;

}

[](()(2)Service層

boolean userCodeIsExist(String userCode);

boolean addUser(User user);

@Override

public boolean userCodeIsExist(String userCode) {

Connection connection = BaseDao.getConnection();

boolean isExist = userDao.userCodeIsExist(connection,userCode);

// —關閉—

BaseDao.close(connection, null, null);

return isExist;

}

@Override

public boolean addUser(User user) {

boolean flag = false;

Connection connection = BaseDao.getConnection();

try {

// —開啟事務—

connection.setAutoCommit(false);

// —添加—

int i = userDao.addUser(connection, user);

// —正常傳回,送出事務—

connection.commit();

if (i > 0) {

flag = true;

}

} catch (SQLException e) {

e.printStackTrace();

// —異常—

// —事務復原—

try {

connection.rollback();

} catch (SQLException throwables) {

throwables.printStackTrace();

}

} finally {

// —關閉—

BaseDao.close(connection, null, null);

}

// —傳回—

return flag;

}

[](()(3)Servlet層

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String method = req.getParameter(“method”);

if (StringUtils.isNullOrEmpty(method)) {

return;

}

// 添加使用者

if (Objects.equals(“add”, method)) {

addUser(req, resp);

return;

}

// 驗證userCode是否已存在

if (Objects.equals(“ucexist”, method)) {

userCodeIsExist(req, resp);

return;

}

}

private void userCodeIsExist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// 結果集

Map<String, String> resultMap = new HashMap<>(1);

// —得到使用者賬号—

String userCode = req.getParameter(“userCode”);

if (StringUtils.isNullOrEmpty(userCode)) {

// 使用者賬号不合法:空 | null

resultMap.put(“userCode”, “error”);

} else if (new UserServiceImpl().userCodeIsExist(userCode)) {

// 已存在

resultMap.put(“userCode”, “exist”);

} else {

// 不存在

resultMap.put(“userCode”, “notexist”);

}

// —傳回json資料—

resp.setContentType(“application/json”);

PrintWriter writer = resp.getWriter();

// 自定義JSON {“result”:“true”}

//writer.print(“{“result”:”" + resultMap.get(“result”) + “”}");

// 調用阿裡巴巴JSON

writer.print(JSONArray.toJSONString(resultMap));

writer.close();

}

private void addUser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// —從Session中擷取使用者—

User user = (User) req.getSession().getAttribute(Constants.USER_SESSION);

// Session失效

if (user == null) {

req.setAttribute(Constants.MESSAGE, “請重新登入!”);

req.getRequestDispatcher(“/login.jsp”).forward(req, resp);

return;

}

// —接收參數—

String userCode = req.getParameter(“userCode”).trim();

String userName = req.getParameter(“userName”).trim();

String userPassword = req.getParameter(“userPassword”);

String gender = req.getParameter(“gender”).trim();

String birthday = req.getParameter(“birthday”).trim();

String phone = req.getParameter(“phone”).trim();

String address = req.getParameter(“address”).trim();

String userRole = req.getParameter(“userRole”).trim();

// —生成User—

User newUser = new User();

newUser.setUserCode(userCode);

newUser.setUserName(userName);

newUser.setUserPassword(userPassword);

newUser.setGender(Integer.parseInt(gender));

try {

newUser.setBirthday(new SimpleDateFormat(“yyyy-MM-dd”).parse(birthday));

} catch (ParseException e) {

e.printStackTrace();

}

newUser.setPhone(phone);

newUser.setAddress(address);

newUser.setUserRole(Integer.parseInt(userRole));

// 建立時間:目前時間

newUser.setCreationDate(LocalDateTime.now());

// 建立者:目前登入使用者Id

newUser.setCreatedBy(user.getId());

// —添加—

UserServiceImpl userService = new UserServiceImpl();

// 添加成功:重定向至使用者清單頁

if (userService.addUser(newUser)) {

resp.sendRedirect(req.getContextPath() + “/jsp/user.do?method=query”);

return;

}

// 添加失敗:轉發至添加使用者頁

req.getRequestDispatcher(“/jsp/useradd.jsp”).forward(req, resp);

}

[](()3)檢視特定使用者

狂神 原生JavaWeb 三層架構 JDBC (超市訂單管理系統smbms)---

[](()(1)Dao層

User getUserById(Connection connection,int userId);

@Override

public User getUserById(Connection connection, int userId) {

if (connection == null) {

return null;

}

String sql = “select u.*,r.roleName from smbms_user u,smbms_role r where u.id = ? and u.userRole = r.id”;

// 參數

List params = new ArrayList<>();

params.add(userId);

User user = null;

try {

RowSet rs = BaseDao.executeQuery(connection, sql, params);

if (rs.next()) {

user = new User();

user.setId(userId);

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((LocalDateTime) rs.getObject(“creationDate”));

user.setModifyBy(rs.getInt(“modifyBy”));

user.setModifyDate((LocalDateTime) rs.getObject(“modifyDate”));

user.setUserRoleName(rs.getString(rs.getMetaData().getColumnName(14)));

}

} catch (SQLException e) {

e.printStackTrace();

}

return user;

}

[](()(2)Service層

User getUserById(int userId);

@Override

public User getUserById(int userId) {

Connection connection = BaseDao.getConnection();

User user = userDao.getUserById(connection, userId);

// —關閉—

BaseDao.close(connection, null, null);

return user;

}

[](()(3)Servlet層

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String method = req.getParameter(“method”);

if (StringUtils.isNullOrEmpty(method)) {

return;

}

// 檢視使用者

if (Objects.equals(“view”, method)) {

viewUser(req, resp);

return;

}

}

private void viewUser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// —從Session中擷取使用者—

User user = (User) req.getSession().getAttribute(Constants.USER_SESSION);

// Session失效

if (user == null) {

req.setAttribute(Constants.MESSAGE, “請重新登入!”);

req.getRequestDispatcher(“/login.jsp”).forward(req, resp);

return;

}

// —準備參數—

// 要查詢使用者Id

String userId = req.getParameter(“uid”);

if (StringUtils.isNullOrEmpty(userId)) {

// 使用者Id不合法:空 | null

return;

} else {

User u = new UserServiceImpl().getUserById(Integer.parseInt(userId));

// 轉發請求

req.setAttribute(“user”, u);

req.getRequestDispatcher(“/jsp/userview.jsp”).forward(req, resp);

}

}

[](()4)修改使用者

狂神 原生JavaWeb 三層架構 JDBC (超市訂單管理系統smbms)---
狂神 原生JavaWeb 三層架構 JDBC (超市訂單管理系統smbms)---

[](()(1)Dao層

boolean modifyUser(Connection connection,User user);

@Override

public boolean modifyUser(Connection connection, User user) {

if (connection == null) {

return false;

}

String sql = “update smbms_user set userName = ?,gender = ?,birthday = ?,phone = ?,address = ?,userRole = ?,modifyBy = ?,modifyDate = ? where id = ?”;

// 參數

List params = new ArrayList<>();

params.add(user.getUserName());

params.add(user.getGender());

params.add(user.getBirthday());

params.add(user.getPhone());

params.add(user.getAddress());

params.add(user.getUserRole());

params.add(user.getModifyBy());

params.add(user.getModifyDate());

params.add(user.getId());

boolean success = false;

try {

int i = BaseDao.executeUpdate(connection, sql, params);

if (i > 0) {

success = true;

}

} catch (SQLException e) {

e.printStackTrace();

}

return success;

}

[](()(2)Service層

boolean modifyUser(User user);

@Override

public boolean modifyUser(User user) {

boolean flag = false;

Connection connection = BaseDao.getConnection();

try {

// —開啟事務—

connection.setAutoCommit(false);

// —修改—

flag = userDao.modifyUser(connection, user);

// —正常傳回,送出事務—

connection.commit();

} catch (SQLException e) {

e.printStackTrace();

// —異常—

// —事務復原—

try {

connection.rollback();

} catch (SQLException throwables) {

throwables.printStackTrace();

}

} finally {

// —關閉—

BaseDao.close(connection, null, null);

}

// —傳回—

return flag;

}

[](()(3)Servlet層

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String method = req.getParameter(“method”);

if (StringUtils.isNullOrEmpty(method)) {

return;

}

// 進入修改使用者頁面

if (Objects.equals(“modify”, method)) {

goModifyUser(req, resp);

return;

}

// 修改使用者

if (Objects.equals(“modifyexe”, method)) {

modifyUser(req, resp);

return;

}

}

private void goModifyUser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// —從Session中擷取使用者—

User user = (User) req.getSession().getAttribute(Constants.USER_SESSION);

// Session失效

if (user == null) {

req.setAttribute(Constants.MESSAGE, “請重新登入!”);

req.getRequestDispatcher(“/login.jsp”).forward(req, resp);

return;

}

// —準備參數—

// 使用者Id

String userId = req.getParameter(“uid”);

if (StringUtils.isNullOrEmpty(userId)) {

// 使用者Id不合法:空 | null

return;

} else {

User u = new UserServiceImpl().getUserById(Integer.parseInt(userId));

// 轉發請求

req.setAttribute(“user”, u);

req.getRequestDispatcher(“/jsp/usermodify.jsp”).forward(req, resp);

}

}

private void modifyUser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// —從Session中擷取使用者—

User user = (User) req.getSession().getAttribute(Constants.USER_SESSION);

// Session失效

if (user == null) {

req.setAttribute(Constants.MESSAGE, “請重新登入!”);

req.getRequestDispatcher(“/login.jsp”).forward(req, resp);

return;

}

// —準備參數—

// 使用者Id

String userId = req.getParameter(“uid”);

String userName = req.getParameter(“userName”);

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”);

if (StringUtils.isNullOrEmpty(userId)) {

// 使用者Id不合法:空 | null

return;

} else {

// —生成User—

UserServiceImpl userService = new UserServiceImpl();

User newUser = userService.getUserById(Integer.parseInt(userId));

newUser.setUserName(userName);

newUser.setGender(Integer.parseInt(gender));

try {

newUser.setBirthday(new SimpleDateFormat(“yyyy-MM-dd”).parse(birthday));

} catch (ParseException e) {

e.printStackTrace();

}

newUser.setPhone(phone);

newUser.setAddress(address);

newUser.setUserRole(Integer.parseInt(userRole));

// 修改時間:目前時間

newUser.setCreationDate(LocalDateTime.now());

// 建立者:目前登入使用者Id

newUser.setCreatedBy(user.getId());

if (userService.modifyUser(newUser)) {

// 修改成功:傳回使用者資訊頁面

resp.sendRedirect(req.getContextPath() + “/jsp/user.do?method=view&uid=” + userId);

} else {

// 修改失敗:傳回修改頁面

// 轉發請求

req.setAttribute(“user”, newUser);

req.getRequestDispatcher(“/jsp/usermodify.jsp”).forward(req, resp);

}

}

}

[](()5)删除使用者

[](()(1)Dao層

boolean deleteUser(Connection connection,int userId);

@Override

public boolean deleteUser(Connection connection, int userId) {

if (connection == null) {

return false;

}

String sql = “delete from smbms_user where id = ?”;

// 參數

List params = new ArrayList<>();

params.add(userId);

boolean success = false;

try {

if (BaseDao.executeUpdate(connection, sql, params) > 0) {

success = true;

}

} catch (SQLException e) {

e.printStackTrace();

}

return success;

}

[](()(2)Service層

boolean deleteUser(int userId);

@Override

public boolean deleteUser(int userId) {

Connection connection = BaseDao.getConnection();

boolean success = userDao.deleteUser(connection, userId);

// —關閉—

BaseDao.close(connection, null, null);

return success;

}

[](()(3)Servlet層

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String method = req.getParameter(“method”);

if (StringUtils.isNullOrEmpty(method)) {

return;

}

// 删除使用者

if (Objects.equals(“deluser”, method)) {

deleteUser(req, resp);

return;

}

}

private void deleteUser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// 結果集

Map<String, String> resultMap = new HashMap<>(1);

// —得到使用者id—

String userId = req.getParameter(“uid”);

if (StringUtils.isNullOrEmpty(userId)) {

// 使用者Id不合法:空 | null

resultMap.put(“result”, “false”);

} else if (new UserServiceImpl().deleteUser(Integer.parseInt(userId))) {

// 已存在

resultMap.put(“result”, “true”);

} else {

// 不存在

resultMap.put(“result”, “notexist”);

}

// —傳回json資料—

繼續閱讀