`
shusanzhan
  • 浏览: 34325 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Struts2和Hibernate3.0一个CRUD实例

阅读更多



 Struts2CRUD实例

一、在这个实例中

可以看到如何进行CREATE、READ、UPDATE、DELETE操作(CRUD)。

页面效果如下图:



 

包目录结构如下:

 

 

二、代码说明

1、Model类User.java

package com.test.model;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.validator.NotEmpty;


@javax.persistence.Entity
@Table(name="user3")
//用注释,hibernate通过反向生成表

public class User {
 private int id;
 private String name;
 private String gender;
 private String country;
 private String aboutYou;
 private Boolean mailingList;
 
 @Id
 @GeneratedValue
 @Column(name="id")
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 @NotEmpty
 @Column(name="name",length=50,nullable=false)
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 @NotEmpty
 @Column(name="gender")
 public String getGender() {
  return gender;
 }
 public void setGender(String gender) {
  this.gender = gender;
 }
 @NotEmpty
 @Column(name="country")
 public String getCountry() {
  return country;
 }
 public void setCountry(String country) {
  this.country = country;
 }
 
 @Column(name="aboutYou",length=100,nullable=false)
 public String getAboutYou() {
  return aboutYou;
 }
 public void setAboutYou(String aboutYou) {
  this.aboutYou = aboutYou;
 }
 @Column(name="mailList")
 public Boolean getMailingList() {
  return mailingList;
 }
 public void setMailingList(Boolean mailingList) {
  this.mailingList = mailingList;
 }
 
 
}
2、hibernate.cfg.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory>
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
  <property name="hibernate.connection.username">root</property>
  <property name="connection.password">123456</property>
  <property name="connection.pool_size">1</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="show_sql">true</property>
  <property name="hbm2ddl.auto">none</property>
  <property name="hibernate.current_session_context_class">jta</property >
  <property name="hibernate.current_session_context_class">thread</property>
  
  <mapping class="com.test.model.User" />//使用的是java类,而不是hbm.xml,前面Model类使用了注释
 </session-factory>
</hibernate-configuration>

 

3、到DaoImpl代码如下

package com.test.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.googlecode.s2hibernate.struts2.plugin.annotations.SessionTarget;
import com.googlecode.s2hibernate.struts2.plugin.annotations.TransactionTarget;
import com.test.model.User;

public class UserDaoImpl implements UserDao {

/*这里通过注释,取得Session,和Transaction,参见Full Hibernate Plug-in 1.4 GA

这里你可以通过创建一个HibernateUtil类来获取SessionFactory。

*/
 @SessionTarget
 private Session session;
 @TransactionTarget
 private Transaction transaction;

 public void deleteById(int id) {
  try{
   User user=(User) session.get(User.class, id);
   session.delete(user);
  }catch (Exception e) {
  }
 }

 public User findById(int id) {
  try{
   User user=(User) session.get(User.class, id);
   return user;
  }catch (Exception e) {
   e.printStackTrace();
   return null;
  }
 }

 public List<User> listUsers() {
  List<User> users=null;
  try{
   users=session.createQuery("from User").list();
  }catch (Exception e) {
   e.printStackTrace();
  }
  return users;
 }

 public void saveUser(User user) {
  try {
   session.saveOrUpdate(user);
  } catch (Exception e) {
   transaction.rollback();
   e.printStackTrace();
  }
 }

}

           1、获取SessionFactory的另外的HibernateUtil类

package com.test.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUitl {
 private static SessionFactory sessionFactory;
 static {
  try {
   sessionFactory = new Configuration().configure()
     .buildSessionFactory();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 public static SessionFactory getSessionFactory() {
  return sessionFactory;
 }
}

 

 
3、Action类,UserAction类

在UserAction中通ActionContext.getContext().get(ServletActionContext. HTTP_REQUEST)获取HttpServletRequest对象。

package com.test.action;

import java.util.ArrayList;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.test.dao.UserDaoImpl;
import com.test.model.User;

public class UserAction extends ActionSupport implements ModelDriven<User> {
 private User user = new User();
 private List<User> users = new ArrayList<User>();
 private UserDaoImpl userDaoImpl = new UserDaoImpl();

 public User getModel() {
  return user;
 }

 public String add() {
  userDaoImpl.saveUser(user);
  return SUCCESS;
 }

 public String list() {
  users = userDaoImpl.listUsers();
  return SUCCESS;
 }

 public User getUser() {
  return user;
 }

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

 public List<User> getUsers() {
  return users;
 }

 public void setUsers(List<User> users) {
  this.users = users;
 }

}


 4、Struts.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <package name="default" extends="hibernate-default">
  <action name="saveOrUpdate" method="saveOrUpdate" class="com.test.action.UserAction">
   <result name="success" type="redirect">listUser</result>
  </action>
  <action name="editUser" method="edit" class="com.test.action.UserAction">
   <result name="success">/register.jsp</result>
  </action>
  <action name="deleteUser" method="delete" class="com.test.action.UserAction">
   <result type="redirect" name="success">listUser</result>
  </action>
  <action name="listUser" method="list" class="com.test.action.UserAction">
   <interceptor-ref name="basicStackHibernate" />
   <result name="success">/register.jsp</result>
  </action>
 </package>
</struts>

 

5、web.xml配置文件

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

6、页面register.jsp

这里页面代码就不贴出来了

 综上就是一个完整的Struts2与Hibernate3.0的整合CRUDE实例。并附代码lib包下载。给大家推荐一个很好的Struts1、2。hibernate,Spring实例网站。http://www.vaannila.com/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics