最全SSH配置详解

更新时间:2024-05-18 17:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

SSH配置详解

Struts配置 .................................................................. 3

一、struts.config.xml .................................................... 3

1、struts-config ..................................................... 3 2、action-Mappings ................................................... 3 2、1 action(struts 1.x) ............................................ 3 3、controller ........................................................ 4 4、data-sources ...................................................... 5 5、form-beans (struts 1.X) ........................................... 6 5.1、form-bean(struts 1.X) ........................................... 6 6、global-exceptions ................................................. 7 7、global-forwards ................................................... 7 8、message-resources ................................................. 8 9、plug-in ........................................................... 9 result(Struts 2 新) .................................................. 9 二、web.xml (包含所有必须的框架组件的web部署描述符) .................... 10

1、web-app .......................................................... 11 2、display-name ..................................................... 11 3、description ...................................................... 11 4、icon ............................................................. 11 5、distributable .................................................... 12 6、context-param .................................................... 12 7、filter ........................................................... 13 8、filter-mapping ................................................... 13 9、 listener ........................................................ 14 10、servlet ......................................................... 14 11、servlet-mapping ................................................. 15 12、session-config .................................................. 15 13、mime-mapping .................................................... 15 14、welcome-file-list ............................................... 16 15、error-page ...................................................... 16 16、jsp-config ...................................................... 17 17、jsp-property-group .............................................. 17 18、resource-ref .................................................... 18 三、struts.properties (配置struts2的框架属性) .......................... 19

Struts中两个子应用模块相互切换 ..................................... 23

Spring配置 ................................................................. 23

Beans................................................................... 25 Hibernate配置 .............................................................. 29

配置文件中映射元素详解 .................................................. 30

hibernate-mapping ................................................... 30

Hiebernate的基本配置 ................................................... 31 Hibernate映射类型 ...................................................... 34 附录A web.xml Deployment Descriptor Elements .............................. 37 附近B log4j.properties详解 ................................................ 60 附录C ehcache.xml配置 ..................................................... 67 附录D 配置degester rules .................................................. 68

Struts配置

一、struts.config.xml (配置包含result/view类型、action映射、拦截器等的Struts2

的主要配置文件)

1、struts-config

为struts配置文件的根元素.对应的类

为:org.apache.struts.config.ModuleConfig 类.

2、action-Mappings

元素:

元素包含零个或者多个元素.元素描述了从特定的请求路径到相应的Action类的映射

2、1 action(struts 1.x)

元素的path属性指定请求访问Action的路径.

type属性指定Action的完整类名,

name属性指定需要传递给Action的ActionForm Bean scope属性指定ActionForm Bean的存放范围. validate属性指定是否执行表单验证,

input属性指定当表单验证失败时的转发路径

元素还包含一个子元素,它定义了一个请求转发路径.

例子与详解:

type=“strutsEGL.RegisterAction” name=“registerForm” input=“/register.jsp” scope=“request”

< forward name=“failure”path=“/register.jsp”/>

每个<action>元素都包括下列属性中的某些属性或所有属性: path

将请求指定为非限定URL,不带文件扩展名(例如,“/register”)请求是根据<action>元素中的其它属性来处理的,并且是用户输入的结果或者是在

different<action>元素中标识的转发的结果。 type

指定在发出请求时调用其执行方法的操作类的全限定名。该类必须在类路径中。 注:不指定要实例化的类,可以通过使用forward属性来转发请求,该属性在“Struts贸易样本”中未使用,并且与后面描述的<forward>子元素不相同。 name

用于保存发送至HTML表单或接收自HTML表单的数据表单bean的名称。 input

指定相对URL(例如,“/register.do”或“/index.jsp”)必须包括后缀, 如果表单bean的验证方法指示发生了输入错误,则会调用URL;有关详细信息,参见下节的“验证”。 scope

指定将对表单 bean的引用存储在哪个作用域中。其值为“会话”(缺省值)或“请求”。 forward

Struts配置文件中的每个<action>元素还包括子元素<forward>,它指定从方法结果至后续调用的映射。每个<forward>子元素都包括下列属性 name

指定导致在运行时使用当前映射的字符串(例如,“success”),但是 只限于以下情况:在 type 中引用的操作类的执行方法使用完全相同 的字符串来配置返回至ActionServlet的 ActionForward对象。下面 的执行方法不是很重要,但是会导致使用“success”映射:

public ActionForward exectue( ActionMapping mapping, ActoinForm form,

HttpServletRequest request, HttpServletResponse response)

Throws IOException,ServletException {

ActionForward forward=new ActionForward(); Forward=mapping,findForward(“success”); return(forward); } path

指定非限定URL(例如,“/home.do” 或“/index.jsp”)必须包括文件扩展名,仅当

用当前映射时才会调用该URL,转发操作类是根据different元素中的属性来 理的,尤其是,在其path属性标识相同URL的元素中。

3、controller

元素用配置ActionServlet

bufferSize

指定上载文件的输入缓冲的大小。该属性为可选项,默认值为4096.

className

指定和元素对应的配置类。默认为org.apache.struts.config.ControllerConfig. contentType

指定响应结果的内容类型和字符编码。该属性为可选项,默认值为text/html。 果在Action和JSP网页中也设置了内容类型和字符编码,将会覆盖该设置。

locale

指定是否把Locale对象保存到当前用户的Session中。默认值为false. processorClass

指定负责处理请求的Java类的完整类名。默认值为org.apache.struts.action.RequestProcessor。如果把此项设置为自定义的类,那么应该保证该类扩展了org.apache.struts.action.RequestProcessor类。 tempDir

指定处理文件上传的临时工作目录。如果此项没有设置,将采用Servlet容器为Web应用分配

的临时工作目录。 nochache

如果为true,在响应结果中将加入特定的头参数 :Pragma, Cache-Control和Expires,防止页面被存储在客户浏览器的缓存中。默认值为false.

如果应用包含多个子应用,可以在每个字应用的Struts配置文件中配置元素。这样,尽管这些子应用共享同一个ActionServlet对象,但是他们可以使用不同的RequestProcessor类。

以下是元素的配置代码示例:

4、data-sources

元素用来配置应用所需要的数据源.它可以有一个或多个property子元素 示例:

需要注意的是,数据库驱动本身并不是由data-source标记中的className属性配置的,而是使用set-property标记定义的driverClass“属性/值”配对来配置的。要从action中获取数据源的访问,你可以使用下面代码片段:

Ds

servlet.getServletContext().getAttribute(“org.apache.struts.action.DATA_SOURCE/stocktrack”);

=

5、form-beans (struts 1.X)

―――(是所定义的表单Bean列表的简单打包。属性type已经过时了)

元素用来配置多个ActionForm Bean.元素包含0个或多个子元素.

5.1、form-bean(struts 1.X)

元素的主要属性说明

className:默认org.apache.struts.config.FormBeanConfig. name:指定该ActionForm Bean的唯一标识符 type:指定ActionForm类的完整类名.

每个form-bean标记定义一个单个的表单。属性className可以用来为这个表单定义configuration Bean,使用方式与在数据源中定义的那个属性类似。

name是用来访问表单的唯一标识,并且在config 文件后面与该表单相关联的action表象中也使用这一标记,重要的是,如果表单具备会话或者应用范围,你可以使用name属性调用getAttribute()方法来得到表单的句柄。

Type应该被设置为有效的ActionForm类。由它来为表单进行实例化。

form-property标记为表单的每个属性定义初值、名字以及类型(例如java.lang.String)。

示例:

注意:配置动态ActionForm Bean,还必须配置元素的

元素。

6、global-exceptions

元素:用于配置异常处理.可以包含0个或多个元素

属性key被用来制定产生错误消息的模板,消息是从消息资源包中查找出来的。当异常发生时,控制权被转移到由属性path指定的URL(相对Web模板的路径)。

属性scope告诉Struts是将ActionError(在处理异常时创建)保存在会话或者请求范围中。

最后属性type命名了被handler接受异常名。 示例:

在异常设置就绪之后,如果在处理过程中抛出SQL异常,默认的资源包(ApplicationResource.properties)将被用来查找database.error模板,然后使用这这个模板创建一个新的ActionError并将之放到request 的属性中,同时控制权将被传递到通用错误页面。

7、global-forwards

元素用来声明全局的转发关系,有零个或多个元素组成。元素用于把一个逻辑映射到特定的URL

属性 描述

className和元素对应的配置类,默认为org.apache.structs.action.ActionForWard

name 转发路径的逻辑名,此项时必须的

path 指定或者重定向的URI。此项时必须的,必须以”/”开头

redirect 此项是true,表示是执行重定向的操作,此项是false时,表示请求转发。

如果jsp1.jsp把请求转发给Action1,可以使用以下代码:

或者

如果Action1的execute()方法把请求转发给JSP2.jsp,可以使用一下代码:

return(mapping.findForward(“forward2”))

8、message-resources

元素用来配置Resource Bundle. Resource Bundle用来存放本地化消息

Structs标签

HTML标签

标签名 描述

base 包装HTML的base元素

button 包装HTML的 button类型的input元素 cancel 包装HTML cancel 按钮

checkbox 包装HTML checkbox 类型的输入域

errors 有条件地显示一些error消息,显示ActionErrors信息 file 包装HTML文件上传输入域 form 定义HTML form 元素 frame 包装HTML frame 元素 hidden 包装HTML hidden 输入域 html 包装 HTML中的 html 元素 image 包装 \类型的输入域 img 包装HTML的 img 元素

javascript 包装根据ValidatorPlugIn提供的校验规则所提供的javascript校验脚本

link 包装超链接

messages 有条件地显示一些提示信息,显示ActionMessages信息 multibox 包装多选输入框 option 包装一个选择输入框 options 包装一批选择输入框 optionsCollection 包装一批选择输入框集 password 包装密文输入框 radio 包装单选输入框

reset 包装“重置”功能的按钮 rewrite 包装一个URL

select 包装一个选择输入框 submit 包装一个提交按钮 text 包装一个文本输入框 textarea 包装一个备注输入框

9、plug-in

元素用于配置struts插件.

result(Struts 2 新)

在上面的struts.xml文件中,定义了两个Action。定义Action时,不仅定义了Action的实现类,而且的定义Action的处理结果时,指定了多个result,result元素指定execute方法返回值和视图资源之间的映射关系。对于如下配置片段:

回顾Struts 1的Result处理

Struts 1的Result页面处理是通过 RequestDispatcher.forward 方法执行,而RequestDispatcher的实例是servlet容器提供的。这样struts 1在result页面处理时,实质上是直接转交给了web容器。 页面转交给web容器处理后,web容器就可以通过已有的各种url处理机制处理,比如和velocity集成时,实质上是配置了servlet容器映射.vm URL到VelocityViewServlet进行处理。而vm页面的数据来源则在struts 1处理完成时已经放入了request、response、VelocityContext等对象里面。 Struts2的处理方式

前面一篇讲的xwork容器环境,可以知道Result其实是xwork提供的一种机制。Result在运行时是一个实例对象,被DefaultActionInvocation构造、调用,Result执行时可以直接把处理结果写入到应答数据流中。 Struts2内置了多种Result类型的实现,比如VelocityResult、PlainTextResult、XSLTResult等,当然也可以自己扩展,比如下面的代码增加了图形输出Result:

Data2ChartResult实现的是首先通过JFreeChart构造图形,然后写到应答数据流中。 对于JSon数据转换,可以使用 com.googlecode.jsonplugin.JSONResult 自动转换json数据。

Struts 2改变了Result处理方式,带来以下优点:

? 不依赖与web环境,Result接口要求提供的方法 execute(ActionInvocation

invocation) 没有和web api相关

? 相比struts 1依赖Dispatcher进行处理,Struts2的Result功能可以不依赖web

容器的功能

? Result执行后仍然在框架中,会通过inteceptor桟返回,可以通过inteceptor再

进行扩展处理

二、web.xml (包含所有必须的框架组件的web部署描述符)

――――――――――――――――参考附录――――――――――――――――――― web.xml定义:

.站台的名称和说明 .

MIME格式. 范例:

doc

application/vnd.ms-word

xls

application/vnd.ms-excel

ppt

application/vnd.ms-powerpoint

14、welcome-file-list

welcome-file-list包含一个子元素welcome-file.用来定义首页列单. 用来指定首页文件名称

welcome-file用来指定首页文件名称.我们可以用指定几个首页,而服务器会依照设定的顺序来找首页. 范例:

index.jsp index.htm

15、error-page

error-page元素包含三个子元素error-code,exception-type和location.将错误代码(Error Code)或异常(Exception)的种类对应 到web站台资源路径.

错误代码 HTTP Error code,例如: 404

Exception 一个完整名称的Java异常类型 /路径 在web站台内的相关资源路径

范例:

404 /error404.jsp

java.lang.Exception /except.jsp

16、jsp-config

jsp-config元素主要用来设定JSP的相关配置,包括两个子元素.其中元素在JSP 1.2时就已经存在了;而是JSP 2.0新增的元素.

taglib元素包含两个子元素taglib-uri和taglib-location.用来设定JSP网页用到的Tag Library路径.URI

taglib-uri定义TLD文件的URI,JSP网页的taglib指令可以经由这个URI存取到TLD文件. /WEB-INF/lib/xxx.tld TLD文件对应Web站台的存放位置.

17、jsp-property-group

jsp-property-group元素包含8个元素,分别为: Description 此设定的说明

Name 此设定的名称

URL 设定值所影响的范围,如:/CH2 或者/*.jsp

true|false 若为true,表示不支持EL语法.

true|false

若为true表示不支持<%scription%>语法.

encoding 设定JSP网页的编码

.jspf 设置JSP网页的抬头,扩展名为.jspf

.jspf 设置JSP网页的结尾,扩展名为.jspf 范例:

Taglib

/WEB-INF/tlds/MyTaglib.tld

Special property group for JSP Configuration JSP example.

JSPConfiguration /* true

GB2312 true ............

18、resource-ref

resource-ref元素包括五个子元素description,res-ref-name,res-type,res-auth,res-sharing-scope.利用JNDI取得站台可 利用资源.

说明 资源说明

资源名称 资源名称

资源种类 资源种类

Application|Container 资源由Application或Container来许可

Shareable|Unshareable 资源是否可以共享.默认值为 Shareable 范例:

JNDI JDBC DataSource of JSPBook jdbc/sample_db javax.sql.DataSoruce Container

三、struts.properties (配置struts2的框架属性)

struts.action.extension

The URL extension to use to determine if the request is meant for a Struts action

用URL扩展名来确定是否这个请求是被用作Struts action,其实也就是设置 action的后缀,例如login.do的'do'字。

struts.configuration

The org.apache.struts2.config.Configuration implementation class org.apache.struts2.config.Configuration接口名

struts.configuration.files

A list of configuration files automatically loaded by Struts struts自动加载的一个配置文件列表

struts.configuration.xml.reload

Whether to reload the XML configuration or not 是否加载xml配置(true,false)

struts.continuations.package

The package containing actions that use Rife continuations 含有actions的完整连续的package名称

struts.custom.i18n.resources

Location of additional localization properties files to load 加载附加的国际化属性文件(不包含.properties后缀)

struts.custom.properties

Location of additional configuration properties files to load 加载附加的配置文件的位置

struts.devMode

Whether Struts is in development mode or not 是否为struts开发模式

struts.dispatcher.parametersWorkaround

Whether to use a Servlet request parameter workaround necessary for some versions of WebLogic

某些版本的weblogic专用)是否使用一个servlet请求参数工作区(PARAMETERSWORKAROUND)

struts.enable.DynamicMethodInvocation

Allows one to disable dynamic method invocation from the URL 允许动态方法调用

struts.freemarker.manager.classname

The org.apache.struts2.views.freemarker.FreemarkerManager implementation class

org.apache.struts2.views.freemarker.FreemarkerManager接口名 struts.i18n.encoding

The encoding to use for localization messages 国际化信息内码

struts.i18n.reload

Whether the localization messages should automatically be reloaded 是否国际化信息自动加载

struts.locale

The default locale for the Struts application 默认的国际化地区信息

struts.mapper.class

The org.apache.struts2.dispatcher.mapper.ActionMapper implementation class

org.apache.struts2.dispatcher.mapper.ActionMapper接口 struts.multipart.maxSize

The maximize size of a multipart request (file upload) multipart请求信息的最大尺寸(文件上传用)

struts.multipart.parser

Theorg.apache.struts2.dispatcher.multipart.MultiPartRequest parser implementation for a multipart request (file upload) 专为multipart请求信息使用的

org.apache.struts2.dispatcher.multipart.MultiPartRequest解析器接口(文件上传用)

struts.multipart.saveDir

The directory to use for storing uploaded files 设置存储上传文件的目录夹

struts.objectFactory

The com.opensymphony.xwork2.ObjectFactory implementation class com.opensymphony.xwork2.ObjectFactory接口(spring) struts.objectFactory.spring.autoWire

Whether Spring should autoWire or not 是否自动绑定Spring

struts.objectFactory.spring.useClassCache

Whether Spring should use its class cache or not 是否spring应该使用自身的cache

struts.objectTypeDeterminer

The com.opensymphony.xwork2.util.ObjectTypeDeterminer implementation class

com.opensymphony.xwork2.util.ObjectTypeDeterminer接口

struts.serve.static.browserCache

If static content served by the Struts filter should set browser caching header properties or not

是否struts过滤器中提供的静态内容应该被浏览器缓存在头部属性中 struts.serve.static

Whether the Struts filter should serve static content or not 是否struts过滤器应该提供静态内容

struts.tag.altSyntax

Whether to use the alterative syntax for the tags or not 是否可以用替代的语法替代tags struts.ui.templateDir

The directory containing UI templates UI templates的目录夹

struts.ui.theme

The default UI template theme 默认的UI template主题

struts.url.http.port

The HTTP port used by Struts URLs 设置http端口

struts.url.https.port

The HTTPS port used by Struts URLs 设置https端口

struts.url.includeParams

The default includeParams method to generate Struts URLs 在url中产生 默认的includeParams

struts.velocity.configfile

The Velocity configuration file path velocity配置文件路径

struts.velocity.contexts

List of Velocity context names velocity的context列表

struts.velocity.manager.classname

org.apache.struts2.views.velocity.VelocityManager implementation class

org.apache.struts2.views.velocity.VelocityManager接口名 struts.velocity.toolboxlocation

The location of the Velocity toolbox velocity工具盒的位置 struts.xslt.nocache

Whether or not XSLT templates should not be cached 是否XSLT模版应该被缓存

Struts中两个子应用模块相互切换

A:在全局或局部的forward元素将其contextRelative属性设为True; B:使用内置的org.apache.struts.actions.SwitchAction类

Struts框架初始化过程

SERVLET容器在启动时,或用户首次请求ActionServlet时加载ActionServlet类.同时执行init()方法完成初始化流程.

struts内部调用顺序为

a:调用initInternal()方法,初始化struts框架内在的消息资源.

b:调用initnOther(),从web.xml文件中加载ActionServlet的初始化参数,如Config参数

c:调用initServlet()方法,从WEB.XML文件中加载ActionServlet的URL映射信息.还会注册WEB.XML和STRUTS配置文件所使用的DTD文件 d:initModuleConfig(),加载默认子应用

e:ininModuleMessageResources()加载并初始化子应用模块的消息资源.创建MessageResources对象.

f:ininModuleDataSources()加载并初始化默认子应用模块的数据源. g:initModulePlugins(),加载并初始化默认子应用模块的所有插件.

h:当默认子应用模块被成功地初始化后.如果还包括其他子应用模块,将重复流程(4)~~(7),分别对其他子应用模块进行初始化.

Spring配置

示例:

.xml代码

1. 2.

3.

8. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

9. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd\> 10.

11.

12.

13.

14. classpath:hibernate.cfg.xml 15. 16. 17.

18.

19. 20. 21. 22. 23. 24.

25.

26.

27.

28. 29.

37. 38. 39.

40. 41.

42.

43.

44. 45. 46.

每个标签的说明

Beans

Spring配置文件的根元素,包含一个或多个bean元素。 用于告诉Spring容器一个类以及它是如何配置的。 class属性:Java Bean 类名(全路经)。

id属性:Java Bean在BeanFactory中的唯一标识,代码中通过BeanFactory获取JavaBean实例时需以此作为索引名称。

name属性:同上,如果给bean增加别名,可以通过name属性指定一个或多个id。

singleton属性:指定此Java Bean是否采用单例(Singleton)模式,如果设为“true”,则在BeanFactory作用范围内,只维护此Java Bean的一个实例,代码通过BeanFactory获得此Java Bean实例的引用。反之,如果设为“false”,则通过BeanFactory获取此Java Bean实例时,BeanFactory每次都将创建一个新的实例返回。

abstract属性:设定ApplicationContext是否对bean进行预先的初始化。 parent属性:定义一个模板。

autowire属性:bean自动装配模式。可选5种模式。no:不使用自动装配。

Bean的引用必须通过ref元素定义。 byName:通过属性名字进行自动装配。

byType:如果BeanFactory中正好有一个同属性类型一样的bean,就自动装配这个属性。如果有多于一个这样的bean,就抛出一个致命异常,它指出你可能不能对那个bean使用byType的自动装配。如果没有匹配的bean,则什么都不会发生,属性不会被设置。如果这是你不想要的情况(什么都不发生),通过设置dependency-check=\属性值来指定在这种情况下应该抛出错误。

constructor:这个同byType类似,不过是应用于构造函数的参数。如果在BeanFactory中不是恰好有一个bean与构造函数参数相同类型,则一个致命的错误会产生。

autodetect: 通过对bean 检查类的内部来选择constructor或byType。如果找到一个缺省的构造函数,那么就会应用byType。 dependency-check属性:依赖检查模式。可选四种。

none :不进行依赖检查。没有指定值的bean属性仅仅是没有设值。 Simple:对基本类型和集合(除了合作者外,比如其他的bean,所有东西)进行依赖检查。

Object:对合作者进行依赖检查。

all :对合作者,基本类型和集合都进行依赖检查。 lazy-init属性:延迟加载。True 或False 。

init-method属性:初始化方法,此方法将在BeanFactory创建JavaBean实例之后,在向应用层返回引用之前执行。一般用于一些资源的初始化工作。 destroy-method属性:销毁方法。此方法将在BeanFactory销毁的时候执行,一般用于资源释放。

factory-bean属性:通过实例工厂方法创建bean,class属性必须为空,factory-bean属性必

须指定一个bean的名字,这个bean一定要在当前的bean工厂或者父bean工厂中,并包含工厂方法。而工厂方法本身通过factory-method属性设置。 factory-method属性:设定工厂类的工厂方法。

depends-on属性:Bean依赖关系。一般情况下无需设定。Spring会根据情况组织各个依赖关系的构建工作。只有某些特殊情况下,如JavaBean中的某些静态变量需要进行初始化(这是一种BadSmell,应该在设计上应该避免)。通过depends-on指定其依赖关系可保证在此Bean加载之前,首先对depends-on所指定的资源进行加载。 用于设置一个属性。 name属性:属性的名称。 指定bean的属性值。

指定了属性对BeanFactory中其他Bean的引用关系。 bean=\属性:指定了属性对BeanFactory中其他Bean的引用关系。

local属性:local=\属性: 指定了属性对BeanFactory中其他Bean的引用关系。(仅在本地(同一个)xml文件里寻找bean。

parent属性:指定了属性对BeanFactory中其他Bean模板的引用关系。 指定bean的属性类型为List的属性值。 指定bean的属性类型为List的属性值。 指定bean的属性类型为List的属性值。

指定bean的属性类型为Properties的属性值。

key属性:指定Properties的键

用来设置属性值为容器中其他bean的id 或name。 指定一个空值。

使用构造方法注入,指定构造方法的参数。 index属性:设置参数的序号。

ref属性:同ref type属性:参数类型。 value属性:参数的值。 lookup方法注入 bean属性:要注入的bean名

name属性:要注入的方法名称

用来把已存在的方法实现替换为其他的实现。

name属性:要替换的方法名

replacer属性:替换者类,实org.springframework.beans.factory.support.MethodReplacer接口)

方法返回的类型

bean定义参考

名称 class name scope 链接 Section 3.2.3.2, “实例化bean” Section 3.2.3.1, “命名bean” Section 3.4, “bean的作用域” Section 3.3.1, “注入依赖” Section 3.3.6, “自动装配(autowire)协作者” Section 3.3.7, “依赖检查” Section 3.3.5, “延迟初始化bean” checking constructor arguments Section 3.3.1, “注入依赖” properties autowiring mode dependency mode lazy-initialization mode initialization method Section 3.5.1, “Lifecycle接口” destruction method Section 3.5.1, “Lifecycle接口”

Bean里面包含的其他元素?

(引自OA协同管理系统的spring-applicationContext.xml)

readonly,其余方法按默认设置.

pointcut=\ advice-ref=\/>

pointcut=\ advice-ref=\/>

Hibernate配置

示例:Hibernate.cfg.xml配置文件:

配置文件中映射元素详解

对象关系的映射是用一个XML文档来说明的。映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等。下面从一个映射的例子开始讲解映射元素,映射文件的代码如下。 <?xml version=\> <!--

所有的XML映射文件都需要定义如下所示的DOCTYPE。 Hibernate会先在它的类路径(classptah)中搜索DTD文件。 -->

<!DOCTYPE hibernate-mapping PUBLIC

\

\://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\> <!--

hibernate-mapping有几个可选的属性:

schema属性指明了这个映射的表所在的schema名称。

default-cascade属性指定了默认的级联风格 可取值有 none、save、update。

auto-import属性默认让我们在查询语言中可以使用非全限定名的类名 可取值有 true、false。 package属性指定一个包前缀。 -->

hibernate-mapping

<hibernate-mapping schema=\auto-import=\>

<!--用class元素来定义一个持久化类 --> <class name=\>

<!-- id元素定义了属性到数据库表主键字段的映射。--> <id name=\>

<!-- 用来为该持久化类的实例生成唯一的标识 --> <generator class=\> </id>

<!-- discriminator识别器 是一种定义继承关系的映射方法-->

<discriminator column=\>

<!-- property元素为类声明了一个持久化的,JavaBean风格的属性--> <property name=\>

<column name=\> </property>

<property name=\not-null=%update=\>

<!--多对一映射关系--> <many-to-one name=\column=%update=\>

<!--设置关联关系-->

<set name=\> <key column=\> <!—一对多映射-->

<one-to-many class=\> </set> </class>

</hibernate-mapping> 组件应用的方法

组件有两种类型,即组件(component)和动态组件(dynamic-component)。在配置文件中,component元素为子对象的元素与父类对应表的字段建立起映射关系。然后组件可以声明它们自己的属性、组件或者集合。component元素的定义如下所示:

<component name=%upate=\>

<property ...../> <many-to-one .... /> ........ </component>

在这段代码中,name是指属性名,class是类的名字,insert指的是被映射的字段是否出现在SQL的INSERT语句中,upate指出被映射的字段是否出现在SQL的UPDATE语句中,access指出访问属性的策略。

Hiebernate的基本配置

Hibernate的数据库连接信息是从配置文件中加载的。Hibernate的配置文件有两种形式:一种是XML格式的文件,一种是properties属性文件。properties形式的配置文件默认文件名是hibernate.properties,一个properties形式的配置文件内容如下所示: #指定数据库使用的驱动类

hibernate.connection.driver_class = com.mysql.jdbc.Driver r

#指定数据库连接串

hibernate.connection.url = jdbc:mysql://localhost:3306/db

#指定数据库连接的用户名

hibernate.connection.username = user

#指定数据库连接的密码

hibernate.connection.password = password

#指定数据库使用的方言

hibernate.dialect = net.sf.hibernate.dialect.MySQLDialect

#指定是否打印SQL语句 hibernate.show_sql=true

在配置文件中包含了一系列属性的配置,Hibernate将根据这些属性来连接数据库。

在XML格式的配置文件中,除了基本的Hibernate配置信息,还可以指定具体的持久化类的映射文件,这可以避免将持久化类的配置文件硬编码在程序中。XML格式的配置文件的默认文件名为hibernate.cfg.xml,一个XML配置文件的示例如下所示: <?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

\

\>

<hibernate-configuration> <session-factory> <!--显示执行的SQL语句-->

<property name=\>true</property>

<!--连接字符串-->

<property name=\>jdbc:mysql://localhost:3306/STU</property>

<!--连接数据库的用户名-->

<property name=\>root</property>

<!--数据库用户密码-->

<property name=\>root</property>

<!--数据库驱动-->

<property name=\>com.mysql.jdbc.Driver</property>

<!--选择使用的方言-->

<property name=\>org.hibernate.dialect.MySQLDialect</property>

<!--映射文件 -->

<mapping resource=\>

<!--映射文件-->

<mapping resource=\>

</session-factory> </hibernate-configuration>

properties形式的配置文件和XML格式的配置文件可以同时使用。当同时使用两种类型的配置文件时,XML配置文件中的设置会覆盖properties配置文件的相同的属性。

对象标识符号

在关系数据库表中,主键(Primary Key)用来识别记录,并保证每条记录的唯一性。在Java语言中,通过比较两个变量所引用对象的内存地址是否相同,或者比较两个变量引用的对象值是否相同来判断两对象是否相等。Hibernate为了解决两者之间的不同,使用对象标识符(OID)来标识对象的唯一性。OID是关系数据库中主键在Java对象模型中的等价物。在运行时,Hibernate根据OID来维持Java对象和数据库表中记录的对应关系。如下代码所示,三次调用了Session的load()方法,分别加载OID为1或3的User对象。

Transaction tx = session.beginTransaction();

User user1 = (User)session.load(User.class,new Long(1)); User user2 = (User)session.load(User.class,new Long(1)); User user3 = (User)session.load(User.class,new Long(3)); System.out.println( user1 == user2 ); System.out.println( user1 == user3 );

应用程序在执行上述代码时,第一次加载OID为1的User对象,从数据库中查找ID为1的记录,然后创建相应的User实例,并把它保存在Session缓存中,最后将该实例的引用赋值给变量user1。第二次加载OID为1的对象时,直接把Session缓存中OID为1的实例的引用赋值给变量user2。因此,表达式user1==user2的结果为true。

标识的生成可以使用不同的策略,表1为Hibernate内置的标识生成策略。

表1 Hibernate标识生成策略

标识符生成器 描述 increment 适用于代理主键。由Hibernate自动以递增方式生成。 identity 适用于代理主键。由底层数据库生成标识符。 sequence 适用于代理主键。Hibernate根据底层数据库的序列生成标识符,这要求底层数据库支持序列。 hilo 适用于代理主键。Hibernate分局high/low算法生成标识符。 seqhilo 适用于代理主键。使用一个高/低位算法来高效的生成long,short或者int类型的标识符。 native 适用于代理主键。根据底层数据库对自动生成标识符的方式,自动选择identity、sequence或hilo。 uuid.hex 适用于代理主键。Hibernate采用128位的UUID算法生成标识符。 uuid.string 适用于代理主键。UUID被编码成一个16字符长的字符串。 assigned 适用于自然主键。由Java应用程序负责生成标识符。 foreign 适用于代理主键。使用另外一个相关联的对象的标识符。 Hibernate映射类型

在对象/关系映射文件中,Hibernate采用映射类型作为Java类型和SQL类型的桥梁。Hibernate映射类型分为2种:内置映射类型和自定义映射类型。

1、内置映射类型

Hibernate对所有的Java原生类型、常用的Java类型如String、Date等都定义了内置的映射类型。表2列出了Hibernate映射类型、对应的Java类型以及对应的标准SQL类型。

表2 Hibernate内置映射类型

Hibernate映射类型 Java类型 标准SQL类型 大小 integer/int java.lang.Integer/int INTEGER 4字节 long java.lang.Long/long BIGINT 8字节 short java.lang.Short/short SMALLINT 2字节 byte java.lang.Byte/byte TINYINT 1字节 float java.lang.Float/float FLOAT 4字节 double java.lang.Double/double DOUBLE 8字节 big_decimal java.math.BigDecimal NUMERIC character java.lang.Character/java.lang.String/char CHAR(1) 定长字符 string java.lang.String VARCHAR 变长字符 boolean/ yes_no/true_false java.lang.Boolean/Boolean BIT 布尔类型 date java.util.Date/java.sql.Date DATE 日期 timestamp java.util.Date/java.util.Timestamp TIMESTAMP 日期 calendar java.util.Calendar TIMESTAMP 日期 calendar_date java.util.Calendar DATE 日期 binary byte[] BLOB BLOB text java.lang.String TEXT CLOB serializable 实现java.io.Serializablej接口的任意Java类 BLOB BLOB clob java.sql.Clob CLOB CLOB blob java.sql.Blob BLOB BLOB

class java.lang.Class VARCHAR 定长字符 locale java.util.Locale VARCHAR 定长字符 timezone java.util.TimeZone VARCHAR 定长字符 currency java.util.Currency VARCHAR 定长字符

2、自定义映射类型

Hibernate提供了自定义映射类型接口,允许用户以编程的方式创建自定义的映射类型。用户自定义的映射类型需要实现net.sf.hibernate.UserType或net.sf.hibernate.CompositeUserType接口。具体的创建自定义映射类型的方法请参考hibernate官方文档或相关资料,这里不再详细介绍。

重要的知识点:

1. 如果有部门表,有员工表,员工表中有dep_id,则表部门类和员工类是one-to-many的关系: 可以使用: ( 在部门类department中使用下列) Department类:

/** 部门的所有员工 */

private Set staffs = new TreeSet();

xml的文件:

如果是list,需要用索引,具体其中的含义,不是很明白.待以后研究

2. 如果部门要有一个负责人,即部门表(tb_department)中有一个字段:staff_id. 那么表示部门和负责人之间的关系是many-to-one的关系 Department类: /** 部门负责人id */ private Staff staff;

xml 文件

3. 多对多关系,一般我们是做一个中间关联表.我用角色和权限做了个例子,

Right(id,name) Role(id,name) 中间表:tb_role_right(role_id,right_id) Right类中有一个Role的集合:private Set roles=new TreeSet();

Role类中也有一个Right的集合:private Set rights=new TreeSet(); 则两者是明显的多对多关系.使用many-to-many来实现; xml文件中

right.hbm.xml:如下:

role.hbm.xml文件中类似:

4. 几个值得注意的问题:

a)在xml?映射文件中,写类的名字时一定用类的全名:即:包+类名如:(hbp.sys.data.Staff),这个错误使我费了半天劲.:(

b)我在写实现基本DAO操作时,写了

session.delete(\

程序死活报错,我折腾了半天,跟踪到底,才恍然大悟,hibernate在解析sql语句的时候把 其中的right,当成了数据库中的右连接(\保留字\唉,这种关键字,不能随便用啊,:)

5. hibernate中HQL语言的查询根据你的sql的不同而返回不同的对象类型. 如果你使用session.find(String hql)

一般会返回一个List,如:from Staff staff;返回的是包含所有的员工对象的集合 如你的hql为:select count(*) from Staff staff;则返回的是一个Integer对象

如果你使用的hql为:select count(distinct staff.name),count(*) from Staff staff;则返回的是一个Object

即Object[],需要先把他转换成Object[],然后在取[0],[1].

这种设计我不知道hibernate是如何处理的,感觉既好也不好.好的是可以使用一个find获得任意查询

不好在于根据hql来处理返回结果,容易出错.

附录A web.xml Deployment Descriptor Elements

This following sections describe the deployment descriptor elements defined in the web.xml file. The root element for web.xml is . The following elements are defined within the element:

?

icon Element ? ? ? ?

display-name Element description Element distributable Element context-param Element ?

filter Element ?

filter-mapping Element ?

listener Element ?

servlet Element

?

servlet-mapping Element ?

session-config Element ?

mime-mapping Element ?

welcome-file-list Element ?

error-page Element ?

taglib Element ?

resource-ref Element

?

security-constraint Element

?

login-config Element

?

security-role Element ?

env-entry Element ?

ejb-ref Element

本文来源:https://www.bwwdw.com/article/as17.html

Top