最全SSH配置详解
更新时间:2024-05-18 17:01:01 阅读量: 综合文库 文档下载
- Ssh配置推荐度:
- 相关推荐
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
为: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
bufferSize
指定上载文件的输入缓冲的大小。该属性为可选项,默认值为4096.
className
指定和
指定响应结果的内容类型和字符编码。该属性为可选项,默认值为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配置文件中配置
以下是
4、data-sources 需要注意的是,数据库驱动本身并不是由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已经过时了) 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 属性key被用来制定产生错误消息的模板,消息是从消息资源包中查找出来的。当异常发生时,控制权被转移到由属性path指定的URL(相对Web模板的路径)。 属性scope告诉Struts是将ActionError(在处理异常时创建)保存在会话或者请求范围中。 最后属性type命名了被handler接受异常名。 示例: 在异常设置就绪之后,如果在处理过程中抛出SQL异常,默认的资源包(ApplicationResource.properties)将被用来查找database.error模板,然后使用这这个模板创建一个新的ActionError并将之放到request 的属性中,同时控制权将被传递到通用错误页面。 7、global-forwards 属性 描述 className和 name 转发路径的逻辑名,此项时必须的 path 指定或者重定向的URI。此项时必须的,必须以”/”开头 redirect 此项是true,表示是执行重定向的操作,此项是false时,表示请求转发。 如果jsp1.jsp把请求转发给Action1,可以使用以下代码: 或者 如果Action1的execute()方法把请求转发给JSP2.jsp,可以使用一下代码: return(mapping.findForward(“forward2”)) 8、message-resources 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 result(Struts 2 新) 回顾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格式. 范例: 14、welcome-file-list welcome-file-list包含一个子元素welcome-file.用来定义首页列单. welcome-file用来指定首页文件名称.我们可以用 15、error-page error-page元素包含三个子元素error-code,exception-type和location.将错误代码(Error Code)或异常(Exception)的种类对应 到web站台资源路径. 范例: 16、jsp-config jsp-config元素主要用来设定JSP的相关配置, taglib元素包含两个子元素taglib-uri和taglib-location.用来设定JSP网页用到的Tag Library路径. taglib-uri定义TLD文件的URI,JSP网页的taglib指令可以经由这个URI存取到TLD文件. 17、jsp-property-group jsp-property-group元素包含8个元素,分别为: 若为true表示不支持<%scription%>语法. Special property group for JSP Configuration JSP example. 18、resource-ref resource-ref元素包括五个子元素description,res-ref-name,res-type,res-auth,res-sharing-scope.利用JNDI取得站台可 利用资源. 三、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. 18. 19. 25. 26. 27. 28. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 每个标签的说明 Beans 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所指定的资源进行加载。 指定了属性对BeanFactory中其他Bean的引用关系。 bean=\属性:指定了属性对BeanFactory中其他Bean的引用关系。 local属性:local=\属性: 指定了属性对BeanFactory中其他Bean的引用关系。(仅在本地(同一个)xml文件里寻找bean。 parent属性:指定了属性对BeanFactory中其他Bean模板的引用关系。 key属性:指定Properties的键 ref属性:同ref type属性:参数类型。 value属性:参数的值。 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 ? 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 指定bean的属性类型为List的属性值。
正在阅读:
最全SSH配置详解05-18
数据库选择题原版11-23
C语言程序改错 - 答案11-30
信号与系统历年考题02-01
六年级语文期末试卷111101-22
100T汽车吊性能表11-12
幼儿园小班家长会班主任的发言稿精彩3篇03-23
莆田百科系列-方言篇08-11
爸爸你真幽默作文450字07-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 详解
- 最全
- 配置
- SSH
- 热身游戏及互动口令
- 自考《民间文学概论》资料
- 毕业论文规范 - 图文
- 营养风险筛查评分简表
- 中国防化部队全集
- 开关型稳压电源的研究 - 图文
- 小学数学教材整合方案2
- 八年级语文下册 第四单元《撰写演讲稿》教案 新人教版
- 老年疗养中心建设项目申请报告
- 黑白棋C语言课程设计
- 六小花样跳绳社团活动计划
- 阿司匹林的研发历史与作用机理概述
- 注重社会建设 着力保障和改善民生(青年干部培训班座谈会上的讲话
- 形式主义官僚主义十种表现自查报告
- 农村幼儿园“转岗教师”培训的通知
- 2011年社会治安综合治理工作总结
- 急救知识竞赛初赛题库(1)
- 三年级下册数学《年月日、24时计时法》专项练习题人教版(2018最
- 水土保持60
- 盛新凤 《跨越百年的美丽》教学实录及评析