傅老师课堂:Java高级应用之Struts2+Spring2+Hibernate3大集成

开篇一笑:一对情侣,非常恩爱,但男友喜欢说脏话,一天女友提出要带男友回家吃个饭,见见家长,千叮万嘱让男友别说脏话,男友在家憋了一晚上没说一句脏话,天气寒冷,到走的时候女友家长要出来送他们,男友客气的说了一句:叔叔,别送了,你看阿姨冻那个逼样。

本片文章详细介绍了如何使用SSH搭建系统架构,同学们只要按照老师教的步骤,绝对能够融会贯通,一气呵成,犹如坐春风般的舒适感,有木有?!我看到下面有个别同学已经按耐不住一颗躁动的心了,那就不用废话了,随着老师的节奏躁动起来吧,你离架构师就差那么一点了。
环境:jdk-1_5_0_14、struts-2.1.6、spring-framework-2.5.5、hibernate-3.2、jstl -1.1.2
一、 Struts2
1、 包:
xwork-2.1.2.jar
freemarker-2.3.13.jar
struts2-core-2.1.6.jar
commons-logging-1.0.4.jar
commons-io-1.3.2.jar
commons-fileupload-1.2.1.jar
ognl-2.6.11.jar
struts2-spring-plugin-2.1.6.jar
说明:Struts2官方提供的插件struts2-spring-plugin-2.1.6.jar,直接与spring进行整合,只需要在配置文件Struts.properties设置:struts.objectFactory=spring,这样,就将struts2的对象管理交给了spring2的IOC容器。
2、  配置web.xml文件
任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才会被应用加载。
通常,所有的MVC框架都需要Web应用加载一个核心控制器,对于Struts 2框架而言,需要加载FilterDispatcher,只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载应用的Struts 2框架。
因为Struts 2将核心控制器设计成Filter,而不是一个普通Servlet。故为了让Web应用加载FilterDispacher,只需要在web.xml文件中配置FilterDispatcher即可。
配置FilterDispatcher的代码片段如下:

strutsorg.apache.struts2.dispatcher.FilterDispatcheractionPackagesorg.apache.struts2.showcase.personconfigProviderslee.MyConfigurationProvider

正如上面看到的,当配置Struts 2的FilterDispatcher类时,可以指定一系列的初始化参数,为该Filter配置初始化参数时,其中有3个初始化参数有特殊意义:
config:该参数的值是一个以英文逗号(,)隔开的字符串,每个字符串都是一个XML配置文件的位置。Struts 2框架将自动加载该属性指定的系列配置文件。
actionPackages:该参数的值也是一个以英文逗号(,)隔开的字符串,每个字符串都是一个包空间,Struts 2框架将扫描这些包空间下的Action类。
configProviders:如果用户需要实现自己的ConfigurationProvider类,用户可以提供一个或多个实现了ConfigurationProvider接口的类,然后将这些类的类名设置成该属性的值,多个类名之间以英文逗号(,)隔开。
除此之外,还可在此处配置Struts 2常量,每个元素配置一个Struts 2常量,其中子元素指定了常量name,而子元素指定了常量value。
提示   关于Struts 2常量的讲解,请参阅本书的4.1.2节。
在web.xml文件中配置了该Filter,还需要配置该Filter拦截的URL。通常,我们让该Filter拦截所有的用户请求,因此使用通配符来配置该Filter拦截的URL。
下面是配置该Filter拦截URL的配置片段:

struts/* 

配置了Struts 2的核心FilterDispatcher后,基本完成了Struts 2在web.xml文件中的配置。
如果Web应用使用了Servlet 2.3以前的规范,因为Web应用不会自动加载Struts 2框架的标签文件,因此必须在web.xml文件中配置加载Struts 2标签库。
配置加载Struts 2标签库的配置片段如下:


/s                    /WEB-INF/struts-tags.tld
  

在上面配置片段中,指定了Struts 2标签库配置文件物理位置:/WEB-INF/struts- tags.tld,因此我们必须手动复制Struts 2的标签库定义文件,将该文件放置在Web应用的WEB-INF路径下。
如果Web应用使用Servlet 2.4以上的规范,则无需在web.xml文件中配置标签库定义,因为Servlet 2.4规范会自动加载标签库定义文件。
提示   Struts 2的标签库定义文件包含在struts2-core-2.0.6.jar文件里,在struts2-core-2.0.6.jar文件的META-INF路径下,包含了一个struts-tag.tld文件,这个文件就是Struts 2的标签库定义文件,Servlet 2.4规范会自动加载该标签库文件。
对于Servlet 2.4以上的规范,Web应用自动加载该标签库定义文件。加载struts-tag.tld标签库定义文件时,该文件的开始部分包含如下代码片段:

    2.2.31.2s/struts-tags

3、 建立struts.xml和struts.properties
Struts.xml配置文件详解:


/error.jsp/talk.jsphttp://www.sina.com

Struts.properties配置文件详解:
struts.action.extension
用URL扩展名来确定是否这个请求是被用作Struts action,其实也就是设置 action的后缀,例如login.do的'do'字。
struts.configuration
org.apache.struts2.config.Configuration接口名
struts.configuration.files
struts自动加载的一个配置文件列表
struts.configuration.xml.reload
是否加载xml配置(true,false)
struts.continuations.package
含有actions的完整连续的package名称
struts.custom.i18n.resources
加载附加的国际化属性文件(不包含.properties后缀)
struts.custom.properties
加载附加的配置文件的位置
struts.devMode
是否为struts开发模式
struts.dispatcher.parametersWorkaround
(某些版本的weblogic专用)是否使用一个servlet请求参数工作区(PARAMETERSWORKAROUND)
struts.enable.DynamicMethodInvocation
允许动态方法调用
struts.freemarker.manager.classname
org.apache.struts2.views.freemarker.FreemarkerManager接口名
struts.i18n.encoding
国际化信息内码
struts.i18n.reload
是否国际化信息自动加载
struts.locale
默认的国际化地区信息
struts.mapper.class
org.apache.struts2.dispatcher.mapper.ActionMapper接口
struts.multipart.maxSize
multipart请求信息的最大尺寸(文件上传用)
struts.multipart.parser
专为multipart请求信息使用的org.apache.struts2.dispatcher.multipart.MultiPartRequest解析器接口(文件上传用)
struts.multipart.saveDir
设置存储上传文件的目录夹
struts.objectFactory
com.opensymphony.xwork2.ObjectFactory接口(spring)
struts.objectFactory.spring.autoWire
是否自动绑定Spring
struts.objectFactory.spring.useClassCache
是否spring应该使用自身的cache
struts.objectTypeDeterminer
com.opensymphony.xwork2.util.ObjectTypeDeterminer接口
struts.serve.static.browserCache
是否struts过滤器中提供的静态内容应该被浏览器缓存在头部属性中
struts.serve.static
是否struts过滤器应该提供静态内容
struts.tag.altSyntax
是否可以用替代的语法替代tags
struts.ui.templateDir
UI templates的目录夹
struts.ui.theme
默认的UI template主题
struts.url.http.port
设置http端口
struts.url.https.port
设置https端口
struts.url.includeParams
在url中产生 默认的includeParams
struts.velocity.configfile
velocity配置文件路径
struts.velocity.contexts
velocity的context列表
struts.velocity.manager.classname
org.apache.struts2.views.velocity.VelocityManager接口名
struts.velocity.toolboxlocation
velocity工具盒的位置
struts.xslt.nocache
是否XSLT模版应该被缓存

例子:

struts.devMode=false
struts.enable.DynamicMethodInvocation=true
struts.i18n.reload=true
struts.ui.theme=simplestruts.locale=zh_CN
struts.i18n.encoding=UTF-8
struts.objectFactory=spring
struts.objectFactory.spring.autoWire=namestruts.serve.static.browserCache=falsestruts.url.includeParams=none


二、Spring2
http://www.springframework.org/download
1、 包:
spring-beans.jar
spring-context.jar
spring-core.jar
spring-web.jar
2、 配置web.xml文件

webAppRootKeywebApp.root    org.springframework.web.context.ContextLoaderListenercontextConfigLocationclasspath*:/spring/applicationContext-*.xml

3、 建立applicationContext.xml


classpath:jdbc.propertiesclasspath:hibernate.properties${jdbc.driverClassName}${jdbc.url}${jdbc.username}${jdbc.password}105505100falseclasspath:/com/au/demo/dto${hibernate.show_sql}${hibernate.format_sql}${hibernate.dialect}${hibernate.cache.use_query_cache}${hibernate.cache.provider_class}${hibernate.cache.query_cache_factory}${hibernate.query.factory_class}updatePROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIRED,readOnly*ServicetransactionInterceptorhibernateInterceptor


三、 Hibernate3
1、包
antlr.jar
cglib.jar
asm.jar
asm-attrs.jars
commons-collections.jar
hibernate3.jar
jta.jar
dom4j.jar
log4j.jar
2、在src下建立hibernate.properties

hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://127.0.0.1:3306/library
hibernate.connection.username=root
hibernate.connection.password=
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialecthibernate.show_sql=true
hibernate.format_sql=true
hibernate.cache.use_query_cache=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.cache.provider_class=org.hibernate.connection.C3P0ConnectionProvider
hibernate.cache.query_cache_factory=org.hibernate.cache.StandardQueryCacheFactory
hibernate.query.factory_class=org.hibernate.hql.classic.ClassicQueryTranslatorFactory
hibernate.sequence=SEQU_TOWER4Jhibernate.default_schema=TEST
hibernate.default_catalog
hibernate.generate_statistics
hibernate.use_sql_comments=true
hibernate.jdbc.fetch_size
hibernate.jdbc.batch_size=30
hibernate.jdbc.use_streams_for_binary
hibernate.connection.release_mode
hibernate.cache.use_structured_entries
hibernate.query.substitutions


四、Log4j
1、在src下建立log4j.properties

log4j.rootLogger=INFO, stdout, logfilelog4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%nlog4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${firstssh.root}/WEB-INF/logs/firstssh.log
log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=3
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
# OpenSymphony Stuff
log4j.logger.com.opensymphony=INFO
log4j.logger.org.apache.struts2=INFO
# Spring Stuff
log4j.logger.org.springframework=INFO
# Hibernate Stuff
log4j.logger.org.hiberante=INFO

2、配置web.xml文件


org.springframework.web.util.Log4jConfigListener


log4jConfigLocationclasspath:log4j.properties


五、Jstl标签
http://www.apache.org/dist/jakarta/taglibs/standard/binaries/
1、包
jstl.jar
standard.jar
2、 配置web.xml文件


                            

http://java.sun.com/jsp/jstl/core
/WEB-INF/c.tld
            

http://java.sun.com/jsp/jstl/xml
/WEB-INF/x.tld
            

http://java.sun.com/jsp/jstl/fmt
/WEB-INF/fmt.tld
            

http://java.sun.com/jsp/jstl/sql
/WEB-INF/sql.tldhttp://java.sun.com/jsp/jstl/functions/WEB-INF/fn.tld

转载于:https://www.cnblogs.com/dyllove98/p/3215117.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部