- 浏览: 69609 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (42)
- 耗材管理系统 (1)
- OSWorkFlow (2)
- osworkflow api (1)
- jsp 分页插件 (1)
- OsWorkFlow工作流请假实例 (1)
- SSH+DWR (1)
- Java角色权限设计 (1)
- SSH 三大框架整合 (1)
- Spring注解 (1)
- 没有事业的女孩子(一位老总的感言) (1)
- Jdbc介绍 (1)
- struts2 trim截取首尾空格 (1)
- DOS 命令大全 (1)
- SqlServer2000 中各种数据类型允许的最大长度 (1)
- 【收藏版】15款报表工具的总结 (1)
- 获取Java环境的相关信息 (1)
- Java读取二进制文件 (1)
- JAVA 十六进制与字符串的转换 (1)
- struts2 iterator 遍历 map嵌套 (1)
- Spring2文件上传实例 (1)
- JavaScript (1)
- SVN (1)
- JSTL (1)
- ForEach (1)
- Java (1)
- edtFtpJ (3)
- Flash (1)
- 多线程 (1)
- 设计模式 (4)
- jdk (1)
- web.xml (1)
- 算法 (1)
- Spring_MVC (1)
- spring (2)
- Applet (1)
最新评论
-
ybb_dgv:
没有sql
OSworkFlow工作流请假流程实例 -
sunlu:
楼主你好!我运行你的例子时出现个问题使我难以继续!请指教 Un ...
OSworkFlow工作流请假流程实例 -
lotusibm:
文章不错的
Java 角色权限设计 -
dushanggaolou:
解释的很详细。
foreach中循环次数操作 -
Jeenry119:
用的是Netbeans
耗材管理系统
以前搞一个SSH框架配置很麻烦,要不就是不合乎自己的要求,要不就是超简单的哪种,根本不容易扩展,一下是我对SSH做的一个一个比较大些的扩展,如果哪里写的不当,还请各位多多指教。
第一步,按照附件压缩文件中名为SSH2框架组合基本步骤与配置的文档,一步一步的把基本框架搭建起来
第二步,配置web.xml:
以下是web.xml的配置信息:
第三步: 配置数据库链接文件proxool.xml
第四步,配置Sping的配置文件applicationContext.xml
第五步,配置其他副配置文件application-context.xml,applicationContext-mvc.xml,applicationContext-config.xml
applicationContext-config.xml:
application-context.xml:
第六步,配置struts.xml
第七步,配置日志文件log4j.properties
第八步,配置缓存ehcache.xml
第九步,在com.helen.web.servlet下面添加一个ProxoolDestroyServlet.java文件
第十步,把附件中所有的jar包导进去
由于jar文件包太大,所以如果有谁想要的话,给我发邮件:Jeenry@126.com
现在运行以下您的服务,看看如何了,希望能跟各位做个朋友!
第一步,按照附件压缩文件中名为SSH2框架组合基本步骤与配置的文档,一步一步的把基本框架搭建起来
第二步,配置web.xml:
以下是web.xml的配置信息:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- proxool 配置 start --> <servlet> <servlet-name>servletConfigurator</servlet-name> <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class> <init-param> <param-name>xmlFile</param-name> <param-value>WEB-INF/conf/proxool.xml</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <!-- proxool 配置 end --> <!-- spring 配置 start--> <!-- 用servlet代替listener来启动spring,因为用了连接池proxool, 而proxool加载时,要比spring更提前,如果用监听器则没法控制其顺序,所以才采用servlet --> <servlet> <servlet-name>contextLoaderServlet</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/conf/applicationContext.xml</param-value> </context-param> <!-- spring 配置 end --> <!-- proxool 销毁问题 start--> <servlet> <servlet-name>proxoolDestroyServlet</servlet-name> <servlet-class>com.helen.web.servlet.ProxoolDestroyServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <!-- proxool 销毁问题 end--> <!-- 过滤器 编码方式(采用spring) start --> <filter> <filter-name>encodingFilter</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>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 过滤器 编码方式 end --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
第三步: 配置数据库链接文件proxool.xml
<?xml version="1.0" encoding="gbk"?> <!-- the proxool configuration can be embedded within your own application's. Anything outside the "proxool" tag is ignored. --> <something-else-entirely> <proxool> <alias>proxool</alias> <!-- oracle 配置 --> <driver-url>jdbc:oracle:thin:@127.0.0.1:1521:ORCL</driver-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <!-- ms sql 配置 <driver-url>jdbc:sqlserver://127.0.0.1:1433;databaseName=jdp_template</driver-url> <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class> --> <!-- mysql 配置 --> <!-- <driver-url>jdbc:mysql://localhost:3306/jdp_template?useUnicode=true&characterEncoding=utf8</driver-url> <driver-class>com.mysql.jdbc.Driver</driver-class> --> <driver-properties> <property name="user" value="Helen"/> <property name="password" value="admin"/> </driver-properties> <!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒--> <house-keeping-sleep-time>90000</house-keeping-sleep-time> <!--没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受--> <maximum-new-connections>20</maximum-new-connections> <!--最大连接数(默认15个),超过了这个连接数,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 --> <maximum-connection-count>50</maximum-connection-count> <!--最小连接数(默认5个)--> <minimum-connection-count>10</minimum-connection-count> <!--最少保持的空闲连接数--> <prototype-count>5</prototype-count> <!-- 如果housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.确认一下你的服务器的带宽.然后定一个合适的值.默认是5分钟--> <maximum-active-time>300000</maximum-active-time> <!-- 最大连接生命周期 默认值:4小时 --> <maximum-connection-lifetime>14400000</maximum-connection-lifetime> <!--在使用之前测试--> <test-before-use>true</test-before-use> <!-- 如果发现了空闲的数据库连接.house keeper 将会用这个语句来测试.这个语句最好非常快的被执行 --> <!-- oracle 配置--> <house-keeping-test-sql>select sysdate from dual</house-keeping-test-sql> <!-- ms sql 配置/my sql配置 <house-keeping-test-sql>select 1</house-keeping-test-sql> --> </proxool> </something-else-entirely>
第四步,配置Sping的配置文件applicationContext.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config/> <!-- 使用annotation 自动注册bean,并保证@Required,@Autowired的属性被注入 --> <context:component-scan base-package="com.helen.domain" /> <import resource="applicationContext-mvc.xml"/> <import resource="application-context.xml"/> <import resource="applicationContext-config.xml"/> </beans>
第五步,配置其他副配置文件application-context.xml,applicationContext-mvc.xml,applicationContext-config.xml
applicationContext-config.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd "> <!-- 数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="url"> <!-- 格式为:proxool.数据源别名,要跟proxool.xml内节点alias一致 --> <value>proxool.proxool</value> </property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="hibernateProperties"> <props> <!-- hibernate方言 oracle--> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop> <!-- hibernate方言 mysql --> <!-- <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop> --> <!-- hibernate方言 ms sql2000或ms sql2005 --> <!-- <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> --> <!-- 显示sql语句 --> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</prop> <prop key="hibernate.connection.autocommit">true</prop> <!-- 指定Hibernate在何时释放JDBC连接 对于应用程序服务器的JTA数据源, 你应当使用after_statement, 这样在每次JDBC调用后,都会主动的释放连接. 对于非JTA的连接, 使用after_transaction在每个事务结束时释放连接是合理的. auto将为JTA和CMT事务策略选择after_statement, 为JDBC事务策略选择after_transaction. 取值 on_close | after_transaction | after_statement | auto --> <prop key="hibernate.connection.release_mode">auto</prop> <!-- 设置Hibernate的缓存接口类,这个类在Hibernate包中 --> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> <!-- ehcache配置文件路径 --> <prop key="hibernate.cache.provider_configuration_file_resource_path">ehcache.xml</prop> <!-- 二级缓存 --> <prop key="hibernate.cache.use_second_level_cache">true</prop> <!-- 使用查询缓存 --> <prop key="hibernate.cache.use_query_cache">true</prop> <prop key="hibernate.jdbc.batch_size">50</prop> <prop key="hibernate.jdbc.fetch_size">50</prop> <prop key="hibernate.current_session_context_class">thread</prop> </props> </property> <!-- 实体类之注解 --> <property name="packagesToScan"> <list> <value>com.helen.domain</value> </list> </property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 事务通知 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- 方法名以add*开头 --> <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" /> <!-- 方法名以delete*开头 --> <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception" /> <!-- 方法名以update*开头 --> <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" /> <!-- 方法名以get*开头 --> <tx:method name="get*" propagation="SUPPORTS" read-only="true" /> <!-- 其它方法 --> <tx:method name="*" propagation="SUPPORTS" read-only="true" /> </tx:attributes> </tx:advice> <aop:config> <!-- 定义一个切面 --> <aop:pointcut id="bizMethods" expression="execution(* com.jdp.pro.*.biz..*.*(..))" /> <!-- 织入 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="bizMethods" /> </aop:config> </beans>
application-context.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- <bean id="personService" class="com.helen.web.service.impl.PersonServiceImp" /> <bean id="loginAction" class="com.helen.web.action.LoginAction"> <property name="personService"> <ref bean="personService"/> </property> </bean> --> </beans>
第六步,配置struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法和freemarker 、velocity的输出 --> <constant name="struts.i18n.encoding" value="UTF-8"/> <!-- 该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。 如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。 --> <constant name="struts.action.extension" value="do"/> <!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 --> <constant name="struts.serve.static.browserCache" value="false"/> <!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 --> <constant name="struts.configuration.xml.reload" value="true"/> <!-- 开发模式下使用,这样可以打印出更详细的错误信息 --> <constant name="struts.devMode" value="true" /> <!-- 默认的视图主题 --> <constant name="struts.ui.theme" value="simple" /> <!--与spring集成时,指定由spring负责action对象的创建 --> <constant name="struts.objectFactory" value="spring" /> <!-- 该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为false。 --> <constant name="struts.enable.DynamicMethodInvocation" value="false"/> <package name="login" extends="struts-default"> </package> </struts>
第七步,配置日志文件log4j.properties
#set log levels# log4j.rootLogger=debug,ConsoleSet,DailyRollingFileSet,DailyRollingFileSet4Error #set Console # log4j.appender.ConsoleSet=org.apache.log4j.ConsoleAppender log4j.appender.ConsoleSet.layout=org.apache.log4j.PatternLayout log4j.appender.ConsoleSet.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] [%l] - %m%n #set writer log for file where levels in debug,warn,info # log4j.appender.DailyRollingFileSet = org.apache.log4j.DailyRollingFileAppender log4j.appender.DailyRollingFileSet.File=log/daily/log log4j.appender.DailyRollingFileSet.DatePattern='.'yyyy-MM-dd log4j.appender.DailyRollingFileSet.Append=true log4j.appender.DailyRollingFileSet.Threshold = info log4j.appender.DailyRollingFileSet.layout=org.apache.log4j.PatternLayout log4j.appender.DailyRollingFileSet.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] [%l] - %m%n #set writer log for file where levels is error log4j.appender.DailyRollingFileSet4Error=org.apache.log4j.DailyRollingFileAppender log4j.appender.DailyRollingFileSet4Error.File=log/error/log log4j.appender.DailyRollingFileSet4Error.Append = true log4j.appender.DailyRollingFileSet4Error.Threshold = ERROR log4j.appender.DailyRollingFileSet4Error.layout=org.apache.log4j.PatternLayout log4j.appender.DailyRollingFileSet4Error.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] [%l] - %m%n
第八步,配置缓存ehcache.xml
<?xml version="1.0" encoding="UTF-8"?> <ehcache> <diskStore path="java.io.tmpdir/Helen_SSH/" /> <!-- DefaultCache setting. --> <defaultCache maxElementsInMemory="10000" memoryStoreEvictionPolicy="LRU" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="300" overflowToDisk="false" diskPersistent="false" /> <!-- Special objects setting. --> <!-- Refresh ContentInfoCache every hour. --> <cache name="contentInfoCache" overflowToDisk="false" eternal="false" diskPersistent="false" timeToLiveSeconds="3600" timeToIdleSeconds="3600" maxElementsInMemory="10000" memoryStoreEvictionPolicy="LRU"/> </ehcache>
第九步,在com.helen.web.servlet下面添加一个ProxoolDestroyServlet.java文件
package com.helen.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.logicalcobwebs.proxool.ProxoolFacade; public class ProxoolDestroyServlet extends HttpServlet { /** * */ private static final long serialVersionUID = -576763880863730788L; /** * Destruction of the servlet. */ @Override public void destroy() { ProxoolFacade.shutdown(); super.destroy(); // Just puts "destroy" string in log // Put your code here } @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { super.doGet(request, response); } @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { super.doPost(request, response); } @Override public void init() throws ServletException { // Put your code here } }
第十步,把附件中所有的jar包导进去
由于jar文件包太大,所以如果有谁想要的话,给我发邮件:Jeenry@126.com
现在运行以下您的服务,看看如何了,希望能跟各位做个朋友!
- ssh三大框架的整合.rar (7.3 MB)
- 下载次数: 51
相关推荐
通过学习SSH三大框架的整合,开发者能够掌握企业级应用开发的基本技能,理解MVC架构的工作原理,掌握ORM工具的使用,以及如何利用Spring来管理整个应用的生命周期。这样的知识对于提升Java Web开发能力至关重要,也...
SSH三大框架,指的是Spring、Struts和...通过SSH框架的整合,开发者可以构建出松耦合、高复用的Java Web应用,大大提高开发效率和代码质量。在实际项目中,SSH整合的运用非常广泛,也是许多Java程序员必备的技能之一。
SSH框架整合的关键在于如何协调这三大框架的工作,使得它们能够协同工作。整合过程中通常会涉及以下步骤: 1. **配置Spring**:创建Spring的配置文件,定义Bean的实例化和依赖关系,包括数据库连接池、DAO(Data ...
SSH三大框架整合指的是Struts、Spring和Hibernate这三个开源框架的集成应用,它们是Java Web开发中的常用工具,分别负责表现层、业务层和数据层的管理。本资源提供了一个已经搭建好的环境,适合有一定基础的开发者...
SSH三大框架整合指的是Struts、Spring和Hibernate这三个Java开源框架的集成应用,它们分别是MVC设计模式的实现、依赖注入及事务管理的核心框架以及对象-关系映射的流行工具。以下将详细介绍如何在MyEclipse6.5环境中...
SSH三大框架整合是Java开发中常见的一种Web应用架构模式,主要由Struts2、Hibernate和Spring这三大开源框架组成。这种架构模式旨在提高开发效率,实现业务逻辑与表现层的分离,以及数据访问的便捷性。 **Struts2** ...
SSH框架整合后的优势: - 分离关注点:每个框架专注于自己的职责,Struts处理请求转发,Spring管理依赖,Hibernate处理数据库操作。 - 提高代码复用性:通过Spring的依赖注入,可以方便地重用和替换组件。 - 支持AOP...
北大青鸟作为知名的IT教育机构,提供的这个"租房系统更新SSH三大框架整合版"很可能是他们的一个教学项目或实例,旨在帮助学生理解和掌握如何在实际项目中运用这些技术。 首先,Spring框架是Java企业级应用的核心...
SSH三大框架整合图.框架模式是大智慧,用来对软件设计进行分工。
总之,这个项目为初学者提供了一个实践SSH框架整合的实例,通过它,你可以了解到如何将这三个强大的框架协同工作,实现一个完整的Web应用。随着你对每个框架理解的深入,可以尝试添加更多功能,如分页、缓存、国际化...
在SSH三大框架整合的过程中,Spring通常作为核心,负责管理和协调其他组件,如控制Struts的Action实例化和管理Hibernate的Session。Struts负责接收HTTP请求,转发到Spring管理的Action,然后Action调用Service层方法...
SSH三大框架整合CURD指的是将Spring、Struts2和Hibernate这三个流行开源框架集成在一起,用于构建Web应用程序,尤其是处理CRUD(Create、Read、Update、Delete)操作。这些框架分别负责应用的依赖注入、表现层管理和...
**SSH框架整合详解** SSH(Struts2、Spring、Hibernate)是Java开发中常见的三大开源框架,它们分别负责Web层、业务层和服务层的管理,实现了MVC(Model-View-Controller)设计模式,极大地提高了开发效率和代码的...