首页 > 代码库 > struts2、hibernate以及spring是如何配置的

struts2、hibernate以及spring是如何配置的

第一次使用这3大框架进行网站编写的人没有一个清楚的流程,建起网站来会比较头疼,今天来讲讲3大框架的配置

基本流程:

用户点击页面之后,服务器收到一个请求,请求经过web.xml的拦截器过滤后进入action,不同的action执行后进入service业务处理层,业务处理层需要访问数据库的话,service将任务

告知dao数据访问层,dao层访问数据库获取到数据后将数据返回给service层,service将数据处理后返回给action,不同的action依照service的返回值执行不同的过程,然后返回一个字

符串或者数据(下面并未讲到如何在配置文件中配置返回数据,请读者自行查找),服务器依照struts.xml文件中的配置进行页面的跳转,然后在浏览器,用户便看到了不同的页面。

 

具体配置:

在用户点击一个链接之后,我们需要它执行一段代码,那么我们就要识别这个链接是否符合我们的要求,于是我们就要配合拦截器了

拦截器的配置需要写在WEB-INF目录下的web.xml中

类似这个样子

<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>*.action</url-pattern></filter-mapping>

 

通过这个,我们可以拦截action请求了,action是专门用于处理来自页面的各种请求的,相当于是后台的外交官,action在后台的处理流程一般是:

action  ->  service  ->  dao  

service是具体的业务逻辑处理层

dao是和数据库打交道的层

在action处理完数据之后,我们需要跳转页面或者返回数据,这里就又要进行配置了,我们把action的配置命名为struts.xml(只能是这个名字)

在struts.xml文件中,我们需要依照action返回的不同结果进行不同的页面跳转,具体配置类似这样子

<action name="index" class="lee.action.IndexAction"><result name="success">/pages/index.jsp</result><result name="input">/error.jsp</result></action>

 

当action返回的是字符串“success”,那么页面将跳转到index.jsp页面

当然了,这里的跳转是支持action之间相互跳转的,需要这么写

<result name="input" type="redirectAction">login</result>

如果返回的字符串是“input”,那么程序将回到以login为名字的action进行处理。

要使用spring框架我们还需要对bean进行配置,将各个类默认以简单名称存储在bean中,我们将配置文件命名为beans.xml和struts.xml保存在相同目录下,在web.xml中配置

此文件的路径。在web.xml中加上这么一段

<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:beans.xml</param-value></context-param>

 

然后我们在beans.xml中配置数据库链接:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:db.properties</value></list> </property></bean>

 

这里的db.properties是数据库连接的配置文件,里面的格式是

JDBC.DBDriver=JDBC.Connection=JDBC.User=JDBC.Password=

 

等号后面需要自己去填。

数据库链接配置完了之后,我们需要配置sessionFactory

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" ><!-- 数据源的配置 --><property name="dataSource" ref="dataSource" /><property name="configLocation"><value>classpath:hibernate.cfg.xml</value></property><!-- 映射文件的配置 --><property name="packagesToScan"><list><value>lee/entity</value></list></property></bean>

 

在这里hibernate.cfg.xml文件是自己写的映射的配置,lee/entity是映射的路径

下面是hibernate.cfg.xml的示例代码,大家可以参考一下

<hibernate-configuration><session-factory><!-- 数据库hibernate的信息 --><!-- 显示sql语句 --><property name="show_sql">true</property><!-- 显示方言 --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- 若数据库中没有创建表则自动创建表 --><property name="hibernate.hbm2ddl.auto">update</property><!-- hibernate映射类 --><mapping resource="lee/entity/Book.hbm.xml" /><mapping resource="lee/entity/BookUnChecked.hbm.xml" /><mapping resource="lee/entity/BookCategory.hbm.xml" /><mapping resource="lee/entity/User.hbm.xml" /><mapping resource="lee/entity/UserCategory.hbm.xml" /><mapping resource="lee/entity/UserNote.hbm.xml" /><mapping resource="lee/entity/UserView.hbm.xml" /><mapping resource="lee/entity/BookChapter.hbm.xml" /><mapping resource="lee/entity/BookCase.hbm.xml" /></session-factory></hibernate-configuration>

 

然后我们还需要在beans中配置事务管理器

<!--配置事务管理器 --><bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean>

 

至此,3大框架大概配置基本讲完了

struts2、hibernate以及spring是如何配置的