代码片段:
spring hibernate struts2 就是撒三个框架整合也就是ssh
pom.xml
1.jar包
ss
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.4.1</version>
</dependency>
<!--Struts2注解支持jar包-->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.3.4.1</version>
</dependency>
全局的
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
spring 默认scope 是单例模式,这样只会创建一个Action对象,每次访问都是同一个Action对象,
数据不安全,struts2 是要求每次次访问都对应不同的Action,scope="prototype" 可以保证 当有请求的时候 都创建一个Action对象。
<!--要用Spring去创建Action对象 Struts2的Action是多例的-->
<bean id="rsAction" class="cn.lz.action.RsAction" scope="prototype">
<property name="rsService" ref="rsService"></property>
</bean>
struts.objectFactory=spring 现在我们的配置方式:无论是Action对象的生成权,还是管理权,都转交给了Spring容器
<!-- class指映射一个实体类entity
提供了公共的无参构造方法-通过反射产生对象
属性用private修饰,并且生成对应的get/set方法
类不能用final来修饰-hibernate会产生代理类(cglib)
类需要指明标识
name表示pojo类名
table表示pojo类对应数据库中的表名;如果不写默认是类名
-->
<class name="Rs" table="Rs" dynamic-update="true">
// id表示实体类的标识(OID)
对应数据库表中的主键
//name指实体类的标识属性名
column表示对应数据库表的列名:如果不写 则数据库表中列名和属性名一致
//length表示数据库表中 对应数据类型的长度 ,如果不写有默认长度
type表示类型如果不写hibernate可以找到对应pojo类的属性的类型
<id name="id" column="id">
<generator class="uuid"></generator>
</id>
<property name="name" column="name"></property>
<property name="age" column="age"></property>
</class>
</hibernate-mapping>
// action → → service → → Dao → → session