struts2.21 spring hibernate 整合笔记

struts2.21 spring hibernate 整合笔记
1、struts2.2.1 最少需要8个包,其中下载下来得包里面缺少一个javassist包,可以在app应用中找到该 包。
具体情况请见附件。
2、用convention插件实现action的注解配置,省去了struts.xml里面的配置,引入struts2-convention-plugin-2.2.1.jar后,它会自动搜索位于action、actions、struts、struts2包下的所以java类,Convetntion插件会把两种情况下的Java类当成Action来处理。
a、所有实现了com.opensymphony.xwork2.Action或继承了ActionSupport的Java类。
b、所有类名以Action结尾的java类。
com.neusoft.action.logins.LonginAction
Action路径将会映射为:/logins/login.action,logins将会作为命名空间。
以此类推到其它几个包下面。
3、config-browser插件比较好用,可以看到所有的配置和跳转,对应调试非常方便。
4、Action 方法级的注解不能加在execute方法上,如果放到这上面之后,就访问不到该Action类。
 @Result(name="success",location="/sdust/test/first/login.jsp")
public class LoginAction extends ActionSupport
{

    /**
     *  Created on Nov 10, 2010
     * Description:[方法功能中文描述]

     * @author:金宏殿
     * @email: [email protected]
     * @update:[日期YYYY-MM-DD] [更改人姓名]
     */
    @Action(value="/hello",results={@Result(name="success",location="http://www.baidu.com",type="redirect")})
   
    public String execute() throws Exception
    {
        System.out.println("execute");
        return "success";
    }
    public String save()
    {
        System.out.println("save");
        return "success";
    }
 

}

这样的话,路径就找不到/fisrt/login.action了,只能找到/hello.action这一个映射,放到save方法上面则没有问题。
5、用spring的Component等注解,引入spring-context-2.5.6.jar包,web.xml配spring的listener,需要引用spring-core-2.5.6.jar,spring-web-2.5.6.jar,spring-beans-2.5.6.jar这三个包。
6、action中注入spring中的serviceBean时需要引入struts2-spring-plugin-2.2.1.jar包,
@Resource
    private HelloService helloService;
//可以指定名字,也可以不指定,如没有bean名字没有冲突的话可以不指定,指定的话可以精确到具体的bean。
@Resource(name="helloService")
    private HelloService helloService;


7、spring整合hibernate需要jar包为
struts2.21 spring hibernate 整合笔记
srping配置文件为:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:db.properties"/>
    </bean>
  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
  	destroy-method="close">
  	<property name="driverClass" value="${driverClassName}"/>
  	<property name="jdbcUrl" value="${url}"/>
  	<property name="user" value="${username}"/>
  	<property name="password" value="${password}"/>
  	<property name="minPoolSize" value="${minPoolSize}"/>
  	<property name="maxPoolSize" value="${maxPoolSize}"/>
  </bean>
  <bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
		<property name="packagesToScan" value="com.lusoft" />

	</bean>


同时一定要配log4j文件,服务器才能启动。
8、用注解dao,需要继承一下HibernateDaoSupport,需要setSessionFactory(),因为HibernateDaoSupport中的sessionFactory没有加注解,所以无法注入,需要手动set一下。
@Repository
public class StudengDao extends HibernateDaoSupport
{
    @Resource
    public void setSessionFactory0(SessionFactory sessionFactory){   
      super.setSessionFactory(sessionFactory);   
    }  

}

9、使用spring注解事务,只需要添加一下配置文件即可,在方法或类上加上@Transactional注解就可以。需要引入aopalliance.jar和spring-aop.jar包。
<!-- 用注解来实现事务管理  将所有具有@Transactional 注解的文件自动配置为声明式事务支持-->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>

8、使用hiberntate必须把antlr-2.7.6.jar包引上,它实现的是sql和hql的转换,没引的话会发现一些莫名其妙的问题。我一开始没引,还没有异常,找了相当长的时间才发现问题,相当郁闷呀。

你可能感兴趣的:(java,spring,Hibernate,struts,配置管理)