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(先进先出)

SSH(struts+spring+hibernate)常用配置整理的更多相关文章

  1. SSH(Struts,Spring,Hibernate)和SSM(SpringMVC,Spring,MyBatis)的区别

    SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层. SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,M ...

  2. SSH(Struts+spring+hibernate)配置

    1.spring和struts 1)web.xml 配置spring的ContextLoaderListener(监听器) 配置Struts的StrutsPrepareAndExecuteFilter ...

  3. 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓

    hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提 ...

  4. [转] 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓

      hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6 ...

  5. SSH:Struts + Spring + Hibernate 轻量级Java EE企业框架

    Java EE(Java Platform,Enterprise Edition)是sun公司(2009年4月20日甲骨文将其收购)推出的企业级应用程序版本.这个版本以前称为 J2EE.能够帮助我们开 ...

  6. SSH(Struts,Spring,Hibernate)和SSM(SpringMVC,Spring,MyBatis)之间区别

    http://m.blog.csdn.net/article/details?id=52795914#0-qzone-1-52202-d020d2d2a4e8d1a374a433f596ad1440

  7. 用eclipse搭建SSH(struts+spring+hibernate)框架

    声明: 本文是个人对ssh框架的学习.理解而编辑出来的,可能有不足之处,请大家谅解,但希望能帮助到大家,一起探讨,一起学习! Struts + Spring + Hibernate三者各自的特点都是什 ...

  8. 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)

    [SSH进阶之路]Struts + Spring + Hibernate 进阶开端(一) 标签: hibernatespringstrutsssh开源框架 2014-08-29 07:56 9229人 ...

  9. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

随机推荐

  1. Vue-router(1)之component标签

    1. 使用 <component>标签实现组件切换 <component> 是Vue提供的标签语法:有一个is属性,is的作用就是显示指定的组件 <template> ...

  2. Java线程——线程池概念

    什么是线程池? 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间.那么有没有一种办法使得线程可以复用, ...

  3. SQL基础教程(第2版)第8章 SQL高级处理:8-2 GROUPING运算符

    第8章 SQL高级处理:8-2 GROUPING运算符 ■ GROUPING SETS——取得期望的积木● 只使用GROUP BY子句和聚合函数是无法同时得出小计和合计的.如果想要同时得到,可以使用G ...

  4. 加速软件源更新和安装 ubuntu 软件中心

    Linux mint 12 修改加速软件源更新和安装 ubuntu 软件中心 由于 linux mint 12 是基于 ubuntu 的,可以使用 ubuntu 的源(Ubuntu 11.10 代号 ...

  5. go语言实现leetcode-242

    package main import ( "fmt" "reflect" ) func isAnagram(s string, t string) bool ...

  6. Anaconda 添加清华源与恢复默认源

    1.添加清华源 查看清华大学官方镜像源文档:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ 本文基于Windows平台,首先用命令: conda ...

  7. //使用PDO连接mysql数据库

    <?php //使用PDO连接mysql数据库 class pdo_con{     var $dsn = 'mysql:dbname=test; host:127.0.0.1';     va ...

  8. hasura graphql-engine v1.2.0 beta 版本

    hasura graphql-engine v1.2.0 提供了一个很不错的功能action,这个也是目前其他graphql 没有hasura 强大的 地方,使用action 我们可以更好的扩展has ...

  9. java的io字符流关闭和刷新.flush();

    因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中. 但是关闭的流对象,是无法继续写出数据 的.如果我们既想写出数据,又想继续使用流,就需要 flush 方法了. flush :刷新缓冲区, ...

  10. Random Access Iterator

    Random Access Iterator 树型概率DP dp[u]代表以当前点作为根得到正确结果的概率 将深度最深的几个点dp[u]很明显是1 然后很简单的转移 有k次,但我们要先看一次的情况,然 ...