SSH2实现用户增删改查

落日映苍穹つ 2021-09-28 03:40 475阅读 0赞

SSH2实现用户增删改查

      • 一、使用myeclipse搭建ssh2框架
      • 二、相关配置文件
      • 三、各个层级代码示例
          • 1、action层
          • 2、service层
          • 3、dao层
      • 四、jsp文件
          • 1、显示列表
          • 2、获取查询到的信息
          • 3、更新信息
          • 4、添加信息
      • 五、运行

一、使用myeclipse搭建ssh2框架

这边使用的是spring4.1+struts2.1+hibernate4.1进行框架搭建,详细查看(MyEclipse搭建ssh2项目):https://blog.csdn.net/lxw983520/article/details/85704506

二、相关配置文件

参考:https://blog.csdn.net/lxw983520/article/details/86631710
这边需要指出的是struts.xml的不同:每个增删改查需要用不同的jsp页面去做视图跳转。

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
  3. <struts>
  4. <constant name="struts.i18n.encoding" value="UTF-8"/>
  5. <package name="ssh2" extends="struts-default" namespace="/">
  6. <!-- 保存用户页面视图控制 -->
  7. <action name="saveUser" class="userAction" method="saveUser">
  8. <result name="saveSuccess" type="redirectAction">
  9. <param name="actionName">userList</param>
  10. </result>
  11. </action>
  12. <!--查询用户页面视图控制-->
  13. <action name="selectById" class="userAction" method="selectById">
  14. <result name="getSuccess">/jsp/info.jsp</result>
  15. <result name="404">/jsp/404.jsp</result>
  16. </action>
  17. <!--更新用户页面视图控制-->
  18. <action name="updateUser" class="userAction" method="updateUser">
  19. <result name="updateSuccess" type="redirectAction">
  20. <param name="actionName">userList</param>
  21. </result>
  22. </action>
  23. <!--删除用户页面视图控制-->
  24. <action name="deleteUser" class="userAction" method="deleteUser">
  25. <result name="updateSuccess" type="redirectAction">
  26. <param name="actionName">userList</param>
  27. </result>
  28. </action>
  29. <!-- 用户列表 -->
  30. <action name="userList" class="userAction">
  31. <result name="success" type="redirect">/jsp/list.jsp</result>
  32. </action>
  33. </package>
  34. </struts>

三、各个层级代码示例

1、action层

调用service层,不同业务逻辑使用不同方法。

  1. package ssh2.com.action;
  2. import java.util.List;
  3. import com.opensymphony.xwork2.ActionContext;
  4. import com.opensymphony.xwork2.ActionSupport;
  5. import ssh2.com.entity.SysUser;
  6. import ssh2.com.service.UserService;
  7. /**
  8. * @author lxw
  9. */
  10. public class UserAction extends ActionSupport {
  11. private static final long serialVersionUID = 1L;
  12. private SysUser sysUser;
  13. private UserService userService;
  14. public static long getSerialversionuid() {
  15. return serialVersionUID;
  16. }
  17. //用户列表
  18. @Override
  19. public String execute() throws Exception {
  20. System.out.println("用户列表Action");
  21. List<SysUser> list = userService.userList();
  22. ActionContext.getContext().getSession().put("userList",list);
  23. return SUCCESS;
  24. }
  25. //保存用户信息
  26. public String saveUser(){
  27. System.out.println("保存用户信息Action");
  28. userService.save(sysUser);
  29. return "saveSuccess";
  30. }
  31. //更新用户信息
  32. public String updateUser(){
  33. System.out.println("更新用户信息Action");
  34. userService.update(sysUser);
  35. return "updateSuccess";
  36. }
  37. //删除用户信息
  38. public String deleteUser(){
  39. System.out.println("删除用户信息Action");
  40. userService.delete(sysUser);
  41. System.out.println(sysUser.getId());
  42. return "updateSuccess";
  43. }
  44. //查询用户信息
  45. public String selectById(){
  46. System.out.println("查询用户信息Action");
  47. //根据Id获取用户
  48. sysUser = userService.selectById(sysUser.getId());
  49. if(sysUser != null){
  50. System.out.println(sysUser.getUserName());
  51. return "getSuccess";
  52. }
  53. return "404";
  54. }
  55. public SysUser getSysUser() {
  56. return sysUser;
  57. }
  58. public void setSysUser(SysUser sysUser) {
  59. this.sysUser = sysUser;
  60. }
  61. public UserService getUserService() {
  62. return userService;
  63. }
  64. public void setUserService(UserService userService) {
  65. this.userService = userService;
  66. }
  67. }
2、service层

调用Dao层。

  1. package ssh2.com.service;
  2. import java.util.List;
  3. import org.springframework.transaction.annotation.Transactional;
  4. import ssh2.com.dao.UserDao;
  5. import ssh2.com.entity.SysUser;
  6. /**
  7. * @author lxw
  8. */
  9. @Transactional
  10. public class UserService {
  11. private UserDao userDao;
  12. public UserDao getUserDao() {
  13. return userDao;
  14. }
  15. public void setUserDao(UserDao userDao) {
  16. this.userDao = userDao;
  17. }
  18. public List<SysUser> userList(){
  19. System.out.println("用户列表Service");
  20. return userDao.getUserList();
  21. }
  22. public void save(SysUser sysUser) {
  23. System.out.println("保存Service");
  24. userDao.saveUser(sysUser);
  25. }
  26. public void update(SysUser sysUser) {
  27. System.out.println("更新用户Service");
  28. userDao.updateUser(sysUser);
  29. }
  30. public void delete(SysUser sysUser) {
  31. System.out.println("更新用户Service");
  32. userDao.deleteUser(sysUser);
  33. }
  34. public SysUser selectById(Integer id) {
  35. System.out.println("查询用户Service");
  36. return userDao.selectById(id);
  37. }
  38. }
3、dao层

使用session中的自带增删改查操作。

  1. package ssh2.com.dao;
  2. import java.util.List;
  3. import org.hibernate.SQLQuery;
  4. import org.hibernate.SessionFactory;
  5. import ssh2.com.entity.SysUser;
  6. /**
  7. * @author lxw
  8. */
  9. public class UserDao {
  10. private SessionFactory sessionFactory;
  11. public SessionFactory getSessionFactory() {
  12. return sessionFactory;
  13. }
  14. public void setSessionFactory(SessionFactory sessionFactory) {
  15. this.sessionFactory = sessionFactory;
  16. }
  17. //用户列表
  18. @SuppressWarnings("unchecked")
  19. public List<SysUser> getUserList() {
  20. System.out.println("用户列表Dao");
  21. String sql = "select * from sys_user";
  22. SQLQuery sqlQuery = this.sessionFactory.getCurrentSession().createSQLQuery(sql);
  23. sqlQuery.addEntity(SysUser.class);
  24. return sqlQuery.list();
  25. }
  26. //保存用户
  27. public void saveUser(SysUser sysUser) {
  28. System.out.println("保存用户Dao");
  29. this.sessionFactory.getCurrentSession().save(sysUser);
  30. System.out.println("保存成功");
  31. }
  32. //更新用户
  33. public void updateUser(SysUser sysUser) {
  34. System.out.println("更新用户Dao");
  35. this.sessionFactory.getCurrentSession().update(sysUser);
  36. System.out.println("更新用户成功");
  37. }
  38. //根据用户Id获取用户信息
  39. public SysUser selectById(Integer id) {
  40. System.out.println("查询用户Dao");
  41. return (SysUser) this.sessionFactory.getCurrentSession().get(SysUser.class,id);
  42. }
  43. //删除用户
  44. public void deleteUser(SysUser sysUser) {
  45. System.out.println("删除用户Dao");
  46. this.sessionFactory.getCurrentSession().delete(sysUser);
  47. System.out.println("删除用户成功");
  48. }
  49. }

四、jsp文件

1、显示列表
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <!-- 使用c标签 -->
  7. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  9. <html>
  10. <head>
  11. <base href="<%=basePath%>">
  12. <title>用户列表</title>
  13. <meta http-equiv="pragma" content="no-cache">
  14. <meta http-equiv="cache-control" content="no-cache">
  15. <meta http-equiv="expires" content="0">
  16. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  17. <meta http-equiv="description" content="用户列表">
  18. <!--
  19. <link rel="stylesheet" type="text/css" href="styles.css">
  20. -->
  21. </head>
  22. <body>
  23. <h2>查询用户</h2>
  24. <form action="selectById" method="post">
  25. <input type="text" name="sysUser.id">
  26. <input type="submit" value="ID查询">
  27. </form>
  28. <h1>用户列表</h1>
  29. <table border="1">
  30. <tr>
  31. <td align="center">ID</td>
  32. <td align="center">姓名</td>
  33. <td align="center">密码</td>
  34. <td>修改用户</td>
  35. <td>删除用户</td>
  36. </tr>
  37. <!-- 对集合元素迭代 -->
  38. <c:forEach var="user" items="${userList}">
  39. <tr>
  40. <td>${user.id}</td>
  41. <td>${user.userName}</td>
  42. <td>${user.password}</td>
  43. <td><a href="${pageContext.request.contextPath}/jsp/update.jsp?id=${user.id}&userName=${user.userName}&password=${user.password}">修改</a></td>
  44. <td><a href="deleteUser?sysUser.id=${user.id}">删除</a></td>
  45. </tr>
  46. </c:forEach>
  47. </table>
  48. </body>
  49. </html>
2、获取查询到的信息
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <%@ taglib uri="/struts-tags" prefix="s"%>
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11. <title>用户详情</title>
  12. <meta http-equiv="pragma" content="no-cache">
  13. <meta http-equiv="cache-control" content="no-cache">
  14. <meta http-equiv="expires" content="0">
  15. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  16. <meta http-equiv="description" content="当前用户">
  17. <!--
  18. <link rel="stylesheet" type="text/css" href="styles.css">
  19. -->
  20. </head>
  21. <body>
  22. <h1>当前用户信息:</h1>
  23. <table border="1">
  24. <tr>
  25. <td>ID</td>
  26. <td>姓名</td>
  27. <td>密码</td>
  28. </tr>
  29. <tr>
  30. <td>${sysUser.id}</td>
  31. <td>${sysUser.userName}</td>
  32. <td>${sysUser.password}</td>
  33. </tr>
  34. </table>
  35. <a href="userList.action">用户列表</a> <br>
  36. </body>
  37. </html>
3、更新信息
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  7. <html>
  8. <head>
  9. <base href="<%=basePath%>">
  10. <title>更新用户</title>
  11. <meta http-equiv="pragma" content="no-cache">
  12. <meta http-equiv="cache-control" content="no-cache">
  13. <meta http-equiv="expires" content="0">
  14. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  15. <meta http-equiv="description" content="更新用户新">
  16. <!--
  17. <link rel="stylesheet" type="text/css" href="styles.css">
  18. -->
  19. </head>
  20. <body>
  21. <form action="updateUser" method="post">
  22. ID:<input type="text" name="sysUser.id" value="${param.id}" readonly="readonly">
  23. 姓名:<input type="text" name="sysUser.userName" value="${param.userName}">
  24. 年龄:<input type="text" name="sysUser.password" value="${param.password}">
  25. <input type="submit" value="修改">
  26. </form>
  27. </body>
  28. </html>
4、添加信息
  1. <%@ page language="java" import="java.util.*" contentType="text/html;charset=UTF-8" pageEncoding="utf-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  7. <html>
  8. <head>
  9. <base href="<%=basePath%>">
  10. <title>保存用户</title>
  11. <meta http-equiv="pragma" content="no-cache">
  12. <meta http-equiv="cache-control" content="no-cache">
  13. <meta http-equiv="expires" content="0">
  14. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  15. <meta http-equiv="description" content="保存用户">
  16. <!--
  17. <link rel="stylesheet" type="text/css" href="styles.css">
  18. -->
  19. </head>
  20. <body>
  21. <h1>保存用户</h1>
  22. <form action="saveUser" method="post">
  23. 姓名:<input type="text" name="sysUser.userName">
  24. 密码:<input type="text" name="sysUser.password">
  25. <input type="submit" value="保存">
  26. </form>
  27. </body>
  28. </html>

五、运行

保存用户的时候遇到中文乱码存储问题:
解决方案:jsp采用UTF-8格式,在applictionContext.xml文件中的数据库配置添加**?characterEncoding=utf8**

该框架使用的是tomcat9运行的,具体可以自行更改。
示例代码:https://github.com/HardProgrammer/ssh2.git

发表评论

表情:
评论列表 (有 0 条评论,475人围观)

还没有评论,来说两句吧...

相关阅读