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"> <!– 强制使用cglib为Action创建代理对象 –> <property name="proxyTargetClass" value="true"></property> </bean> <!–2.切面类–> <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>
|