加载中...

SSH(struts+spring+hibernate)常用配置整理

SSH(struts+spring+hibernate)常用配置整理

web.xml配置

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
 
    <!--配置shiro权限-->
    <filter>
        <filter-name>shiroFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>shiroFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 
 
    <!-- 1.加载spring配置文件-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:beans.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
 
    <!--2.配置字符编码的过滤器-->
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <!--spring-web包提供的CharacterEncodingFilter只能解决POST的中文乱码问题-->
        <!--<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>-->
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 
    <!—解决hibernate懒加载session关闭的问题,让session存活到关闭action,根据自己实际需求进行是否需要配置-->
    <filter>
        <filter-name>openSession</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>openSession</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 
    <!-- 3.配置struts的拦截器-->
    <filter>
        <filter-name>strut2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
 
    <filter-mapping>
        <filter-name>strut2</filter-name>
        <url-pattern>/*</url-pattern>
        <!--请求和转发都会被strut2拦截
            默认情况下,只有请求会被拦截
        -->
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
</web-app>

 

  

application.xml

 

<?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:context="http://www.springframework.org/schema/context"
       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.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context.xsd
                        http://www.springframework.org/schema/aop
                        http://www.springframework.org/schema/aop/spring-aop.xsd
                        http://www.springframework.org/schema/tx
                        http://www.springframework.org/schema/tx/spring-tx.xsd">
 
 
 
    <!--加载jdbc属性文件-->
    <context:property-placeholder  location="classpath:jdbc.properties"/>
 
    <!--数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${driverClass}"></property>
        <property name="jdbcUrl" value="${jdbcUrl}"></property>
        <property name="user" value="${user}"></property>
        <property name="password" value="${password}"></property>
    </bean>
 
    <!--Spring框架用于整合hibernate的工厂bean sessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- 数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!-- hibernate的其它配置-->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
               <!—配置数据的方言-->
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            </props>
        </property>
 
        <!-- hibernate映射文件-->
        <property name="mappingDirectoryLocations">
            <list>
               <value>classpath:com/gyf/bos/model</value>
            </list>
        </property>
    </bean>
 
    <!--事务管理器:如果在service中使用注解来配置事务,
    默认是通过transactionManager的id来查找事物管理器-->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
 
 
    <!-- 配置hiberante的模版 bean-->
    <bean class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
 
 
    <!--组件扫描-->
    <context:component-scan base-package="com.gyf.bos.*"/>
 
    <!--引用注解解析器-->
    <!--<context:annotation-config></context:annotation-config>-->
 
    <!--开启事务注解-->
    <tx:annotation-driven></tx:annotation-driven>
 
    <!-- 配置远程服务的代理对象 -->
    <bean id="customerSerivce" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
        <!--注入接口类型-->
        <property name="serviceInterface" value="com.gyf.crm.service.CustomerService" />
        <!--服务访问路径-->
        <property name="serviceUrl" value="http://localhost:8888/crm/remoting/customer" />
    </bean>
 
    <!--shiroFilter-->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="securityManager" ref="securityManager"></property>
        <property name="loginUrl" value="/login.jsp"></property>
        <property name="filterChainDefinitions">
            <value>
                /userAction_login.action = anon
                /validatecode.jsp* = anon
                /* = authc
            </value>
        </property>
    </bean>
 
    <bean id="BOSRealm" class="com.gyf.bos.web.realm.BOSRealm"></bean>
 
    <!--注册缓存管理器-->
    <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
        <!--注入ehcache配置文件-->
        <property name="cacheManagerConfigFile" value="classpath:ehcache.xml"></property>
    </bean>
 
    <!--添加shiro权限管理-->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="realm" ref="BOSRealm"></property>
        <property name="cacheManager" ref="cacheManager"></property>
    </bean>
 
 
 
 
    <!--开启shiro注解-->
    <!--=======================================================================================-->
    <!--1.开启自动代理-->
<!--    <bean id="defaultAdvisorAutoProxyCreator"
          class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
        &lt;!&ndash; 强制使用cglib为Action创建代理对象 &ndash;&gt;
        <property name="proxyTargetClass" value="true"></property>
    </bean>
 
 
    &lt;!&ndash;2.切面类&ndash;&gt;
    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor" />
 
    <bean class="com.gyf.bos.web.action.StaffAction" scope="prototype"></bean>-->
    <!--=======================================================================================-->
 
 
    <!-- 流程引擎配置对象 -->
    <bean id="processEngineConfiguration"
          class="org.activiti.spring.SpringProcessEngineConfiguration">
        <property name="dataSource" ref="dataSource"/>
        <property name="transactionManager" ref="transactionManager"/>
        <property name="databaseSchemaUpdate" value="true" />
    </bean>
 
    <!-- 使用工厂创建流程引擎对象 -->
    <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
        <property name="processEngineConfiguration" ref="processEngineConfiguration"/>
    </bean>
 
 
    <!-- 注册Service -->
    <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService"/>
    <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService"/>
    <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService"/>
    <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService"/>
 
</beans>

 

 

struts.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
 
    <!-- 调试模式-->
    <constant name="struts.devMode" value="true"></constant>
 
    <package name="p1" extends="struts-default">
 
        <!--配置全局的结果视图-->
        <global-results>
            <result name="login" type="redirect">/login.jsp</result>
            <result name="UnauthorizedUrl" type="redirect">/authorizing.jsp</result>
        </global-results>
 
        <!--抛出异常来到自定义页面-->
        <global-exception-mappings>
            <exception-mapping exception="org.apache.shiro.authz.UnauthorizedException" result="UnauthorizedUrl"></exception-mapping>
        </global-exception-mappings>
 
        <!-- 配置jsp页面的访问规则-->
        <action name="page_*_*" >
            <result name="success">/WEB-INF/pages/{1}/{2}.jsp</result>
        </action>
 
        <!--用户模块-->
        <action name="userAction_*" class="com.gyf.bos.web.action.UserAction" method="{1}">
            <result name="home">/WEB-INF/pages/common/index.jsp</result>
            <result name="list">/WEB-INF/pages/admin/userlist.jsp</result>
            <result name="loginfailure">/login.jsp</result>
        </action>
 
        <!--取派员模块-->
        <action name="staffAction_*" class="com.gyf.bos.web.action.StaffAction" method="{1}">
            <result name="success">/WEB-INF/pages/base/staff.jsp</result>
 
        </action>
 
        <!--区域模块-->
        <action name="regionAction_*" class="com.gyf.bos.web.action.RegionAction" method="{1}">
            <result name="success">/WEB-INF/pages/base/region.jsp</result>
        </action>
 
        <!--分区模块-->
        <action name="subareaAction_*" class="com.gyf.bos.web.action.SubareaAction" method="{1}">
            <result name="success">/WEB-INF/pages/base/subarea.jsp</result>
        </action>
 
        <!--定区模块-->
        <action name="decidedzoneAction_*" class="com.gyf.bos.web.action.DecidedzoneAction" method="{1}">
            <result name="success">/WEB-INF/pages/base/decidedzone.jsp</result>
        </action>
 
        <!--工单模块-->
        <action name="noticebillAction_*" class="com.gyf.bos.web.action.NoticebillAction" method="{1}">
        </action>
 
        <!--工作单模块-->
        <action name="workordermanageAction_*" class="com.gyf.bos.web.action.WorkordermanageAction" method="{1}">
        </action>
 
        <!--权限模块-->
        <action name="functionAction_*" class="com.gyf.bos.web.action.FunctionAction" method="{1}">
            <result name="success">/WEB-INF/pages/admin/function.jsp</result>
        </action>
 
        <!--角色模块-->
        <action name="roleAction_*" class="com.gyf.bos.web.action.RoleAction" method="{1}">
            <result name="success">/WEB-INF/pages/admin/role.jsp</result>
        </action>
 
        <!--流程定义模块-->
        <action name="processDefinitionAction_*" class="com.gyf.bos.web.action.ProcessDefinitionAction" method="{1}">
            <result name="list">/WEB-INF/pages/workflow/processdefinition_list.jsp</result>
            <result name="viewpng" type="stream">
                <param name="contentType">image/png</param>
                <param name="inputName">imgIS</param>
            </result>
        </action>
 
        <!--流程实例模块-->
        <action name="processInstanceAction_*" class="com.gyf.bos.web.action.ProcessInstanceAction" method="{1}">
            <result name="list">/WEB-INF/pages/workflow/processinstance.jsp</result>
        </action>
    </package>
</struts>

 


其他的一些配置文件
 

log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
 
### direct messages to file hibernate.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=E:/bos.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
 
### set log levels - for more verbose logging change 'info' to 'debug' ###
# 日志级别【最好配置到error】-输出源
log4j.rootLogger=info , stdout , file

 


  

ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
 
    <diskStore path="java.io.tmpdir"/>
    <defaultCache
            maxElementsInMemory="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="true"
            maxElementsOnDisk="10000000"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"
    />
</ehcache>

 

  • maxElementsInMemory :设置基于内存的缓存中可存放的对象最大数目
  • eternal:设置对象是否为永久的,true表示永不过期,此时将忽略
  • timeToIdleSeconds 和 timeToLiveSeconds属性; 默认值是false
  • timeToIdleSeconds:设置对象空闲最长时间,以秒为单位, 超过这个时间,对象过期。当对象过期时,EHCache会把它从缓存中清除。如果此值为0,表示对象可以无限期地处于空闲状态。
  • timeToLiveSeconds:设置对象生存最长时间,超过这个时间,对象过期。如果此值为0,表示对象可以无限期地存在于缓存中. 该属性值必须大于或等于 timeToIdleSeconds 属性值
  • overflowToDisk:设置基于内在的缓存中的对象数目达到上限后,是否把溢出的对象写到基于硬盘的缓存中
  • diskPersistent 当jvm结束时是否持久化对象 true false 默认是false
  • diskExpiryThreadIntervalSeconds 指定专门用于清除过期对象的监听线程的轮询时间
  • memoryStoreEvictionPolicy - 当内存缓存达到最大,有新的element加入的时候, 移除缓存中element的策略。默认是LRU(最近最少使用),可选的有LFU(最不常使用)和FIFO(先进先出)

 

posted @ 2019-12-11 15:02  royal6  阅读(237)  评论(0编辑  收藏  举报