Java ee 企业应用开发:第2章 为开发做好准备_第1页
Java ee 企业应用开发:第2章 为开发做好准备_第2页
Java ee 企业应用开发:第2章 为开发做好准备_第3页
Java ee 企业应用开发:第2章 为开发做好准备_第4页
Java ee 企业应用开发:第2章 为开发做好准备_第5页
已阅读5页,还剩142页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章 为开发做好准备2.1 MyEclipse开发环境的搭建2.2 开发第一个Java Project2.3 开发第一个Web Project2.4 开发第一个Struts2程序2.5 开发第一个Hibernate程序2.6 开发第一个Spring程序2.7 开发Struts 2、Spring集成程序2.8 开发Hibernate、 Spring集成程序2.9 开发Struts 2、Hibernate、Spring集成程序2.1 MYECLIPSE开发环境的搭建1. 配置JREJRE是Java的运行环境,JDK是Java的开发环境。因此,编写Java程序的时候需要JDK,而运行Java程序的

2、时候需要JRE。在JDK里面已经包含了JRE,因此也可以正常运行Java程序。在MyEclipse中内嵌了Java编译器。在这里指定自己安装的JDK。打开MyEclipse。选择菜单WindowPreferences,出现如图2-1所示对话框。图2-1 MyEclipse配置2.1 MYECLIPSE开发环境的搭建2配置MyEclipse与Tomcat集成启动MyEclipse,选择菜单WindowsPreferences命令,显示MyEclipse配置对话框,单击左边目录树中的“MyEclipseApplication ServersTomcatTomcat 6.x”选项,在右面激活Tomc

3、at 6.x,设置Tomcat的路径,如图2-2所示。图2-2 MyEclipse中的服务器配置TOMCAT与websphere、weblogic、Jboss的联系与区别2.1 MYECLIPSE开发环境的搭建图2-3 配置Tomcat2.1 MYECLIPSE开发环境的搭建在MyEclipse的工具栏点击“startstop/restart MyEclipse Server”按钮,选择Tomcat 6.xStart,如图2-4所示。从MyEclipse工具栏启动Tomcat图2-4 启动Tomcat2.1 MYECLIPSE开发环境的搭建在控制台会出现启动Tomcat的信息。打开浏览器,输入

4、http:/localhost:8080/,如果配置成功,则出现Tomcat首页,如图2-5所示。图2-5 Tomcat首页2.2 开发第一个JAVA PROJECT2.2.1 开发步骤这里,将开发第一个Java Project。运行结果为在控制台打印“Hello World”,如图2-6所示:图2-6 程序运行结果2.2.1 开发步骤项目完成后的目录树如图2-7所示。图2-7 项目目录树开发的主要步骤如下:步骤1: 创建Java Project步骤2: 创建包步骤3: 创建类步骤4: 运行具体过程如下: 步骤1 创建Java Project选择菜单“FileNewJava Project”,

5、创建一个Java Project,出现如图2-8所示对话框,为新建的Java Project输入名称:MyProject,其它选项保持默认,选择“Finish”。2.2.1 开发步骤输入项目名称图2-8 创建一个Java Project2.2.1 开发步骤此时,MyEclipse生成了一个名为MyEclipse的工程,如图2-9所示。图2-9 MyProject工程JRE System Library存放的是环境运行需要的类库。src是一个源代码文件夹(source folder),它与一般的文件夹(folder)不同之处在于src用来存放Java源代码。只要把Java源代码放入src中,My

6、Eclipse会自动编译src中的源代码。而folder一般都放一些不需要编译的东西,比如Jar包或者其它文件。自己写的代码都需要放入src文件夹。2.2.1 开发步骤步骤2 创建包右击src文件夹,选择NewPackage,如图2-10,输入包名com.apex.demo,选择“Finish”。将看到如图2-7所示的一个包。输入包名称选择源代码文件夹图2-10 输入包名2.2.1 开发步骤 步骤3 创建类选中src,右击src,出现菜单,选择NewClass,出现如图2-11所示对话框。类所在包输入类名图2-11 New Java Class2.2.1 开发步骤选择“Finish”,文件保存

7、时,会自动编译。MyClass.java代码如下:package com.apex.demo;public class MyClass public static void main(String args) System.out.println(Hello World); 步骤4 运行在Package Explorer中选中MyClass.java,右键Run AsJava Application, 运行结果如图2-12所示。图2-12 运行结果2.2.2 知识点:包、目录和JAR文件包(package)是Java中一个独特而非常重要的概念。它是一种Java文件的组织方式,一组特定的文件组织

8、在一个包中完成一个或者一组特定的功能。包也不仅仅是一种文件组织方式,同时也和Java的语言的规范关联起来。比如,protected限定的方法在同一个包内是可见的,但是别的包就无法访问到。每一个Java程序都要声明自己属于哪个包,在程序文件的开头加上package包名。包可以组织成一个体系,形成一个树状结构的体系,只要以“.”分割每个名字即可。例如:java.lang、java.util。包名可以任意制定,但通常以小写字母表示,并以com(公司)、org(组织)等开头,例如,com.sun.*。既然Java定义了包的概念,那么Java的源程序文件和编译产生的class文件都必须按照包的概念来组织

9、目录结构。即,当在程序中声明了所属的包的时候,程序文本本身必须存放在包对应的目录中。例如,2.2.1提到的MyClass.java属于包com.apex.demo,所以MyClass.java文件必须存放在目录comapexdemo下,相应的编译生成的MyClass.class文件也在目录comapexdemo下。开发一个Java应用程序将编写大量的源文件,这些文件虽然按照“包”的要求有序地组织在一起,但是一旦文件很多,在部署应用的时候依然显得很杂乱。因此,一种将一个或者一组包的class文件包装到一个文件中去的方法就产生了,就是JAR。JAR其实是将一组文件压缩打包成一个文件,文件的后缀为j

10、ar。2.3 开发第一个WEB PROJECT这里,将开发一个Web项目,当用户在浏览器中输入http:/localhost:8080/myWebProject/index.jsp时,服务器会返回给用户一句话:“Hello World”,如图2-13所示。图2-13 Web项目的运行效果2.3 开发第一个WEB PROJECT工程最后的目录树如图2-14所示图2-14 工程目录树主要的步骤如下:步骤1:创建Web Project步骤2:创建JSP步骤3:部署步骤4:运行浏览 步骤1 创建Web Project启动MyEclipse,选择菜单FileNewWeb Project,为Web Pro

11、ject起名为myWebProject,其它的可以选择默认,出现如图2-15所示对话框。2.3 开发第一个WEB PROJECT输入项目名称图2-15 创建Web Project2.3 开发第一个WEB PROJECT最简单Web项目只需要一个子目录WEB-INF。WEB-INF是一个很重要的目录,把Web项目的配置文件web.xml放在这个目录下。通常在其下创建lib和classes,在lib中放置应用依赖的Java库文件或者自己编写的JAR包。在classes中通常放自己所编写的编译后的java class文件。web.xml是一个Web项目的配置文件。 步骤2 创建JSP在MyEclip

12、se菜单栏中,选择FileNew File。输入新文件名“index.jsp”。由于MyEclipse会自动创建一个缺省的index.jsp文件,所以不需要再创建。双击打开这个文件,将其修改成以下内容。index.jsp代码如下: Hello World 2.3 开发第一个WEB PROJECT 步骤3:部署如图2-16所示,选择工具栏中的按钮“Deploy MyEclipse J2EE Project to Server”,将新建的Web项目部署到Tomcat中。部署Web Project图2-16 部署按钮2.3 开发第一个WEB PROJECT选择项目为myWebProject,选择Ad

13、d按钮,选择Tomcat 6.X作为我们的服务器。如图2-17所示,按OK。选择要部署的项目选择要部署到的服务器图2-17 部署Web Project2.3 开发第一个WEB PROJECT 步骤4: 运行浏览启动Tomcat 6.x。在浏览器中输入http:/localhost:8080/myWebProject/index.jsp,将看到如图2-18所示画面。图2-18 myWebProject运行结果2.4 开发第一个STRUTS2程序2.4.1 概述Apache Struts 2是一个为企业级应用打造的优秀的、可扩展的WEB框架。该框架旨在充分精简应用程序的开发周期,从而减少创建、发布

14、直到应用所花费的时间。在对Struts 2做详细介绍之前,这里先来感受一下,将开发一个Web Project。用户输入姓名和密码,如图2-19所示。如果输入和密码是“scott”和“tiger”,则进入欢迎页面;反之,进入失败页面。图2-19 用户登录界面2.4.1 概述项目最后的目录树如图2-20所示。图2-20 项目目录树2.4.1 概述 开发的步骤如下: 步骤1:下载Struts2框架 步骤2:创建Web Project 步骤3:加载Struts2包 步骤4:修改web.xml 步骤5:创建login.jsp 步骤6:实现控制器 步骤7:配置struts.xml 步骤8::创建登录成功失

15、败页面 步骤9:部署2.4.2 详细开发步骤步骤1 下载Struts 2框架MyEclipse 6没有对Struts 2的支持,所以需要自己下载Struts 2开发包。登录/。下载Struts 2的完整版,本书使用的是struts-2.0.11。将下载的Zip文件解压缩,它是一个典型的Web结构,该文件夹包含如下文件结构如图2-21所示。图2-21 Strust 2.0.11 文件结构2.4.2 详细开发步骤apps:包含基于Struts 2的示例应用,对学习者来说是非常有用的资料。docs:包含Struts 2的相关文档,如Struts 2的快速入门、Struts 2的文档、以及API文档等

16、内容。j4:包含了让Struts 2支持JDK 1.4的JAR文件。lib:包含Struts 2框架的核心类库,以及Struts 2的第三方插件类库。src:包含Struts 2框架的全部源代码。 步骤2: 打开MyEclipse,创建Web Project,命名项目的名称为struts2。步骤3: 加载Strut 2包将下载的Struts 2包解压后得到的lib文件夹下的Struts2-core-2.0.11.jar, xwork-2.0.1.jar和ognl-2.6.11.ar,common-logging-1.0.4.jar,freemarker-2.3.8.jar五个必须的jar包复制

17、到WEB-INF/lib路径下。大部分时候,使用Struts 2的Web应用并不需要利用到Struts 2的全部特性。在目录树中,选中刚刚创建的struts2工程,右击,选择Build PathConfigure Build Path,出现如图2-22所示的对话框。选择Add External JARs将下载的五个jar包添加到项目中。2.4.2 详细开发步骤添加项目外JAR包选择Java Build Path图2-22 添加Jar包2.4.2 详细开发步骤主要类描述如下: common-logging.jar:用于能够插入任何其它的日志系统。ognl.jar:OGNL:表达式语言。strut

18、s2-core.jar:Struts 2框架类库。xwork.jar:Xwork项目,Struts 2就是在此基础上构建的。freemarker.jar:所有的UI标记模板。步骤4: 修改web.xml打开WebRoot/WEB-INF/web.xml,修改成如下代码:2.4.2 详细开发步骤 struts2org.apache.struts2.dispatcher.FilterDispatcherstruts2/* 2.4.2 详细开发步骤步骤5 创建login.jsp从用户请求开始,在WebRoot下创建一个简单的表单提交页面login.jsp,方法是:右击webRoot选择newjsp,

19、在File Name中输入文件名“login.jsp”。login.jsp代码如下:登录页面 用户登录 姓名: 密码: 当表单提交给login.action时,Struts 2的FilterDispacher将自动起作用,将用户请求转发到对应的Struts 2 Action。2.4.2 详细开发步骤步骤6 实现控制器在src目录下创建一个新类LoginAction.java,代码如下: 上面的Action类是一个普通的Java类。该类定义了两个属性:username和password。类变量的命名必须与在login.jsp中使用的文本输入框的命名严格匹配。在Struts 2中,类变量总是在调用

20、execute()方法之前被设置(通过setUsername(),setPassword()方法),这意味着在execute()方法中可以使用这些类变量,因为在execute方法执行之前,它们已经被赋予了正确的值。步骤7 配置struts.xml在src下生成文件struts.xml(注意文件位置和大小写),里面代码如下: /error.jsp /welcome.jsp 2.4.2 详细开发步骤映射文件定义了name为login的Action。即当Action负责处理login.actionURI的客户端请求,该Action将调用自身的execute方法处理用户请求,如果execute方法返回

21、success字符串,请求被转发到/welcome.jsp页面,如果execute方法返回error字符,则请求被转发到/error.jsp页面。步骤8: 创建登录成功失败页面经过上面的步骤,这个Struts 2应用几乎可以运行了,但还需要为该Web应用增加两个JSP文件,两个JSP文件分别是error.jsp页面和welcome.jsp页面,将这两个jsp页面文件放在Web-Root下。welcome.jsp的代码如下:成功页面 已经成功登录! 代码中第二行标签库定义将前缀s和uri之间建立映射关系。前缀s指明了所有Struts 2标签在使用的时候以“s:”开头。2.4.2 详细开发步骤是一

22、个使用自定义property标签的JSP页面。这个property标签包含一个value属性值,通过设置value的值,标签可以从action中获得相应表达式的内容,这是通过在action中创建了一个名为getUsername()的方法得来的。将以上的代码保存在welcome.jsp文件中。error.jsp的代码如下:失败页面 登录失败! 步骤9 部署 将应用程序部署到服务器上。启动tomcat,运行程序,在浏览器输入:http:/localhost:8080/struts2/login.jsp。2.4.3 知识点:SERVLET、FILTER简介1ServletJava Web应用中最重要

23、的概念就是Servlet。Servlet是用Java编写的服务器端程序,是由服务器端调用和执行的Java类。Servlet运行在Servlet引擎管理的Java虚拟机中,被来自客户机的请求唤醒,能简单地处理客户端的请求。为了运行Servlet,首先需要一个JVM来提供对Java的基本支持,一般需要安装JRE(Java Runtime Environment)或JDK(Java Develop Kit, JRE是其中的一个子集)。其次,需要Servlet API的支持。一般的Servlet引擎都自带Servlet API。当容器通过web.xml文件得知配置了Servlet以后,通过配置所指定的

24、class路径构造Servlet实例。Servlet的周期:初始化服务消亡。初始化在构造实例的时候有容器调用init方法完成,初始化在Servlet的整个生命周期中只进行一次。服务在发生请求时进行,发生一次请求就进行一次服务。消亡通常发生在容器关闭的时候,消亡的时候容器会调用destroy方法,destroy方法在Servlet的整个生命周期中也只调用一次。当容器启动的时候会构造一个用来请求处理http请求的线程池,并在适当的时候构造出每一个Servlet实例。当有请求发生的时候,容器就从线程池中取出一个线程来处理这个请求,如果这个请求需要一个Servlet来处理,容器就会将请求传递给对应的S

25、ervlet来处理,并将处理的结果返回给处理线程,处理线程将结果返回给请求者,然后线程返回到线程池中等待别的请求。2.4.3 知识点:SERVLET、FILTER简介2Filter在项目中的web.xml中,有一个名词Filter,这是什么呢?它起了什么作用呢? struts2 org.apache.struts2.dispatcher.FilterDispatcherstruts2/* Filter过滤器是Java中常用的一项技术,过滤器是用户请求和处理程序之间的一层处理程序。这层程序可以对用户请求和处理程序响应的内容进行处理。利用过滤器的这个特点可以用于权限控制,编码转换等场合。2.4.3

26、 知识点:SERVLET、FILTER简介Servlet过滤器是在Java Serlvet规范中定义的,它能够对过滤器关联的URL请求和响应进行检查和修改。Servlet过滤器能够在Servlet被调用之前检查Request对象,修改Request Header和Request内容;在Servlet被调用之后检查Response对象,修改Response Header和Response内容。Servlet过滤器过滤的URL资源可以是Servlet、JSP、HTML文件,或者是整个路径下的任何资源。多个过滤器可以构成一个过滤器链,当请求过滤器关联的URL的时候,过滤器链上的过滤器链会挨个发生作用

27、。图2-23说明了过滤器的概念。请求响应过滤器1Web服务器浏览器浏览器过滤器2Web服务器Web服务器浏览器过滤器请求请求请求请求请求响应响应响应响应响应加过滤器链的请求加过滤器的请求正常的请求图2-23 过滤器处理请求的过程2.4.3 知识点:SERVLET、FILTER简介图中显示了正常请求,加过滤器请求和加过滤器链的请求处理过程。过滤器可以对Request对象和Response对象进行处理。所有的过滤器类都必须实现java.Servlet.Filter接口,这个接口含有3个过滤器类必须实现的方法:(1)init(FilterConfig)这是Servlet过滤器的初始化方法,Servl

28、et容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以通过FilterConfig参数读取web.xml文件中的Servlet过滤器的初始化参数。(2)doFilter(ServletRequest,ServletResponse,FilterChain)这个方法完成实际的过滤操作,当用户请求与过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法,在返回响应之前也会调用此方法。FilterChain参数用于访问过滤器链上的下一个过滤器。(3)destroy()Servlet容器在销毁过滤器实例前调用该方法,这个方法可以释放Servlet过滤器占用的资源。

29、过滤器编写完成后,要在web.xml进行配置,格式如下: 过滤器名称 过滤器对应的类 参数名称 参数值 2.4.3 知识点:SERVLET、FILTER简介过滤器必须和特定URL关联才能发挥作用,过滤器的关联方式有3中:与一个URL关联、与一个URL目录下的所有资源关联、与一个Servlet关联。下面,在web.xml中配置过滤器与URL关联。(1)与一个URL资源关联:过滤器名 xxx.jsp(2)与一个URL目录下的所有资源关联: 过滤器名 /*(3)与一个Servlet关联: 过滤器名 Servlet名称三者的应用环境有何不同?2.4.3 知识点:SERVLET、FILTER简介前面讲述

30、了过滤器的基本概念,那么过滤器有什么用处呢?常常利用过滤器完成以下功能:(1)权限控制,通过过滤器实现访问的控制,当用户访问某个连接或者某个目录的时候,可以利用过滤器判断用户是否有访问权限。(2)字符集处理,可以在过滤器中处理request和response的字符集,而不用在每个Servlet或者JSP中单独处理。(3)其它使用的一切场合,过滤器非常有用,我们可以利用它完成很多适合的工作,如计数器、数据加密、访问触发器、日志、用户使用分析等。2.4.4 知识点:STRUTS 2配置Struts 2的配置可以分成单个单独的文件,如图2-24所示。图2-24 框架元素的配置文件2.4.4 知识点:

31、STRUTS 2配置其中web.xml是Web部署描述符,包括所有必须的框架组件。struts.xml是Struts 2的主要配置文件。perties是Struts 2框架的属性配置。web.xmlweb.xml并不是Struts 2框架特有的文件。作为部署描述文件,web.xml是所有Java Web应用程序都需要的核心配置文件。Struts 2框架需要在web.xml文件中配置一个前端控制器FilterDispatcher,用于对Struts框架进行初始化,以及处理所有的请求。FilterDispatcher是一个servlet过滤器,它是整个Web应用的配置项,如下是一个FilterDi

32、spatcher的例子: struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*2.4.4 知识点:STRUTS 2配置2perties文件Struts 2提供了很多可配置的属性,通过这些属性的设置,可以改变框架的行为,从而满足不同Web应用的需求。这些属性可以在perties文件中进行设置,perties是标准的Java属性文件格式,“”号作为注释符号,文件内容由键(key)值(value)对组成。perties文件必须位于classpath下,通常放在Web应用程序的/WEB-INF/classes目录下。Stru

33、ts 2在perties文件(位于struts2-core-2.0.11.jar)中给出了所有的属性的列表,并对其中一些属性设置了默认值。如果开发人员创建了perties文件,那么在该文件中的属性设置会覆盖perties文件中的属性设置。在开发环境中,以下几个属性是可能会被修改的: struts.i18n.reload=true 激活重新载入国际化文件的功能 struts.devMode=true 激活开发模式,提供更全面的调试功能 struts.configuration.xml.reload=true 激活重新载入XML配置文件的功能,当文件被修改以后,就不需要你载入Servlet容器中的

34、整个Web应用了。 struts2.url.http.port=8080 配置服务器运行的端口3stuts.xml文件struts.xml是Struts 2框架的核心配置文件,主要用于配置和管理开发人员编写的action。struts.xml文件通常放在Web应用程序WEB-INF/classes目录下,在该目录下的struts.xml将被Struts 2框架自动加载。2.4.4 知识点:STRUTS 2配置struts.xml文件是一个XML文件,所以最开始的元素就是XML版本和编码信息。接下来则是XML的文档类型定义(DTD)。DTD提供了XML文件中各个元素应使用结构的信息,而这些最终会

35、被XML解析器或者编辑器使用。 标签,位于Struts2配置的最外层,其它标签都是包含在它里面的。 Package元素Struts 2中的包类似于Java中的包,提供了将action、result、result类型、拦截器和拦截器栈组织为一个逻辑单元的一种方式,从而简化了维护工作,提供了重用性。与Java中的包不同的是,Struts 2中的包可以扩展另外的包,从而“继承”原有包的所有定义,并可以添加自己包特有的配置,以及修改原有包的部分配置,从这一点上看,Struts 2中的包更像Java中的类。2.4.4 知识点:STRUTS 2配置package元素有一个必须的属性name,指定包的名字,

36、这个名字将作为引用该包的键。要注意的是,包的名字必须是唯一的,在一个struts.xml文件中不能出现两个同名的包。package元素的extends属性是可选的,允许一个包继承一个或多个先前定义的包中的配置。package元素的abstract属性是可选的,将其设置为true,可以把一个包定义为抽象的。抽象包不能有action定义,它只能作为“父”包,被其他的包所继承。下面是一个包定义的例子。 !定义了一个名为default的包,继承自struts-default.xml文件中定义的struts-default抽象包 viewSource.jsp !定义了一个名为skill的包,继承自先前定

37、义的default包 /empmanager/listSkills.jsp /package 2.4.4 知识点:STRUTS 2配置 Namespace属性package元素的 namespace属性可以将包中的action配置为不同的名称空间。当Struts 2接收到一个请求的时候,它会将请求URL分为namespace和action名字两部分,Struts 2会从struts.xml中查找namespace/action这个命名对,如果没有找到,Struts 2就会在默认的名称空间中查找相应的action名。默认的命名空间用空字符串” ”来表示,当在定义包中没有使用namespace属性

38、,那么就指定了默认的名称空间。下面是一个Struts 2文档中给出的名称空间的例子。!default包在默认的名称空间 greeting.jsp bar.jsp 2.4.4 知识点:STRUTS 2配置!mypackage1包在根命名空间 moo.jsp !mypackage2包在/barspace名称空间 bar2.jsp 如果请求/barspace/bar.action,框架将首先查找/barspace名称空间,如果找到了,则执行bar action;如果没有找到,则到默认的名称空间中继续查找。在本例中,/barspace名称中有名为bar的action,因此它会被执行。如果请求/bars

39、pace/foo.action,框架会在/barspace名称空间中查找foo这个action。如果找不到,框架会到默认命名空间中去查找。在本例子中,/barspace名称空间中没有foo这个action,因此默认空间中的/foo.action将被找到并执行。2.4.4 知识点:STRUTS 2配置如果请求/moo.action,框架会在根名称空间/中查找moo action,如果没有找到再到默认名称空间中查找。 Action元素Struts 2的核心功能是action,对于开发人员来说,使用Strtus2框架,主要的编码工作就是编写action类。action类通常都要实现com.opens

40、ymphony.xwork2.Action接口,并实现该接口中的execute()方法。当然,Struts 2并不要求所编写的action类一定要实现Action接口,也可以使用一个普通的Java类作为一个action,只要该类提供一个返回类型为String的无参的public方法。在实际开发中,action类很少直接实现Action接口,通常都是从com.opensymphony.xwork2.ActionSuppoort类继承。ActionSupport实现了Action接口和其他一些 可选的接口,提供了输入验证、错误信息存取,以及国际化的支持,选择从ActionSupport继承,可以简

41、化action的开发。开发好action后,就需要配置acton映射,以告诉Struts 2框架,针对某个URL的请求应该交由哪一个action进行处理。当一个请求匹配某个action的名字时,框架就使用这个映射来确定如何处理请求。如: /success.jsp /error.jsp2.4.4 知识点:STRUTS 2配置class属性是Action实现类的完整类名。在执行action时,默认调用的是execute()方法。如上面例子中请求login.action时,将调用org.apex.struts2.action.LoginAction实例的execute()方法。也可以通过action

42、元素的method属性来指定action调用的方法所指定的方法。在struts.xml文件中,可以为同一个action类配置不同的别名,并使用method属性,如: !请求/list,调用NewsAction的execute方法 /listNews.jsp !请求/create,调用NewsAction的create方法 /list.action !请求/edit,调用NewsAction的edit方法 /editNews.jsp !请求/delete,调用NewsAction的delete方法 /list.action 2.4.4 知识点:STRUTS 2配置 Result元素一个resul

43、t代表了一个可能的输出。当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出。在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可提供开发人员使用,如下所示:public interfact Action public static final String SUCCESS = ”success”; public static final Strng NONE = ”none” ; public static final String ERROR = ”error”; public st

44、atic final String INPUT = ”input”; public static final String LOGIN = ”login”;除了这些预定义的结果码以外,开发人员也可以定义其他的结果码来满足自身应用程序的需要。如下所示: /success.jsp /error.jsp 2.4.4 知识点:STRUTS 2工作机制一个请求在Struts 2框架被处理大致分为以下几个步骤,如图2-25所示:(1)客户端初始化一个指向Servlet容器(例如Tomcat)的请求;(2)这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextClean

45、Up的可选过滤器,这个过滤器对于Struts2和其它框架的集成很有帮助,例如:SiteMesh Plugin);(3)接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;(4)如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;(5)ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;(6)ActionProxy创建一个ActionInvocation的实例

46、;(7)ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用;(8)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts 2 框架中继承的标签,在这个过程中需要涉及到ActionMapper。2.4.4 知识点:STRUTS 2工作机制图2-25 Struts 2工作机制拦截器和过滤器的区别?2.4.4 知

47、识点:STRUTS 2工作机制在本节的例子中,当浏览器发送请求http:/localhost:8080/struts2/login.action请求的时候,在服务器上发生了如下事件:(1)服务器接收到login.action的请求,根据web.xml文件的配置,所有的请求都会被org.apache.struts2.dispatcher.FilterDispatcher过滤,FilterDispatcher.FilterDispatcher是Struts 2框架的入口点。(2) Struts2框架查找login.action对应的Java类,发现是LoginAction.java.之后,Stru

48、ts 2框架实例化了一个LoginAction类,并调用了这个类的execute方法。(3)execute方法设置了username和password的内容,并且返回SUCCESS。框架设定返回SUCCESS的话,找到相应的welcome.jsp,并通知服务器将welcome.jsp作为返回内容。如果返回ERROR的话,则返回error.jsp。(4) 在welcome.jsp被处理的过程中,标签的内容被替换为LoginAction的getUsername()方法调用的结果。(5) 根据welcome.jsp(或者error.jsp)内容生成的HTML内容被发回到请求的浏览器,图2-26显示了

49、处理流程。2.4.4 知识点:STRUTS 2工作机制图2-26 应用的处理流程2.5 开发第一个HIBERNATE程序2.5.1 概述Hibernate是对象/关系映射(ORM)的一个解决方案。简单地说就是将Java中对象及对象之间的关系映射至关系数据库中的表格及表格之间的关系。Hibernate提供了整个过程自动转换的方案。Hibernate是Java应用和关系数据库之间的关系,负责Java对象和关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。这里将演示如何将一个内存的User类型的对象user进行持久化处理,变为表格

50、user中的一条记录,如图2-27所示。图2-27 Hibernate持久化2.5.1 概述项目最后的目录树如图2-28所示。图2-28 项目目录树程序主要步骤:步骤1:在数据库MySQL中创建表user,用于记录用户的名称和密码步骤2:在MyEclipse中创建对MySQL的连接步骤3:在MyEclipse中创建Java Project,命名为hibernate步骤4:添加Hibernate支持包到项目中步骤5:生成数据库表对应的Java数据对象和映射文件步骤6:创建测试类。2.5.2 详细开发步骤步骤1 在数据库MySQL中创建表user,用于记录用户的名称和密码。CREATE DATAB

51、ASE test;use test;CREATE TABLE user( id int(10) not null auto_increment, username varchar(10) not null, password varchar(10) not null, primary key(id)ENGINE=InnoDB DEFAULT CHARSET=GBK;步骤2 在MyEclipse中创建对MySQL的连接启动MyEclipse,选择菜单WindowOpen PerspectiveMyEclipse Database Expoer,打开MyEclipse Database浏览器,右击

52、菜单,选择New,如图2-29所示,创建一个新的数据库连接图2-29 MyExlipse Database浏览器,创建一个新的连接2.5.2 详细开发步骤出现如图2-30所示的对话框,编辑数据库连接驱动。连接到本机3306端口的test数据库图2-30 编辑数据库连接驱动2.5.2 详细开发步骤编辑完成以后,在MyEclipse Database浏览器中,选中刚才创建的mysql数据库连接,选择Open connection.,打开名为mysql的数据连接,如图2-31所示。图2-31 打开数据库连接步骤3在MyEclipse中创建Java Project,命名为hibernate。步骤4 添

53、加Hibernate Capabilites到项目中。右击项目hibernate,选择MyEclipseAdd Hibernate Capabilites来启动向导,将出现Hibernate配置向导。首先出现图2-32所示对话框,选择Hibernate框架所需要的类库。2.5.2 详细开发步骤选择需要的类库集合, 这个示例中Core类库集足够了要添加到项目中的Hibernate版本支持功能,为了最大限度的使用MyEclipse Hibernate工具, 推荐Hibernate 3.1选中的类库将会添加到项目的构造路径中,但是相应的JAR文件不会复制到项目中.这些JAR文件将会在发布程序时复制。

54、选中的类库JAR文件将会被复制到项目并添加到构造路径中。图2-32 添加JAR包2.5.2 详细开发步骤选择“Next”按钮,进入如图2-33所示界面。用于创建Hibernate配置文件。定义配置文件的名称和路径图2-33 创建hibernate.cfg.xml2.5.2 详细开发步骤选择“Next”,进入如图2-34所示界面,指定Hibernate数据库连接细节。由于在前面已经配置一个名为mysql的数据库连接,所以这里只需要选择DB Driver为mysql即可。选择前面创建的名字为“mysql”的数据连接。图2-34 指定hibernate数据库连接2.5.2 详细开发步骤点击“Next

55、”,出现如图2-35所示界面。Hibernate中有一个与数据库打交道重要的类Session。而这个类是由工厂SessionFactory创建的。这个接口询问是否需要创建SessionFactory类,如果需要创建,还需要指定创建的位置和类名。图2-35 创建SessionFactory类来简化Hibernate会话处理2.5.2 详细开发步骤点击“Finish”。通过这些步骤,项目中增加了一些Hibernate JAR包和一个hibernate.cfg.xml配置文件,一个HibernateSessionFactory.java类。步骤5 生成数据库表对应的Java数据对象和映射文件首先在M

56、yEclispse下创建一个名为vo的包,这个包将用来存放与数据库表格对应的Java类User。从主菜单栏,选中WindowsOpen PerspectiveOtherMyEclipse Database Explorer,打开MyEclipse Database Explorer视图。打开前面创建的mysql数据连接,选中数据库表user,右击,选择菜单Hibernate Reverse Engineering,如图2-36所示,将启动Hibernate Reverse Engineering向导。图2-36 Hibernate反向工程菜单2.5.2 详细开发步骤将启动Hibernate R

57、everse Engineering向导,该向导用于完成从已有的数据库表生成对应的Java类和相关映像文件的配置的工作。首先,如图2-37所示,选择生成的Java类和映像文件所在的位置。图2-37 生成Hibernate映射文件和Java类2.5.2 详细开发步骤POJO(Plain Old Java Object,简单的Java对象),通常也称为VO(Value Obect,值对象)。使用POJO名称是为了避免和EJB混淆起来,其中有一些属性及getter setter方法的类。当然,如果有一个简单的运算属性也是可以的,但不允许有业务方法。例如,在程序中的User.java类就是一个POJO

58、,它由MyEclipse根据表user直接生成,代码如下: 点击“Next”,进入如图2-38所示界面,配置映像文件的细节。2.5.2 详细开发步骤决定是否在类型映射属性中使用Java或者Hibernate类型持久类实例的唯一主键生成器Java类图2-38 配置反向工程细节2.5.2 详细开发步骤点击“Next”,进入如图2-39所示界面,主要用于配置反向工程的细节。包含反向工程时当前数据库引用的表格以及其它引用到当前表的数据库表生成关联到当前表格的关联表的尚未反向工程过的代码,这些表在当前配置页面尚未被显示图2-39 配置反向工程细节2.5.2 详细开发步骤点击“Finish”。步骤6创建测

59、试类创建一个新的Java类,用于向数据库插入一条记录,并在控制台显示出来。Test.java代码如下:运行程序,结果如图2-40所示。图2-40 运行结果2.5.3 知识点:HIBERNATE:CONFIGURATION FILE配置文件在src目录下,生成了一个hibernate.config.xml文件,里面的主要内容如下: root jdbc:mysql:/localhost:3306/test org.hibernate.dialect.MySQLDialect mysql root com.mysql.jdbc.Driver 2.5.4 知识点:HIBERNATE主要接口在Hiber

60、nate中,Session负责完成对象持久化操作。Session实例的创建,大致需要以下三个步骤:(1)初始化Hibernate配置管理类Configuration。根据传入或者默认的配置文件(hibernate.cfg.xml)来创建并初始化一个Configuration类的实例:Configuration config=new Configuration().configure();(2)通过Configuration类实例创建Session的工厂类SessionFactory:SessionFactory sessionFactory=config.buildSessionFactory

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论