ssh2的基于MVC的curd(带事务)
最近学习了struts2+spring+hibernate,写了基于MVC的CURD,在这里给新学struts2的朋友们一点小分享
第一步:添加strut2的包,
第二步:添加hibernate框架支持
第三步:添加spring框架支持
第四步:逆向表。
第五步:在web.xml中添加如下代码
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
第六步: 修改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:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 配置事务特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 配置那些类的方法进行事务管理 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution (* service.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" />
</aop:config>
<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:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 配置事务特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 配置那些类的方法进行事务管理 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution (* service.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" />
</aop:config>
第七步:添加struts.xml文件
这样配置ssh2的操作就基本上到位了
下面开始编写代码
InsertUserinfo类的代码如下:
package controller;
import service.UserinfoService;
public class InsertUserinfo extends Base{
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute() {
System.out.println(username);
System.out.println(password);
allService.getUserinfoService().insert(username, password);
return "toListDo";
}
}
import service.UserinfoService;
public class InsertUserinfo extends Base{
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute() {
System.out.println(username);
System.out.println(password);
allService.getUserinfoService().insert(username, password);
return "toListDo";
}
}
DeleteUserinfo的代码如下:
package controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
public class DeleteUserinfo extends Base{
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String execute() {
allService.getUserinfoService().delete(id);
return "toListDo";
}
}
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
public class DeleteUserinfo extends Base{
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String execute() {
allService.getUserinfoService().delete(id);
return "toListDo";
}
}
UpdateUserinfo的代码如下:
package controller;
import orm.Userinfo;
import service.AllService;
public class UpdateUserinfo extends Base {
private String id ;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
private Userinfo userinfo;
public Userinfo getUserinfo() {
return userinfo;
}
public void setUserinfo(Userinfo userinfo) {
this.userinfo = userinfo;
}
public String execute(){
userinfo = allService.getUserinfoService().findById(id);
return "toSaveUpdateJSP";
}
}
import orm.Userinfo;
import service.AllService;
public class UpdateUserinfo extends Base {
private String id ;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
private Userinfo userinfo;
public Userinfo getUserinfo() {
return userinfo;
}
public void setUserinfo(Userinfo userinfo) {
this.userinfo = userinfo;
}
public String execute(){
userinfo = allService.getUserinfoService().findById(id);
return "toSaveUpdateJSP";
}
}
SaveUpdateUserinfo的代码如下:
package controller;
import orm.Userinfo;
public class SaveUpdateUserinfo extends Base{
private String id;
private String username;
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute(){
Userinfo userinfo = new Userinfo();
userinfo.setId(Integer.parseInt(id));
userinfo.setUsername(username);
userinfo.setPassword(password);
allService.getUserinfoService().saveUpdate(userinfo);
return "toListDo";
}
}
import orm.Userinfo;
public class SaveUpdateUserinfo extends Base{
private String id;
private String username;
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute(){
Userinfo userinfo = new Userinfo();
userinfo.setId(Integer.parseInt(id));
userinfo.setUsername(username);
userinfo.setPassword(password);
allService.getUserinfoService().saveUpdate(userinfo);
return "toListDo";
}
}
ListUserinfo的代码如下:
package controller;
import java.util.ArrayList;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
public class ListUserinfo extends Base {
ArrayList listUserinfo;
public ArrayList getListUserinfo() {
return listUserinfo;
}
public void setListUserinfo(ArrayList listUserinfo) {
this.listUserinfo = listUserinfo;
}
public String execute() {
listUserinfo=allService.getUserinfoService().list();
return "toListJSP";
}
}
import java.util.ArrayList;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
public class ListUserinfo extends Base {
ArrayList listUserinfo;
public ArrayList getListUserinfo() {
return listUserinfo;
}
public void setListUserinfo(ArrayList listUserinfo) {
this.listUserinfo = listUserinfo;
}
public String execute() {
listUserinfo=allService.getUserinfoService().list();
return "toListJSP";
}
}
service层的UserinfoService的代码如下
package service;
import java.util.ArrayList;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import orm.AllDAO;
import orm.Userinfo;
public class UserinfoService {
private AllDAO allDAO;
public AllDAO getAllDAO() {
return allDAO;
}
public void setAllDAO(AllDAO allDAO) {
this.allDAO = allDAO;
}
public void insert(String username, String password) {
Userinfo userinfo = new Userinfo();
userinfo.setUsername(username);
userinfo.setPassword(password);
allDAO.getUserinfoDAO().save(userinfo);
}
public void delete(String id) {
Userinfo userinfo = findById(id);
allDAO.getUserinfoDAO().delete(userinfo);
}
public ArrayList list() {
ArrayList listUserinfo = (ArrayList) allDAO.getUserinfoDAO().findAll();
return listUserinfo;
}
public Userinfo findById(String id ){
Userinfo userinfo = allDAO.getUserinfoDAO().findById(Integer.parseInt(id));
return userinfo;
}
public void update(String id ) {
Userinfo userinfo = findById(id);
allDAO.getUserinfoDAO().attachDirty(userinfo);
}
public void saveUpdate(Userinfo userinfo){
allDAO.getUserinfoDAO().attachDirty(userinfo);
}
}
import java.util.ArrayList;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import orm.AllDAO;
import orm.Userinfo;
public class UserinfoService {
private AllDAO allDAO;
public AllDAO getAllDAO() {
return allDAO;
}
public void setAllDAO(AllDAO allDAO) {
this.allDAO = allDAO;
}
public void insert(String username, String password) {
Userinfo userinfo = new Userinfo();
userinfo.setUsername(username);
userinfo.setPassword(password);
allDAO.getUserinfoDAO().save(userinfo);
}
public void delete(String id) {
Userinfo userinfo = findById(id);
allDAO.getUserinfoDAO().delete(userinfo);
}
public ArrayList list() {
ArrayList listUserinfo = (ArrayList) allDAO.getUserinfoDAO().findAll();
return listUserinfo;
}
public Userinfo findById(String id ){
Userinfo userinfo = allDAO.getUserinfoDAO().findById(Integer.parseInt(id));
return userinfo;
}
public void update(String id ) {
Userinfo userinfo = findById(id);
allDAO.getUserinfoDAO().attachDirty(userinfo);
}
public void saveUpdate(Userinfo userinfo){
allDAO.getUserinfoDAO().attachDirty(userinfo);
}
}
最后部署项目的时候记得删掉arm2.23的炸包。
主要代码如上。
想要详细代码的可以点击下载或留言
第一篇技术文章,希望大家多多支持