struts2+spring+hibernate集成(annotation版)
来源:互联网 发布:linux 切换root 编辑:程序博客网 时间:2024/05/22 17:51
费话不多说......
(1)由于本人最常用的是Oracle,所以本例就采用Oracle为例,下面是建表语句:
--用户表create table t_user( user_id number primary key not null,--编号 user_name varchar2(24),--姓名 user_sex varchar2(4),--性别 user_class varchar2(24)--班级);create sequence user_seqstart with 1increment by 1;insert into t_user values(user_seq.nextval,'张一','男','大班');insert into t_user values(user_seq.nextval,'张二','男','大班');insert into t_user values(user_seq.nextval,'张三','男','大班');insert into t_user values(user_seq.nextval,'张四','男','大班');insert into t_user values(user_seq.nextval,'张五','男','大班');insert into t_user values(user_seq.nextval,'李一','女','小班');insert into t_user values(user_seq.nextval,'李二','女','小班');insert into t_user values(user_seq.nextval,'李三','女','小班');insert into t_user values(user_seq.nextval,'李四','女','小班');insert into t_user values(user_seq.nextval,'李五','女','小班');select * from t_user;
(2)spring配置文件,个人主要分成两个,便于管理,放到src目录下,
首先是数据源配置applicationContext-datasource.xml
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass"><value>oracle.jdbc.driver.OracleDriver</value></property> <property name="jdbcUrl"><value>jdbc:oracle:thin:@localhost:1521:ORCL</value></property> <property name="user"><value>scott</value></property> <property name="password"><value>tiger</value></property> <property name="minPoolSize"><value>5</value></property> <property name="maxPoolSize"><value>50</value></property> <property name="maxIdleTime"><value>1800</value></property> <property name="acquireIncrement"><value>5</value></property> <property name="maxStatements"><value>0</value></property> <property name="maxStatementsPerConnection"><value>100</value></property> <property name="initialPoolSize"><value>5</value></property> <property name="acquireRetryAttempts"><value>30</value></property> <property name="breakAfterAcquireFailure"><value>false</value></property> <property name="testConnectionOnCheckout"><value>false</value></property> <property name="idleConnectionTestPeriod"><value>1800</value></property> </bean><!-- 注入jdbcTemplate,查询数据时使用 --><bean id="jdbcTemplete" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean><!-- <context:annotation-config></context:annotation-config> --> <!-- 如果配置了自动扫描,则上面的可以注释掉 --> <context:component-scan base-package="com.test"></context:component-scan></beans>
然后是sessionFactory以及事务相关配置 applicationContext-hibernate.xml,将实体bean以及事务交给spring来管理:
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop> <prop key="hibernate.show_sql">false</prop> <prop key="hibernate.format_sql">false</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.connection.release_mode">auto</prop> </props> </property> <property name="mappingDirectoryLocations"> <list> <value>classpath:com/test/model/</value> </list> </property></bean><bean name="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <bean name="baseTransaction" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager" ref="transactionManager"></property> <property name="proxyTargetClass" value="true"></property> <property name="transactionAttributes"> <props> <prop key="create*">PROPAGATION_REQUIRED</prop> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="edit*">PROPAGATION_REQUIRED</prop> <prop key="del*">PROPAGATION_REQUIRED</prop> <prop key="copy*">PROPAGATION_REQUIRED</prop> <prop key="sync*">PROPAGATION_REQUIRED</prop> <prop key="*">readOnly</prop> </props> </property> </bean></beans>
(3)接下来就是struts的配置文件了,同样放到src目录下,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><constant name="struts.ui.theme" value="simple" /><constant name="struts.ui.templateDir" value="template" /><constant name="struts.ui.templateSuffix" value="ftl" /><constant name="struts.devMode" value="true"></constant><constant name="struts.configuration.xml.reload" value="true"></constant><package name="default" extends="struts-default"><action name="userAction" class="com.test.user.action.UserAction"><result name="all">/all.jsp</result><!-- 此处代码配置forward跳转,可不必理会 --><result name="all_group">/all_group.jsp</result></action></package></struts>
(4)接下来就是最核心的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.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts</filter-name><url-pattern>/*</url-pattern></filter-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext-*.xml</param-value></context-param> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
相关配置做好了,接下来就开始以用户添加和查询为例......
(5)User.java,实体Bean
package com.test.model;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.SequenceGenerator;import javax.persistence.Table;@Entity@Table(name="t_user",catalog="scott")public class User implements Serializable{private int user_id;private String user_name;private String user_sex;private String user_class;public User(){}public User(String user_name,String user_sex,String user_class){this.user_name = user_name;this.user_sex=user_sex;this.user_class=user_class;}@Id@Column(name="user_id")@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="user_seq")@SequenceGenerator(sequenceName="user_seq",name="user_seq")public int getUser_id() {return user_id;}public void setUser_id(int user_id) {this.user_id = user_id;}@Column(name="user_name",length=24)public String getUser_name() {return user_name;}public void setUser_name(String user_name) {this.user_name = user_name;}@Column(name="user_sex",length=4)public String getUser_sex() {return user_sex;}public void setUser_sex(String user_sex) {this.user_sex = user_sex;}@Column(name="user_class",length=24)public String getUser_class() {return user_class;}public void setUser_class(String user_class) {this.user_class = user_class;}}
(6)新建接口类:UserService.java
package com.test.user.service;import java.util.List;import org.springframework.stereotype.Service;import com.test.model.User;@Servicepublic interface UserService {/************* * 创建用户 * * @param user * @throws Exception */public void createUser(User user) throws Exception;/************ * 获取用户列表 * * @return * @throws Exception */public List<User> getAllUser() throws Exception;}
(6)新建UserDao,实现增加和查询的功能,继承HibernateDaoSupport ,代码如下:
package com.test.user.dao;import java.util.ArrayList;import java.util.List;import javax.annotation.Resource;import org.hibernate.SessionFactory;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.support.rowset.SqlRowSet;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import org.springframework.stereotype.Repository;import com.test.model.User;@Repositorypublic class UserDao extends HibernateDaoSupport {private JdbcTemplate jdbcTemplate;@Resourcepublic void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}@Resourcepublic void setSessionFactoryOverride(SessionFactory sessionFactory) {super.setSessionFactory(sessionFactory);}public void createUser(User user) throws Exception {this.getHibernateTemplate().save(user);}@SuppressWarnings("unchecked")public List<User> getAllUser() throws Exception {// return this.getHibernateTemplate().find("from User");// 用jdbcTemplate查询List<User> list = new ArrayList<User>();SqlRowSet rs = this.jdbcTemplate.queryForRowSet("select user_id,user_name,user_sex,user_class from t_user");while (rs.next()) {User user = new User();user.setUser_id(rs.getInt("user_id"));user.setUser_name(rs.getString("user_name"));user.setUser_sex(rs.getString("user_sex"));user.setUser_class(rs.getString("user_class"));list.add(user);}return list;}}
(7)新建UserServiceImpl.java,注入UserDao,调用UserDao里的方法,实现UserServie接口,代码如下:
package com.test.user.service.impl;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Component;import com.test.model.User;import com.test.user.dao.UserDao;import com.test.user.service.UserService;@Componentpublic class UserServiceImpl implements UserService {@Resourceprivate UserDao userDao;@Overridepublic void createUser(User user) throws Exception {this.userDao.createUser(user);}@Overridepublic List<User> getAllUser() throws Exception {return this.userDao.getAllUser();}}
(8)接下来理所应当就是我们的控制器UserAction.java类了
package com.test.user.action;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.annotation.Resource;import org.springframework.stereotype.Controller;import com.opensymphony.xwork2.ActionSupport;import com.test.model.User;import com.test.user.service.UserService;@Controllerpublic class UserAction extends ActionSupport {@Resourceprivate UserService userService;private List<User> userList = new ArrayList<User>();public List<User> getUserList() {return userList;}public void setUserList(List<User> userList) {this.userList = userList;}public String getAllUser() {try {//this.userList = this.userService.getAllUser();//全查询this.userList = new ArrayList<User>();System.out.println(this.userList.size());} catch (Exception e) {e.printStackTrace();}return "all";}}
(10)为了避免麻烦就不用jsp页面进行演示,直接用Junit进行测试,添加jar包junit-4.8.2.jar,测试代码如下:
package com.test.test;import java.util.List;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.test.user.service.UserService;public class UserTest {private static UserService userService;@BeforeClasspublic static void setUpBeforeClass() throws Exception {System.out.println("JUnit start......");ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext-*.xml");userService=(UserService) app.getBean("userServiceImpl");}@AfterClasspublic static void afterClass() throws Exception {System.out.println("JUnit end......");}@Testpublic void getAllUser(){try {System.out.println("用户数:"+this.userService.getAllUser().size());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}//@Test//public void addUser(){//System.out.println("添加用户......");//User user=new User("刘星","男","小班");//try {//this.userService.createUser(user);//} catch (Exception e) {//// TODO Auto-generated catch block//e.printStackTrace();//}//}}
(注:本例已测试通过)
- struts2+spring+hibernate集成(annotation版)
- struts2+hibernate+spring整合(annotation版)
- spring + struts2 + hibernate 集成
- 集成struts2+spring+Hibernate
- spring与带Annotation的hibernate集成
- spring与带Annotation的hibernate集成
- spring+hibernate+struts2的集成
- Spring、Struts2、Hibernate集成开发
- ssh集成(struts2+spring+hibernate)
- Struts2,spring&JPA(Hibernate)的集成
- 集成struts2 spring hibernate,使用注解
- 集成Struts2 spring hibernate使用注解
- 集成struts2 spring hibernate中使用注解
- Spring、Struts2、Hibernate集成开…
- SSH---集成Struts2+Spring+Hibernate(一)
- struts2 hibernate spring c3p0整合 之集成spring
- spring+hibernate :annotation
- Spring,Struts2,Hibernate三大框架的集成(SSH)
- 心理技巧:马克·吐温的七堂必上人生课
- 移植nandflash驱动并更改分区信息
- iPhone消息推送机制实现与探讨(写的很透彻,还介绍了服务器端的代码)
- Java中将String转换成Date类型
- 如何正确的终止正在运行的子线程
- struts2+spring+hibernate集成(annotation版)
- wxpython 无法退出
- Windows与Linux共享文件夹互相访问
- 正弦余弦定理
- 可选的Int参数在CPP目标上导致的编译错误
- C++函数设计和使用
- How to calculate CRC in C#?
- TCP/IP和HTTP的联系
- How to Use Instruments in Xcode