1: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">
- <!-- 指定spring的配置文件,默认从web根目录寻找配置文件,我们可以通过spring 提供的classpath:前缀指定从类路径下寻找-->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:beans.xml</param-value>
- </context-param>
- <!-- 对Spring容器进行实例化 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- 启动struts2框架 -->
- <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>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
- <?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-2.5.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-2.5.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
- <!-- 通过注解的方式将类交给spring管理 -->
- <!-- 是被@Component、@Service、@Controller、@Repository注解的类,都可以纳入spring容器的管理中 -->
- <context:component-scan base-package="cn.itcast"/>
- <!-- 配置文件占位符 -->
- <!--<context:property-placeholder location="classpath:jdbc.properties"/>-->
- <!-- 配置数据源 -->
- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
- <property name="driverClass" value="com.mysql.jdbc.Driver"/>
- <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/itcast?useUnicode=true&characterEncoding=UTF-8"/>
- <property name="user" value="root"/>
- <property name="password" value="123"/>
- <!-- 连接池启动时的初始值 -->
- <property name="initialPoolSize" value="1"/>
- <!-- 连接池中保留的最小连接数 -->
- <property name="minPoolSize" value="1"/>
- <!-- 连接池中保留的最大连接数 -->
- <property name="maxPoolSize" value="15"/>
- <!-- 最大空闲时间 ,60秒内未使用则丢弃。若为0则永不丢弃。Default:0-->
- <property name="maxIdleTime" value="60"/>
- <!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数,default:3 -->
- <property name="acquireIncrement" value="5"/>
- <!-- 每60秒检查所有连接池中的空闲连接。Default:0 -->
- <property name="idleConnectionTestPeriod" value="60"/>
- </bean>
- <!-- 用spring创建sessionFactory供hibernate用 -->
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="mappingResources">
- <list>
- <value>cn/itcast/bean/Employee.hbm.xml</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <value>
- hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
- hibernate.hbm2ddl.auto=update
- hibernate.show_sql=true
- hibernate.format_sql=false
- </value>
- </property>
- </bean>
- <!--
- hibernate.cache.use_second_level_cache=true
- hibernate.cache.use_query_cache=false
- hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
- -->
- <!-- 用spring创建sessionFactory供hibernate用 -->
- <!-- 基于注解的映射文件-->
- <!--
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="annotatedClasses">
- <list>
- <value>cn.itcast.bean.Employee</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <value>
- hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
- hibernate.hbm2ddl.auto=update
- hibernate.show_sql=true
- hibernate.format_sql=false
- </value>
- </property>
- </bean>
- -->
- <!-- 用spring创建sessionFactory供hibernate用 -->
- <!-- 基于注解的映射文件-->
- <!--
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="packagesToScan" value="com.sdcncsi.entity.*" />
- <property name="hibernateProperties">
- <value>
- hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
- hibernate.hbm2ddl.auto=update
- hibernate.show_sql=true
- hibernate.format_sql=false
- </value>
- </property>
- </bean>
- -->
- <!-- 事务管理服务 -->
- <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory"/>
- </bean>
- <!-- 采用@Transaction注解方式使用事务 -->
- <tx:annotation-driven transaction-manager="txManager"/>
- </beans>
ps:当使用注解的方式关于映射,则就不是写映射文件了;
而在bean中用注解,下面举个例子:
- @SuppressWarnings("serial")
- @Entity()
- @Table(name="zft_check_login")
- @Cache(usage = CacheConcurrencyStrategy.NONE)
- public class CheckloginEntity implements Serializable{
- private Long id;
- private Long staff_id;
- private Date latest_time;
- private Staff staff;
- private Set<Equipment> equipments;
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public Long getStaff_id() {
- return staff_id;
- }
- public void setStaff_id(Long staff_id) {
- this.staff_id = staff_id;
- }
- public Date getLatest_time() {
- return latest_time;
- }
- public void setLatest_time(Date latest_time) {
- this.latest_time = latest_time;
- }
- @OneToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE},fetch = FetchType.LAZY)
- @JoinColumn(name = "staff_id",insertable=false,updatable=false)
- public Staff getStaff() {
- return staff;
- }
- public void setStaff(Staff staff) {
- this.staff = staff;
- }
- @OneToMany(fetch = FetchType.LAZY)
- @JoinColumn(name = "staff_id",referencedColumnName="staff_id",insertable=false,updatable=false)
- public Set<Equipment> getEquipments() {
- return equipments;
- }
- public void setEquipments(Set<Equipment> equipments) {
- this.equipments = equipments;
- }
- @Transient
- public String getPhoneNums() throws Exception{
- return ReflectionUtils.fetchElementPropertyToString(equipments,"equipmentPhone",", ");
- }
- @Transient
- public Long getMinutes() throws Exception{
- Date etime=new Date(System.currentTimeMillis());
- return (etime.getTime() - this.getLatest_time().getTime())/(60*1000);
- }
- }
3: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>
- <!-- 更换掉struts2内部的对象创建工厂,action用spring创建 -->
- <constant name="struts.objectFactory" value="spring"/>
- <!-- 将struts的主题改成默认主题,防止其生成不必要的html代码 -->
- <constant name="struts.ui.theme" value="simple"/>
- <package name="employee" namespace="/employee" extends="struts-default">
- <!-- 因为action有spring创建,所以只需指定spring创建的action的对象的名称就行 -->
- <action name="list" class="employeeAction">
- <result name="list">/WEB-INF/page/employee.jsp</result>
- </action>
- <action name="manage_*" class="employeeManageAction" method="{1}">
- <result name="add">/WEB-INF/page/employeeAdd.jsp</result>
- <result name="message">/WEB-INF/page/message.jsp</result>
- </action>
- </package>
- </struts>