shh 整合例子(转)

2009 - 02 - 18

shh 整合例子

首选创建web.xml 主要是配置Struts的ActionServlet和Spring的字符过滤器
Xml代码 复制代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appxmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"version="2.4"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  3. <filter>
  4. <filter-name>CharacterEncodingFilter</filter-name>
  5. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  6. <init-param>
  7. <param-name>encoding</param-name>
  8. <param-value>UTF-8</param-value>
  9. </init-param>
  10. <init-param>
  11. <param-name>forceEncoding</param-name>
  12. <param-value>true</param-value>
  13. </init-param>
  14. </filter>
  15. <filter-mapping>
  16. <filter-name>CharacterEncodingFilter</filter-name>
  17. <url-pattern>/*</url-pattern>
  18. </filter-mapping>
  19. <servlet>
  20. <servlet-name>action</servlet-name>
  21. <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  22. <init-param>
  23. <param-name>config</param-name>
  24. <param-value>/WEB-INF/struts/struts.xml</param-value>
  25. </init-param>
  26. <init-param>
  27. <param-name>debug</param-name>
  28. <param-value>3</param-value>
  29. </init-param>
  30. <init-param>
  31. <param-name>detail</param-name>
  32. <param-value>3</param-value>
  33. </init-param>
  34. <load-on-startup>0</load-on-startup>
  35. </servlet>
  36. <servlet-mapping>
  37. <servlet-name>action</servlet-name>
  38. <url-pattern>*.do</url-pattern>
  39. </servlet-mapping>
  40. <!--session超时定义,单位为分钟-->
  41. <session-config>
  42. <session-timeout>10</session-timeout>
  43. </session-config>
  44. <!--默认首页定义-->
  45. <welcome-file-list>
  46. <welcome-file>index.jsp</welcome-file>
  47. <welcome-file>index.html</welcome-file>
  48. </welcome-file-list>
  49. </web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  
  <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>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <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/struts.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  
  <!-- session超时定义,单位为分钟 -->
  <session-config>
    <session-timeout>10</session-timeout>
  </session-config>
  
  <!-- 默认首页定义 -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  
</web-app>

然后创建struts.xml(String配置文件) 要注意这里集成了Spring插件,把全部Spring配置文件注入到ContextLoaderPlugIn中

Xml代码 复制代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.2//EN""http://struts.apache.org/dtds/struts-config_1_2.dtd">
  3. <struts-config>
  4. <form-beans>
  5. <form-beanname="loginVO"type="com.vo.LoginVO"/>
  6. </form-beans>
  7. <global-forwards>
  8. <forwardname="error"path="/error.jsp"/>
  9. </global-forwards>
  10. <action-mappings>
  11. <actionpath="/login"
  12. name="loginVO"
  13. type="org.springframework.web.struts.DelegatingActionProxy"
  14. parameter="action"
  15. scope="request">
  16. <forwardname="login"path="/login.jsp"/>
  17. <forwardname="index"path="/index.jsp"/>
  18. </action>
  19. </action-mappings>
  20. <!--集成Spring插件-->
  21. <plug-inclassName="org.springframework.web.struts.ContextLoaderPlugIn">
  22. <set-propertyproperty="contextConfigLocation"value="/WEB-INF/spring/*.xml"/>
  23. </plug-in>
  24. </struts-config>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>

  <form-beans>
 <form-bean name="loginVO" type="com.vo.LoginVO" />
  </form-beans>

  <global-forwards>
   <forward name="error" path="/error.jsp"/>
  </global-forwards>

  <action-mappings>
   <action path="/login"
     name="loginVO"
      type="org.springframework.web.struts.DelegatingActionProxy"
      parameter="action"
      scope="request">
      <forward name="login" path="/login.jsp"/>
      <forward name="index" path="/index.jsp"/>
    </action>
  </action-mappings>

  <!-- 集成Spring插件 -->
  <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="contextConfigLocation" value="/WEB-INF/spring/*.xml" />
  </plug-in>

</struts-config>


配置Spring配置文件

Xml代码 复制代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
  3. <beans>
  4. <!--读入属性文件-->
  5. <beanid="propertyConfig"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  6. <propertyname="locations">
  7. <list>
  8. <value>classpath:hibernate.properties</value>
  9. </list>
  10. </property>
  11. </bean>
  12. <!--配置数据源,可以其他方式-->
  13. <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource">
  14. <propertyname="driverClassName"value="${hibernate.driverClassName}"/>
  15. <propertyname="url"value="${hibernate.url}"/>
  16. <propertyname="username"value="${hibernate.username}"/>
  17. <propertyname="password"value="${hibernate.password}"/>
  18. <propertyname="maxActive"value="${hibernate.maxActive}"/>
  19. <propertyname="maxIdle"value="${hibernate.maxIdle}"/>
  20. <propertyname="maxWait"value="${hibernate.maxWait}"/>
  21. </bean>
  22. <!--配置Hibernate的Session工厂,注入数据源、映射文件-->
  23. <beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  24. <propertyname="dataSource">
  25. <reflocal="dataSource"/>
  26. </property>
  27. <propertyname="mappingResources">
  28. <list>
  29. <value>com/po/login.hbm.xml</value>
  30. </list>
  31. </property>
  32. <propertyname="hibernateProperties">
  33. <props>
  34. <propkey="hibernate.dialect">${hibernate.dialect}</prop>
  35. <propkey="hibernate.show_sql">${hibernate.showSQL}</prop>
  36. </props>
  37. </property>
  38. </bean>
  39. <!--声明Hibernate事务管理,注入Session工厂-->
  40. <beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  41. <propertyname="sessionFactory">
  42. <reflocal="sessionFactory"/>
  43. </property>
  44. </bean>
  45. <!--配置事务代理,注入事务管理transactionManager,由Spring来代理事务,设置事务属性-->
  46. <beanid="transactionProxy"abstract="true"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  47. <propertyname="transactionManager">
  48. <refbean="transactionManager"/>
  49. </property>
  50. <propertyname="transactionAttributes">
  51. <props>
  52. <propkey="save*">PROPAGATION_REQUIRED,-Exception</prop>
  53. <propkey="add*">PROPAGATION_REQUIRED,-Exception</prop>
  54. <propkey="remove*">PROPAGATION_REQUIRED,-Exception</prop>
  55. <propkey="delete*">PROPAGATION_REQUIRED,-Exception</prop>
  56. <propkey="update*">PROPAGATION_REQUIRED,-Exception</prop>
  57. <propkey="create*">PROPAGATION_REQUIRED,-Exception</prop>
  58. <propkey="query*">PROPAGATION_REQUIRED,readOnly</prop>
  59. <propkey="find*">PROPAGATION_REQUIRED,readOnly</prop>
  60. <propkey="get*">PROPAGATION_REQUIRED,readOnly</prop>
  61. <propkey="load*">PROPAGATION_REQUIRED,readOnly</prop>
  62. <propkey="*">PROPAGATION_REQUIRED</prop>
  63. </props>
  64. </property>
  65. </bean>
  66. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
 <!-- 读入属性文件 -->
 <bean id="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>classpath:hibernate.properties</value>
   </list>
  </property>
 </bean>

 <!-- 配置数据源,可以其他方式 -->
 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
     <property name="driverClassName" value="${hibernate.driverClassName}" />
  <property name="url" value="${hibernate.url}" />
  <property name="username" value="${hibernate.username}" />
  <property name="password" value="${hibernate.password}" />
     <property name="maxActive" value="${hibernate.maxActive}" />
  <property name="maxIdle" value="${hibernate.maxIdle}" />
  <property name="maxWait" value="${hibernate.maxWait}" />
    </bean>

 <!-- 配置Hibernate的Session工厂,注入数据源、映射文件 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
     <property name="dataSource">
        <ref local="dataSource"/>
     </property>
        <property name="mappingResources">
            <list>
                <value>com/po/login.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
       <props>
         <prop key="hibernate.dialect">${hibernate.dialect}</prop>
         <prop key="hibernate.show_sql">${hibernate.showSQL}</prop>
       </props>
     </property>
    </bean>

 <!-- 声明Hibernate事务管理,注入Session工厂 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
     <property name="sessionFactory">
       <ref local="sessionFactory"/>
     </property>
   </bean>

 <!-- 配置事务代理,注入事务管理transactionManager,由Spring来代理事务,设置事务属性 -->
    <bean id="transactionProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
     <property name="transactionManager">
       <ref bean="transactionManager"/>
     </property>
     <property name="transactionAttributes">
       <props>
           <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
               <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
               <prop key="remove*">PROPAGATION_REQUIRED,-Exception</prop>
               <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>
               <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
               <prop key="create*">PROPAGATION_REQUIRED,-Exception</prop>
               <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
               <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
               <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
               <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
               <prop key="*">PROPAGATION_REQUIRED</prop>
       </props>
     </property>
    </bean>
</beans>



配置Action将Service注入到Action

Java代码 复制代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
  3. <beans>
  4. <!--配置Action,singleton属性设置为false表示不使用单例,每次都重新创建实例,避免并发问题,注入事务管理的Service-->
  5. <beanname="/login"class="com.action.LoginAction"singleton="false">
  6. <propertyname="loginService">
  7. <refbean="loginService"/>
  8. </property>
  9. </bean>
  10. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
 <!-- 配置Action,singleton属性设置为false表示不使用单例,每次都重新创建实例,避免并发问题,注入事务管理的Service -->
  <bean name="/login" class="com.action.LoginAction" singleton="false">
   <property name="loginService">
         <ref bean="loginService"/>
        </property>
  </bean>
</beans>


配置Service将Dao注入到Service

Xml代码 复制代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
  3. <beans>
  4. <!--配置事务代理Service,先将Dao注入到Service,再将Service注入给事务代理-->
  5. <beanid="loginService"parent="transactionProxy">
  6. <propertyname="target">
  7. <strong
<!-- Baidu Button BEGIN -->
<script>window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "1", "bdMiniList": false, "bdPic": "", "bdStyle": "0", "bdSize": "16" }, "share": {} }; with (document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' + ~(-new Date() / 36e5)];</script><!-- Baidu Button END --><link rel="stylesheet" href="http://static.blog.csdn.net/css/blog_detail.css"> <!--172.16.140.12--><!-- Baidu Button BEGIN --><script type="text/javascript" id="bdshare_js" data="type=tools&amp;uid=1536434"></script><script type="text/javascript" id="bdshell_js"></script><script type="text/javascript"> document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000) </script><!-- Baidu Button END -->
0
0
我的同类文章
Hibernate(2) Spring(2) Struts(4)
<script type="text/javascript"> $(function () { GetCategoryArticles('6063004', 'morning2008','foot','50491872'); }); </script>
<script language="javascript" type="text/javascript"> $(function(){ $.get("/morning2008/svc/GetSuggestContent/50491872",function(data){ $("#suggest").html(data); }); }); </script><style> .blog-ass-articl dd { color: #369; width: 99%; /*修改行*/ float: left; overflow: hidden; font: normal normal 12px/23px "SimSun"; height: 23px; margin: 0; padding: 0 0 0 10px; margin-right: 30px; background: url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px; } </style>
猜你在找
<script src="http://csdnimg.cn/jobreco/job_reco.js" type="text/javascript"></script><script type="text/javascript"> csdn.position.showEdu({ sourceType: "blog", searchType: "detail", searchKey: "50491872", username: "", recordcount: "5", containerId: "adCollege" //容器DIV的id。 }); </script>
<script type="text/javascript"> $(function () { setTimeout(function () { var searchtitletags = 'shh 整合例子(转)' + ',' + $("#tags").html(); searchService({ index: 'blog', query: searchtitletags, from: 5, size: 5, appendTo: '#res', url: 'recommend', his: 2, client: "blog_cf_enhance", tmpl: '<dd style="background:url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px;"><a href="#{ url }" title="#{ title }" strategy="#{ strategy }">#{ title }</a></dd>' }); }, 500); }); </script>
<!--AdForward Begin:--> <script type="text/javascript" src="http://csdnim.qtmojo.com/main/s?user=csdn%7Cblog%7Cbanner2&amp;db=csdnim&amp;border=0&amp;local=yes&amp;js=ie" charset="gbk"></script><!--AdForward End-->
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
<script type="text/javascript"> var fileName = '50491872'; var commentscount = 0; var islock = false </script><script type="text/javascript" src="http://static.blog.csdn.net/scripts/comment.js"></script>
<script type="text/javascript"> $(function () { $("#ad_frm_0").height("90px"); setTimeout(function(){ $("#ad_frm_2").height("200px"); },1000); }); </script><style type="text/css"> .tag_list { background: none repeat scroll 0 0 #FFFFFF; border: 1px solid #D7CBC1; color: #000000; font-size: 12px; line-height: 20px; list-style: none outside none; margin: 10px 2% 0 1%; padding: 1px; } .tag_list h5 { background: none repeat scroll 0 0 #E0DBD3; color: #47381C; font-size: 12px; height: 24px; line-height: 24px; padding: 0 5px; margin: 0; } .tag_list h5 a { color: #47381C; } .classify { margin: 10px 0; padding: 4px 12px 8px; } .classify a { margin-right: 20px; white-space: nowrap; } </style>
<script language="javascript" type="text/javascript"> $(function(){ setTimeout(function(){ $.get("/morning2008/svc/GetTagContent",function(data){ $(".tag_list").html(data).show(); }); }); },500); </script>
<style> #popup_mask { position: absolute; width: 100%; height: 100%; background: #000; z-index: 9999; left: 0px; top: 0px; opacity: 0.3; filter: alpha(opacity=30); display: none; } </style> <script type="text/javascript"> $(function(){ setTimeout(function(){ $(".comment_body:contains('回复')").each(function(index,item){ var u=$(this).text().split(':')[0].toString().replace("回复","") var thisComment=$(this); if(u) { $.getJSON("https://passport.csdn.net/get/nick?callback=?", {users: u}, function(a) { if(a!=null&&a.data!=null&&a.data.length>0) { nick=a.data[0].n; if(u!=nick) { thisComment.text(thisComment.text().replace(u,nick)); } } }); } }); },200); setTimeout(function(){ $("a img[src='http://js.tongji.linezing.com/stats.gif']").parent().css({"position":"absolute","left":"50%"}); },300); }); function loginbox(){ var $logpop=$("#pop_win"); $logpop.html('<iframe src="https://passport.csdn.net/account/loginbox?service=http://static.blog.csdn.net/callback.htm" frameborder="0" height="600" width="400" scrolling="no"></iframe>'); $('#popup_mask').css({ opacity: 0.5, width: $( document ).width() + 'px', height: $( document ).height() + 'px' }); $('#popup_mask').css("display","block"); $logpop.css( { top: ($( window ).height() - $logpop.height())/ 2 + $( window ).scrollTop() + 'px', left:($( window ).width() - $logpop.width())/ 2 } ); setTimeout( function () { $logpop.show(); $logpop.css( { opacity: 1 } ); }, 200 ); $('#popup_mask').unbind("click"); $('#popup_mask').bind("click", function(){ $('#popup_mask').hide(); var $clopop = $("#pop_win"); $("#common_ask_div_sc").css("display","none"); $clopop.css( { opacity: 0 } ); setTimeout( function () { $clopop.hide(); }, 350 ); return false; }); } </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值