SSH2实现用户增删改查

一、使用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

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSH2框架是结合了Spring3.2、Struts2.3.4和Hibernate4.2三个框架的一种开发模式。它的目标是将这三个框架的优势结合起来,实现更高效、更方便的开发方式。 首先,Spring框架作为SSH2的核心框架,提供了Spring IOC容器和AOP特性。Spring能够管理对象的生命周期,简化了大量的配置和代码。它还提供了声明式事务管理和面向切面编程能力,极大地简化了事务处理和异常处理。 其次,Struts2作为SSH2的MVC框架,提供了强大的请求处理和表单验证功能。它基于标签和表达式语言,可以直接将页面元素和后台数据进行绑定,大大减少了前端和后台开发的工作量。Struts2还支持拦截器,能够方便地进行权限控制和请求的预处理。 最后,Hibernate作为SSH2的ORM框架,提供了面向对象的数据库访问方式。Hibernate能够将Java对象和数据库表进行映射,并提供了强大的查询和缓存功能。使用Hibernate,开发者可以将精力集中在业务逻辑上,而不需要过多关注数据库操作的细节。 通过整合Spring、Struts2和Hibernate,SSH2框架能够极大地简化企业级应用的开发过程。开发者可以更专注于业务逻辑的设计和实现,而不需要关心框架的集成和配置。同时,SSH2框架还提供了良好的扩展性和灵活性,可以根据项目需求进行定制和拓展。 总而言之,SSH2框架是一种结合了Spring、Struts2和Hibernate的开发模式,通过整合三个框架的优势,提供了更高效、更方便的开发方式。它简化了项目的配置和集成,提高了开发效率,是开发企业级应用的优秀选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值