`

SSH集成配置总结

 
阅读更多

Struts1.x+Spring2.5+Hibernate3.2集成时各配置文件配置方法:

1、web.xml配置文件应有如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<!-- 在这里配置服务启动时加载spring配置文件applicationContext*.xml -->
<!-- spring Bean上下文监听器使用以下context-param获得spring配置文件的路径集合 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/application*.xml</param-value>
</context-param>

<!-- 配置OpenSessionInView过滤器(作用让hibernate的session不至过早关闭,使其作用域在一个请求范围内) -->
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>


<!-- 配置Spring中的编码过滤器(防止乱码) -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>

<!-- 以下为自定义的一些filter等-->
<!-- 员工登录filter -->
<filter>
<filter-name>AdminOnlineFilter</filter-name>
<filter-class>com.xasxt.ssh.web.filter.AdminOnlineFilter</filter-class>
</filter>
<!-- 客户登录Filter -->
<filter>
<filter-name>ClientOnlineFilter</filter-name>
<filter-class>com.xasxt.ssh.web.filter.ClientOnlineFilter</filter-class>
</filter>
<!-- 配置分页过滤器 -->
<filter>
<filter-name>PageFilter</filter-name>
<filter-class>com.xasxt.ssh.web.filter.PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PageFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ClientOnlineFilter</filter-name>
<url-pattern>/client/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>AdminOnlineFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- spring Bean上下文监听器,用于加载Beanfactory实例到ServletContext中 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Standard Action Servlet Configuration -->

<!-- Struts1.x中的servlet配置-->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-admin.xml,/WEB-INF/struts-client.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<!-- 配置DWR -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>

<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<!-- 配置错误页面 -->

<error-page>
<error-code>401</error-code>
<location>/401.jsp</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/403.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>


<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

</web-app>


2、Spring配置如下:

<?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: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/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!--事务配置开始 -->

­­<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>

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

<!--配置事务管理的特性(隔离级别,传播特性...) -->
<tx:advice id="transAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>

<!-- 配置切面,把事务管理advice和切入点组到一起 -->
<aop:config>
<aop:pointcut expression="execution(* com.xasxt.ssh.manager.impl.*.*(..))" id="managerpc"/>
<aop:advisor advice-ref="transAdvice" pointcut-ref="managerpc"/>
</aop:config>

<!--事务配置结束 -->

如果我们不用上面绿色发光字体的那部分内容的话,我们还可以用下面的方法配置数据库层管理(不用hibernate.cfg.xml)

<!--
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/sshonline"/>
<property name="username" value="root"/>
<property name="password" value="tpfpcwl"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/fei/ssh/entity/Client.hbm.xml</value>
<value>com/fei/ssh/entity/CommonProp.hbm.xml</value>
<value>com/fei/ssh/entity/Employee.hbm.xml</value>
<value>com/fei/ssh/entity/Question.hbm.xml</value>
<value>com/fei/ssh/entity/QuestionOption.hbm.xml</value>
<value>com/fei/ssh/entity/SurveyPlan.hbm.xml</value>
<value>com/fei/ssh/entity/SurveyQuestion.hbm.xml</value>
<value>com/fei/ssh/entity/SurveyReport.hbm.xml</value>
<value>com/fei/ssh/entity/SurveyResult.hbm.xml</value>
<value>com/fei/ssh/entity/SendSurvey.hbm.xml</value>
</list>
</property>
</bean>
-->
</beans>

下面是其它的一些配置(可有可无)

<!-- 配置注解注入 -->

<aop:aspectj-autoproxy/>


<!-- 日志记录配置 -->
<bean id="logAdvice" class="com.fei.ssh.log.LogAdvice"></bean>

<!-- 邮件发送的配置方式 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="defaultEncoding" value="utf-8" />
<property name="host" value="smtp.sogou.com" />
<property name="javaMailProperties">
<props>
<!-- 如果要使用用户名和密码验证,这一步需要 -->
<prop key="mail.smtp.auth">true</prop>
</props>
</property>
<property name="username" value="tests0901"/>
<property name="password" value="tests0901"/>
</bean>

<bean id="mailUtil" class="com.fei.ssh.mail.MailUtil">
<property name="mail" ref="mailSender"></property>
</bean>

<!--自己bean注入配置方式 -->

<!--
<bean id="userDAO" class="com.fei.ssh.dao.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="userBiz" class="com.fei.ssh.biz.UserBiz">
<property name="userDao">
<ref bean="userDAO" />
</property>
</bean>
-->

3、hibernate的配置:

如果不用Spring管理hibernate的配置,我们就需要有下面的hibernate.cfg.xml文件的配置:

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hql_info?createDatabaseIfNotExist=true</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>

<!-- 配置二级缓存 -->
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

<!-- 打开二级缓存的另一种配置

<property name="cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.OSCacheProvider</property>
-->


<!-- 打开Query的二级缓存(要慎重) -->
<property name="hibernate.cache.use_query_cache">true</property>
<!-- 打开二级缓存的统计功能 -->
<property name="hibernate.generate_statistics">true</property>

 <!--映射文件配置 -->
<mapping resource="com/xasxt/entity/User.hbm.xml"/>
<mapping resource="com/xasxt/entity/Document.hbm.xml"/>


<!-- 针对某一实体类配置开启二级缓存(也可在各自实体映射文件中进行配置开启) -->
<class-cache usage="read-only" class="com.xasxt.entity.User"/>

<!-- 对User的save进行事件监听,当保存时触发该事件,第一个listener如果不配的话将无法保存。 -->
<event type="save">
    <listener class="org.hibernate.event.def.DefaultSaveOrUpdateEventListener"/>
    <listener class="com.fei.hibernate.SaveListener"/>
</event>
</session-factory>
</hibernate-configuration>

4、DWR与SSH集成方案:

<?xml version="1.0" encoding="UTF-8"?>

<dwr>

<allow>
<convert converter="bean" match="com.xasxt.ajaxdwr.StudentVO"/>

<!--普通方式使用DWR的配置方式 -->
<create creator="new" javascript="demo1">
    <param name="class" value="com.xasxt.ajaxdwr.StudentBiz"/>
    <exclude method="getCities"/>
</create>

<!-- 与spring结合-->
<create creator="spring" javascript="intro">

(说明:spring中配置的bean的name应与这里的value相同:<bean name="hello" class="com.xasxt.springdwr.DwrSpringTestBean"/>。页面上即可用intro.方法名 调用spring管理的业务类的方法)
    <param name="beanName" value="hello"/>
</create>
</allow>

</dwr>

对于Struts1.x+Spring2.5+Hibernate3.x的配置总结就先到此。

有时间再续......

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics