SSH实现简单增删改查的功能实例

4 篇文章 0 订阅

// 4/21/2021更新

  1. 更新jdk版

  2. 解决无法找到sun.misc.BASE64Encoder的jar包的解决方法
    原因是因为jdk版本更新后,就不在支持。
    这篇文章写的非常清楚,大家可以看看。链接
    删除原本的包,导入新的包
    import org.apache.commons.codec.binary.Base64;
    导入这个包需要另外添加一个包,[下载链接] (https://blog.csdn.net/qq_40378795/article/details/109482864)
    jar下载

  3. 我更新一下,重新上传,下载链接

  4. 代码中有个cookie问题,需要修改。
    问题链接

Cookie cookie = new Cookie(USER_COOKIE, user.getFirstName() + "+" + user.getLastName());
  1. 有问题,可以沟通,欢迎交流。

#############################################
在网上看到一篇写的很不错的关于SSH 整合实现简单的增删改查功能的实例。
因为也是初次使用SSH框架,通过这样的实例更好的理解SSH框架。对原本的代码进行了修改和优化。如有不足之处,还请指教。
原文链接:http://blog.csdn.net/zhubinqiang/article/details/8498808

这里写图片描述

与原实例更新之处和优化的地方。
**新增1.**实现hibernate自动创建数据表。
部分重要代码

<prop key="hibernate.hbm2ddl.auto">
	create
</prop>
 <class name="com.sqt.bean.User" table="tb_Users" schema="db_hibernate"> 
	<id name="id" type="int" column="ID">
		<generator class="increment"></generator>
	</id>
	<property name="firstName" column="firstName" type="string"></property>
	<property name="lastName" column="lastName" type="string"></property>
	<property name="age" column="age" type="int"></property>
	</class>

**新增2.**优化查找功能
查找功能在原先的代码中有的。但是返回的是user对象。我对它进行优化后,直接返回list,和查找全部对象的方法一样,当action返回SUCCESS时,<result name="success">/list.jsp</result>

@Override
public List<User> findUserById(int id) {
	// TODO Auto-generated method stub
	System.out.println("-------UserDaoImp.findUserById-----------"+id);
	String hql = "from User u where u.id=:id order by u.id asc";
	Query query=getSession().createQuery(hql);
	query.setInteger("id", id);
	List<User> list =query.list();
	return list;
}

**优化3.**原先在运行过程中会报错。
报错提示:

严重: Could not create and/or set value back on to object
java.lang.IllegalArgumentException
	at org.springframework.asm.ClassReader.<init>(Unknown Source)
	at org.springframework.asm.ClassReader.<init>(Unknown Source)
	at org.springframework.asm.ClassReader.<init>(Unknown Source)

这个原因是:

在表单提交的时候,action并没有创建表单对应的实例(只在action中声明:private User user)。
因为在写表单对应的类时,写了一个带有参数的构造方法,而在action中只是定义了这个类,没有实现 。

解决办法:
在action中,new出表单对应的类

private User user= new User();

优化4
hibernate3换成hibernate4
hibernate4中getHibernateTemplate()没有这个方法了。

private SessionFactory sessionFactory;

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	public Session getSession() {
		return sessionFactory.getCurrentSession();
	}

直接用getSession()和getHibernateTemplate()一样的效果。
解决了和spring3.0和hibernate4的结合。

主要优化就这些。

完整代码

aciton

package com.sqt.action.user;

import com.opensymphony.xwork2.ActionSupport;
import com.sqt.bean.User;
import com.sqt.service.UserService;

public class DeleteUserAction extends ActionSupport {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private User user=new User();
	private UserService userService;
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	@Override
	public String execute() throws Exception {
		System.out.println("-------UserAction.deleteUser-----------"+user.getFirstName());
		this.userService.delete(user);
		return SUCCESS;
	}
}
package com.sqt.action.user;

import java.util.Map;
import com.sqt.service.UserService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ListUserAction extends ActionSupport {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private UserService userService;

	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public String execute() throws Exception {
		System.out.println("-------UserAction.ListUser-----------");
		Map request = (Map) ActionContext.getContext().get("request");
		
		request.put("list", this.userService.findAllUsers());
		return SUCCESS;
	}
}

package com.sqt.action.user;

import com.sqt.bean.User;
import com.sqt.service.UserService;

import com.opensymphony.xwork2.ActionSupport;

public class SaveUserAction extends ActionSupport {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private User user;
	private UserService userService;
	
	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	@Override
	public String execute() throws Exception {
//		调用service相关的方法,完成实际的业务处理
		System.out.println("-------UserAction.SaveUser-----------"+user.getFirstName());
		this.userService.doCreateUser(user);
		return SUCCESS ;
	}
}
package com.sqt.action.user;

import com.sqt.bean.User;
import com.sqt.service.UserService;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class UpdatePUser extends ActionSupport {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private User user=new User();
	private UserService userService;
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	@Override
	public String execute() throws Exception {
		System.out.println("-------UserAction.UpdatePUser-----------"+user.getId());
		Map request = (Map) ActionContext.getContext().get("request");
		
		request.put("list", this.userService.findUserById(user.getId()));
		return SUCCESS;
	}
}
package com.sqt.action.user;


import com.opensymphony.xwork2.ActionSupport;
import com.sqt.bean.User;
import com.sqt.service.UserService;

public class UpdateUserAction extends ActionSupport {
	private User user=new User();
	private UserService userService;
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public UserService getUserService() {
		return userService;
	}
	public void setUserService(UserService userService) {
		this.userService = userService;
	}
	@Override
	public String execute() throws Exception {
		System.out.println("-------UserAction.UpdateUser-----------"+user.getFirstName());
		this.userService.update(this.user);
		return SUCCESS;
	}
}

bean

package com.sqt.bean;

public class User {  
    private int id;  
    private String firstName;  
    private String lastName;  
    private int age;  
    public int getId() {  
        return id;  
    }  
    public void setId(int id) {  
        this.id = id;  
    }  
    public String getFirstName() {  
        return firstName;  
    }  
    public void setFirstName(String firstName) {  
        this.firstName = firstName;  
    }  
    public String getLastName() {  
        return lastName;  
    }  
    public void setLastName(String lastName) {  
        this.lastName = lastName;  
    }  
    public int getAge() {  
        return age;  
    }  
    public void setAge(int age) {  
        this.age = age;  
    }  
    @Override  
    public String toString() {  
        return "ID: " + id + "FirstName: " + firstName;  
    }  
}  
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
          "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	 <class name="com.sqt.bean.User" table="tb_Users" schema="db_hibernate"> 
	
		<id name="id" type="int" column="ID">
			<generator class="increment"></generator>
		</id>
		
		<property name="firstName" column="firstName" type="string"></property>
		<property name="lastName" column="lastName" type="string"></property>
		<property name="age" column="age" type="int"></property>
		
	</class>
</hibernate-mapping>

dao

package com.sqt.dao;

import java.util.List;

import com.sqt.bean.User;

public interface UserDAO {  
    public void doCreateUser(User user);  
    public List<User> findAllUsers();  
    public void removeUser(User user);  
    public void updateUser(User user);  
    public List<User> findUserById(int id);
}  
package com.sqt.dao.impl;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.sqt.bean.User;
import com.sqt.dao.UserDAO;


public class UserDAOImpl  implements UserDAO {
	private SessionFactory sessionFactory;

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	public Session getSession() {
		return sessionFactory.getCurrentSession();
	}

	@Override
	public void doCreateUser(User user) {
		// TODO Auto-generated method stub
		System.out.println("-------UserDaoImp.doCreateUser-----------"+user.getFirstName());
		System.out.println("id"+user.getId());
		System.out.println("firstname"+user.getFirstName());
		System.out.println("lastname"+user.getLastName());
		System.out.println("age"+user.getAge());
		getSession().save(user);
	}

	@Override
	public List<User> findAllUsers() {
		// TODO Auto-generated method stub
		String hql = "from User u order by u.id asc";
		Query query=getSession().createQuery(hql);
		List<User> list =query.list();
		return list;
	}

	@Override
	public void removeUser(User user) {
		// TODO Auto-generated method stub
		System.out.println("-------UserDaoImp.removeUser-----------"+user.getFirstName());
		getSession().delete(user);
	}

	@Override
	public void updateUser(User user) {
		// TODO Auto-generated method stub
		System.out.println("-------UserDaoImp.updateUser-----------"+user.getFirstName());
		getSession().update(user);
	}

	@Override
	public List<User> findUserById(int id) {
		// TODO Auto-generated method stub
		System.out.println("-------UserDaoImp.findUserById-----------"+id);
		String hql = "from User u where u.id=:id order by u.id asc";
		Query query=getSession().createQuery(hql);
		query.setInteger("id", id);
		List<User> list =query.list();
		return list;
	}
}

service

package com.sqt.service;

import java.util.List;
import com.sqt.bean.User;

public interface UserService {
	public void doCreateUser(User user);
	public List<User> findAllUsers();
	public void delete(User user);
	public void update(User user);
	public List<User> findUserById(int id);
}
package com.sqt.service.impl;

import java.util.List;

import com.sqt.bean.User;
import com.sqt.dao.UserDAO;
import com.sqt.service.UserService;


public class UserServiceImpl implements UserService {
	private UserDAO dao;
	
	public UserDAO getDao() {
		return dao;
	}

	public void setDao(UserDAO dao) {
		this.dao = dao;
	}

	public void doCreateUser(User user) {
		System.out.println("-------UserService.doCreateUser-----------"+user.getFirstName());
		this.dao.doCreateUser(user);
	}

	public List<User> findAllUsers() {
		System.out.println("-------UserService.findAllUsers-----------");
		return this.dao.findAllUsers();
	}

	public void delete(User user) {
		System.out.println("-------UserService.deleteUser-----------"+user.getFirstName());
		this.dao.removeUser(user);
	}

	public void update(User user) {
		System.out.println("-------UserService.updateUser-----------"+user.getFirstName());
		this.dao.updateUser(user);
	}

	public List<User> findUserById(int id) {
		System.out.println("-------UserService.findUserById-----------"+id);
		return this.dao.findUserById(id);
	}

}

spring和hibernate的配置文件
applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">

	
	<!-- 启用spring注解支持 -->
	<context:annotation-config />
	
	<!-- 想到与Hibernate的hibernate.cfg.xml -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName">
			<value>org.gjt.mm.mysql.Driver</value>
		</property>
		
		<property name="url">
			<value>jdbc:mysql://127.0.0.1:3306/db_hibernate</value>
		</property>
		
		<property name="username">
			<value>root</value>
		</property>
		
		<property name="password">
			<value>123456</value>
		</property>
		
	</bean>

	<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref local="dataSource"/>
		</property>
		
		<property name="mappingResources">
			<list>
				<value>com/sqt/bean/User.hbm.xml</value>					
			</list>
		</property>
		
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				
				<prop key="hibernate.show_sql">
					true
				</prop>
				
				<prop key="hibernate.hbm2ddl.auto">
					create
				</prop>
			</props>
		</property>
		
	</bean>
	
	<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref local="sessionFactory"/>
		</property>
	</bean>
	
	<bean id="userDAO" class="com.sqt.dao.impl.UserDAOImpl" scope="singleton">
		<property name="sessionFactory">
			<ref local="sessionFactory"/>
		</property>
	</bean>
	
	<bean id="userServiceTarget" class="com.sqt.service.impl.UserServiceImpl" scope="singleton">
		<property name="dao" ref="userDAO" />
	</bean>
	
	<bean id="userService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="target">
			<ref local="userServiceTarget"/>
		</property>
		
		<property name="transactionManager">
			<ref local="transactionManager"/>
		</property>
		
		<property name="transactionAttributes">
			<props>
				<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>
	
	<bean id="saveUserAction" class="com.sqt.action.user.SaveUserAction" scope="prototype">
		<property name="userService" ref="userService"></property>
	</bean>
	
	<bean id="listUserAction" class="com.sqt.action.user.ListUserAction" scope="prototype">
		<property name="userService" ref="userService"></property>
	</bean>
	
	<bean id="removeUserAction" class="com.sqt.action.user.DeleteUserAction" scope="prototype">
		<property name="userService" ref="userService"></property>		
	</bean>
	
	<bean id="updatePUserAction" class="com.sqt.action.user.UpdatePUser">
		<property name="userService" ref="userService"></property>
	</bean>
	
	<bean id="updateUserAction" class="com.sqt.action.user.UpdateUserAction" scope="prototype">
		<property name="userService" ref="userService"></property>
	</bean>
	
	<bean id="UpdatePUser" class="com.sqt.action.user.UpdatePUser" scope="prototype">
		<property name="userService" ref="userService"></property>
	</bean>
</beans>

struts.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	<package name="ssh2" extends="struts-default">
		<action name="saveUser" class="saveUserAction">
			<result name="success" type="redirect">listUser.action</result>
		</action>
		
		<action name="listUser" class="listUserAction">
			<result name="success">/list.jsp</result>
		</action>
		
		<action name="deleteUser" class="removeUserAction">
			<result name="success" type="redirect">listUser.action</result>
		</action>
		
		<action name="updatePUser" class="updatePUserAction">
			<result name="success">/update.jsp</result>
		</action>
		
		<action name="updateUser" class="updateUserAction">
			<result name="success" type="redirect">listUser.action</result>
		</action>
		
		<action name="findUser" class="UpdatePUser">
			<result name="success">/list.jsp</result>
		</action>
	</package>
</struts>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
</web-app>

jsp页面
index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  <body>
	<h1><font color="red">Operation List</font></h1>
	<s:a href="save.jsp">Save User</s:a><br/>
	<s:a href="listUser.action">List Users</s:a>
	<s:form action="findUser">
		<s:textfield name="user.id" label="id"></s:textfield>
		<s:submit></s:submit>
	</s:form>
  </body>
</html>

list.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>  
    <title>My JSP 'list.jsp' starting page</title>
	<script type="text/javascript">
		function del(){
			if(confirm("Are you sure?")){
				return true;
			}
			return false;
		}
	</script>
  </head>
  
  <body>
    <h1><font color="red">Users List</font></h1>
    <s:a href="/ssh2/index.jsp">返回</s:a>
    <table border="1" width="80%" align="center">
    	<tr>
    		<th>序号</th>
    		<th>姓</th>
    		<th>名</th>
    		<th>年龄</th>
    		<th>删除</th>
    		<th>更新</th>
    	</tr>
    	
    	<s:iterator value="#request.list" id="us">
    		<tr>
    			<td>
    				<s:property value="#us.id"/>
    			</td>
    			<td>
    				<s:property value="#us.firstName"/>
    			</td>
    			<td>
    				<s:property value="#us.lastName"/>
    			</td>
    			<td>
    				<s:property value="#us.age"/>
    			</td>
    			<td align="center">
					<s:a href="deleteUser.action?user.id=%{#us.id}" onclick="return del()">Delete</s:a>
    			</td>
    			<td align="center">
					<s:a href="updatePUser.action?user.id=%{#us.id}">Update</s:a>		
    			</td>
    		</tr>
    	</s:iterator>
    </table>
    
  </body>
</html>

save.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'index.jsp' starting page</title>

  </head>
  
  <body>
	<h1><font color="red">Save User</font></h1>
		
	<s:form action="saveUser">
		<s:textfield name="user.firstName" label="First Name"></s:textfield>
		<s:textfield name="user.lastName" label="Last Name"></s:textfield>
		<s:textfield name="user.age" label="Age"></s:textfield>
		<s:submit></s:submit>
	</s:form>
	
  </body>
</html>

update.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  
    <title>My JSP 'update.jsp' starting page</title>

  </head>
  
  <body>
	<h1><font color="red">Update User</font></h1>
	
	<s:form action="updateUser">
	<table>
		<tr>
			<td>
				<s:hidden name="user.id" value="%{user.id}"></s:hidden>
			</td>
		</tr>
	
		<tr>
			<td>
				<s:textfield name="user.firstName" value="%{user.firstName}" label="First Name"></s:textfield>
			</td>
		</tr>
		
		<tr>
			<td>
				<s:textfield name="user.lastName" value="%{user.lastName}" label="Last Name"></s:textfield>
			</td>
		</tr>
		
		<tr>
			<td>
				<s:textfield name="user.age" value="%{user.age}" label="Age"></s:textfield>
			</td>
		</tr>
		
		<tr>
			<td>
				<s:submit></s:submit>
			</td>
		</tr>
	</table>	
	</s:form>
	
  </body>
</html>

除了这个案例,另外再提供一个完成的案例。
下载地址:
http://download.csdn.net/detail/shaoqianting/9875818

实现列表、增加、删除、修改和登录等功能。

采用环境:Apache Tomcat v7.0,java SE8[1.8.0_20]

数据库db_ssh,数据表tb_Users
这里写图片描述

  • 8
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值