SSH2实现用户增删改查
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页面去做视图跳转。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"/>
<package name="ssh2" extends="struts-default" namespace="/">
<!-- 保存用户页面视图控制 -->
<action name="saveUser" class="userAction" method="saveUser">
<result name="saveSuccess" type="redirectAction">
<param name="actionName">userList</param>
</result>
</action>
<!--查询用户页面视图控制-->
<action name="selectById" class="userAction" method="selectById">
<result name="getSuccess">/jsp/info.jsp</result>
<result name="404">/jsp/404.jsp</result>
</action>
<!--更新用户页面视图控制-->
<action name="updateUser" class="userAction" method="updateUser">
<result name="updateSuccess" type="redirectAction">
<param name="actionName">userList</param>
</result>
</action>
<!--删除用户页面视图控制-->
<action name="deleteUser" class="userAction" method="deleteUser">
<result name="updateSuccess" type="redirectAction">
<param name="actionName">userList</param>
</result>
</action>
<!-- 用户列表 -->
<action name="userList" class="userAction">
<result name="success" type="redirect">/jsp/list.jsp</result>
</action>
</package>
</struts>
三、各个层级代码示例
1、action层
调用service层,不同业务逻辑使用不同方法。
package ssh2.com.action;
import java.util.List;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import ssh2.com.entity.SysUser;
import ssh2.com.service.UserService;
/**
* @author lxw
*/
public class UserAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private SysUser sysUser;
private UserService userService;
public static long getSerialversionuid() {
return serialVersionUID;
}
//用户列表
@Override
public String execute() throws Exception {
System.out.println("用户列表Action");
List<SysUser> list = userService.userList();
ActionContext.getContext().getSession().put("userList",list);
return SUCCESS;
}
//保存用户信息
public String saveUser(){
System.out.println("保存用户信息Action");
userService.save(sysUser);
return "saveSuccess";
}
//更新用户信息
public String updateUser(){
System.out.println("更新用户信息Action");
userService.update(sysUser);
return "updateSuccess";
}
//删除用户信息
public String deleteUser(){
System.out.println("删除用户信息Action");
userService.delete(sysUser);
System.out.println(sysUser.getId());
return "updateSuccess";
}
//查询用户信息
public String selectById(){
System.out.println("查询用户信息Action");
//根据Id获取用户
sysUser = userService.selectById(sysUser.getId());
if(sysUser != null){
System.out.println(sysUser.getUserName());
return "getSuccess";
}
return "404";
}
public SysUser getSysUser() {
return sysUser;
}
public void setSysUser(SysUser sysUser) {
this.sysUser = sysUser;
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}
2、service层
调用Dao层。
package ssh2.com.service;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;
import ssh2.com.dao.UserDao;
import ssh2.com.entity.SysUser;
/**
* @author lxw
*/
@Transactional
public class UserService {
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public List<SysUser> userList(){
System.out.println("用户列表Service");
return userDao.getUserList();
}
public void save(SysUser sysUser) {
System.out.println("保存Service");
userDao.saveUser(sysUser);
}
public void update(SysUser sysUser) {
System.out.println("更新用户Service");
userDao.updateUser(sysUser);
}
public void delete(SysUser sysUser) {
System.out.println("更新用户Service");
userDao.deleteUser(sysUser);
}
public SysUser selectById(Integer id) {
System.out.println("查询用户Service");
return userDao.selectById(id);
}
}
3、dao层
使用session中的自带增删改查操作。
package ssh2.com.dao;
import java.util.List;
import org.hibernate.SQLQuery;
import org.hibernate.SessionFactory;
import ssh2.com.entity.SysUser;
/**
* @author lxw
*/
public class UserDao {
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
//用户列表
@SuppressWarnings("unchecked")
public List<SysUser> getUserList() {
System.out.println("用户列表Dao");
String sql = "select * from sys_user";
SQLQuery sqlQuery = this.sessionFactory.getCurrentSession().createSQLQuery(sql);
sqlQuery.addEntity(SysUser.class);
return sqlQuery.list();
}
//保存用户
public void saveUser(SysUser sysUser) {
System.out.println("保存用户Dao");
this.sessionFactory.getCurrentSession().save(sysUser);
System.out.println("保存成功");
}
//更新用户
public void updateUser(SysUser sysUser) {
System.out.println("更新用户Dao");
this.sessionFactory.getCurrentSession().update(sysUser);
System.out.println("更新用户成功");
}
//根据用户Id获取用户信息
public SysUser selectById(Integer id) {
System.out.println("查询用户Dao");
return (SysUser) this.sessionFactory.getCurrentSession().get(SysUser.class,id);
}
//删除用户
public void deleteUser(SysUser sysUser) {
System.out.println("删除用户Dao");
this.sessionFactory.getCurrentSession().delete(sysUser);
System.out.println("删除用户成功");
}
}
四、jsp文件
1、显示列表
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!-- 使用c标签 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>用户列表</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="用户列表">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h2>查询用户</h2>
<form action="selectById" method="post">
<input type="text" name="sysUser.id">
<input type="submit" value="ID查询">
</form>
<h1>用户列表</h1>
<table border="1">
<tr>
<td align="center">ID</td>
<td align="center">姓名</td>
<td align="center">密码</td>
<td>修改用户</td>
<td>删除用户</td>
</tr>
<!-- 对集合元素迭代 -->
<c:forEach var="user" items="${userList}">
<tr>
<td>${user.id}</td>
<td>${user.userName}</td>
<td>${user.password}</td>
<td><a href="${pageContext.request.contextPath}/jsp/update.jsp?id=${user.id}&userName=${user.userName}&password=${user.password}">修改</a></td>
<td><a href="deleteUser?sysUser.id=${user.id}">删除</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
2、获取查询到的信息
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>用户详情</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="当前用户">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h1>当前用户信息:</h1>
<table border="1">
<tr>
<td>ID</td>
<td>姓名</td>
<td>密码</td>
</tr>
<tr>
<td>${sysUser.id}</td>
<td>${sysUser.userName}</td>
<td>${sysUser.password}</td>
</tr>
</table>
<a href="userList.action">用户列表</a> <br>
</body>
</html>
3、更新信息
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>更新用户</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="更新用户新">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="updateUser" method="post">
ID:<input type="text" name="sysUser.id" value="${param.id}" readonly="readonly">
姓名:<input type="text" name="sysUser.userName" value="${param.userName}">
年龄:<input type="text" name="sysUser.password" value="${param.password}">
<input type="submit" value="修改">
</form>
</body>
</html>
4、添加信息
<%@ page language="java" import="java.util.*" contentType="text/html;charset=UTF-8" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>保存用户</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="保存用户">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h1>保存用户</h1>
<form action="saveUser" method="post">
姓名:<input type="text" name="sysUser.userName">
密码:<input type="text" name="sysUser.password">
<input type="submit" value="保存">
</form>
</body>
</html>
五、运行
保存用户的时候遇到中文乱码存储问题:
解决方案:jsp采用UTF-8格式,在applictionContext.xml文件中的数据库配置添加**?characterEncoding=utf8**
该框架使用的是tomcat9运行的,具体可以自行更改。
示例代码:https://github.com/HardProgrammer/ssh2.git
还没有评论,来说两句吧...