第章项目开发入门框架与模式.ppt

上传人:本田雅阁 文档编号:3478319 上传时间:2019-09-01 格式:PPT 页数:92 大小:4.80MB
返回 下载 相关 举报
第章项目开发入门框架与模式.ppt_第1页
第1页 / 共92页
第章项目开发入门框架与模式.ppt_第2页
第2页 / 共92页
第章项目开发入门框架与模式.ppt_第3页
第3页 / 共92页
第章项目开发入门框架与模式.ppt_第4页
第4页 / 共92页
第章项目开发入门框架与模式.ppt_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《第章项目开发入门框架与模式.ppt》由会员分享,可在线阅读,更多相关《第章项目开发入门框架与模式.ppt(92页珍藏版)》请在三一文库上搜索。

1、2.1 Struts 2让网页与控制分离 2.2 2.3 Hibernate把数据持久化 MVC框架开发模式 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 2.1.1 Struts 2

2、框架 1Model2模式 Model2模式的工作原理如图2.1所示,其工作流程是按如下5个步骤进行的 : Servlet接收浏览器发出的请求。 Servlet根据不同的请求调用相应的JavaBean。 JavaBean按自己的业务逻辑操作数据库。 Servlet将结果传递给JSP视图。 JSP将后台处理的结果呈现给浏览器。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 C

3、lient Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 2Servlet Filter技术 图 2.2 中显示了正常请求、加过滤器请求和加过滤器链请求的处理过程。 过滤器可以对Request对象和Response对象进行处理。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slid

4、es for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. (1)init(FilterConfig)。 这是过滤器的初始化方法,Servlet容器创建过滤器实例后将调用这个方法 。在这个方法中可以通过FilterConfig参数读取web.xml文件中过滤器的初始化参 数。 (2)doFilter(ServletRequest,ServletResponse,FilterChain)。 这个方法完成实际的过滤操作,当用户请求与过滤器

5、关联的URL时,Servlet 容器将先调用过滤器的doFilter方法,在返回响应之前也会调用此方法。 FilterChain参数用于访问过滤器链上的下一个过滤器。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 A

6、spose Pty Ltd. (3)destroy()。 Servlet容器在销毁过滤器实例前调用该方法,这个方法可以释放过滤器占用 的资源。 过滤器编写完成后,要在web.xml进行配置,格式如下: 过滤器名称 过滤器对应的类 参数名称 参数值 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2

7、011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 下面举例说明在web.xml中配置过滤器与URL关联的方法。 (1)与一个URL资源关联: 过滤器名 xxx.jsp (2)与一个URL目录下的所有资源关联: 过滤器名 /* (3)与一个Servlet关联: 过滤器名 Servlet名称 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides fo

8、r .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 3Struts 2工作机制 Struts 2的设计思想:用Servlet Filter技术将Servlet API隐藏于框架之内,一 个请求在Struts 2框架内被处理,大致分为以下几个步骤,如图2.3所示。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile

9、5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 1加载Struts 2包 登录http:/struts.apache.org/,下载Struts 2完整版,本书使用的是Struts 2.3.4.1。将下载的文件struts-2.3.4.1-all.zip解压缩,得到文件夹包含的目录结构 如图2.4所示 Evaluation only.Evaluation on

10、ly. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 开发Struts 2程序只需用到lib下的9个jar包,包括: (1)传统Struts 2的5个基本类库。 struts2-core-2.3.4.1.jar xwork-core-2.3.4.1.

11、jar ognl-3.0.5.jar commons-logging-1.1.1.jar freemarker-2.3.19.jar (2)附加的4个库。 commons-io-2.0.1.jar commons-lang3-3.1.jar javassist-3.11.0.GA.jar commons-fileupload-1.2.2.jar (3)数据库驱动。 mysql-connector-java-5.1.22-bin.jar Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client

12、Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 在项目目录树中,右击项目名,选择菜单【Build Path】【Configure Build Path】,出现如图2.5所示的窗口。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Pr

13、ofile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 2配置Struts 2 修改web.xml文件: struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* login.jsp Evaluation only.Evaluation only. Created with Aspo

14、se.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 3创建JavaBean 在项目src文件夹下建立包org.easybooks.bookstore.jdbc,在包里创建 MySQLConnBean类,其代码与“入门实践一”的程序完全一样。 4创建login.jsp 在项目WebRoot下

15、创建登录首页的JSP文件login.jsp,代码如下: 登录页面 用户登录 姓名: 密码: Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 5实现控制器Action 在项目src文件夹下

16、建立包org.easybooks.bookstore.action,在包里创建 LoginAction类,代码所示。 6配置Action 在编写好Action(控制器)的代码之后,还需要进行配置才能让Struts 2识 别这个Action,在src下创建文件struts.xml(注意文件位置和大小写),输入如 下的配置代码: /welcome.jsp /error.jsp Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Asp

17、ose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 7创建其余的JSP文件 在项目WebRoot下创建两个JSP文件。 (1)welcome.jsp的代码如下: 成功页面 ,您好!欢迎光临叮当书店。 (2)error.jsp的代码与“入门实践一”的相同,在此省略。 8部署运行 部署项目、启动Tomcat服务器,在浏览器中输入 http:/localhost:8080/jsp_struts2_jdbc/并回车,运

18、行效果与之前的程序完全相同 。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 1Struts 2:配置 Struts 2的配置可以分成单个单独的文件,如图2.6所示。 Evaluati

19、on only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. web.xml web.xml并不是Struts 2框架特有的文件,它作为部署描述文件,是所有Java Web应用程序都需要的核心配置文件。 struts

20、.properties文件 Struts 2提供了很多可配置的属性,通过这些属性的设置,可以改变框架的 行为,从而满足不同Web应用的需求。这些属性可以在struts.properties文件中 进行设置,struts.properties是标准的Java属性文件格式,“”号作为注释符号, 文件内容由键(key)-值(value)对组成。 struts.xml文件 struts.xml是Struts 2框架的核心配置文件,主要用于配置和管理开发人员编 写的action。struts.xml文件通常也放在Web应用程序的src目录下,该目录下的 struts.xml将被Struts 2框架自动加

21、载。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 此文件提供了一种更改框架默认行为方式的机制。在一般情况下,如果不是打 算让调试更加方便的话,不需要更改这个文件。 struts.pr

22、operties文件在WEB-INF/classes目录下存放。这个文件用来配置 Struts2系统的一些基本规约,所有在struts.properties中配置的内容都可以在 struts.xml中配置,或者web.xml中在struts2 filter中配置 struts.properties中的如下配置: struts.i18n.encoding=UTF-8 相当于struts.xml中的如下配置: 相当于web.xml中的如下配置: struts org.apache.struts2.dispatcher.FilterDispatcher struts.i18n.encoding tr

23、ue Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. struts.xml文件是一个XML文件,开头是XML的文档类型定义(DTD)。DTD 提供了XML文件中各元素应使用结构的信息,而

24、这些最终会被XML解析器或编 辑器使用。 /welcome.jsp /error.jsp Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. struts.xml文件中包含的是开发Actio

25、n时所需要修改的配置信息。 本章中所讨论的配置信息,都可以被其他方式所代替,比如注解 ,web.xml启动参数和可替换的URL映射方案。 必须要在struts.xml中进行配置的信息只有全局结果、异常处理和 自定义的拦截器堆栈。 功能1:负责配置业务控制器Action 功能2:定义Action的处理结果和视图之间的 映射关系 功能3:负责配置拦截器 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides f

26、or .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 参数值 物理视图地址 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 As

27、pose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. /hello.jsp 1如果没有为action指定class,默认是ActionSupport。 2如果没有为action指定method,默认执行action中的execute() 方法。 3如果没有指定result的name属性,默认值为success。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slide

28、s for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 下载并导入Struts2框架的相关jar包 开发Model层业务逻辑 开发视图文件 开发Action类 在struts.xml中配置Action类 在JSP中调用Action 在web.xml中配置启动Struts框架 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client

29、Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 2Struts 2:Action (1)Action的定义。 Struts 2中的Action只需要在一个普通的类中定义一个方法,如: public class XXXAction public String method() return “return Value“; Evaluation o

30、nly.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 例如,定义一个HelloAction,访问该Action的时候在控制台打印“你好”: public class HelloAction public String

31、 hello() System.out.println(“你好“); return null; 在struts.xml配置文件中,将刚才创建的Action注册到这里: Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 A

32、spose Pty Ltd. (2)通过Action获取请求参数。 以下是一个Action获取请求参数的例子。本示例用于演示用户登录的过程。 用户输入用户名和密码,如果分别为admin和admin,则显示登录成功的信息, 否则显示登录失败的信息。 login.jsp的代码如下: 用户名: 密码: LoginAction.java作为控制器,负责接收页面发送过来的用户名和密码,并通 过execute()方法调用业务方法,根据执行结果控制程序流程:如果登录成功, 则跳转到success.jsp,否则跳转到failure.jsp。 Evaluation only.Evaluation only. C

33、reated with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. LoginAction的配置: /success.jsp /failure.jsp Evaluation only.Evaluation only. Created with Aspose.Slides f

34、or .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. (3)ActionSupport。 ActionSupport类为Action提供了一些默认实现,主要包括: 预定义常量。 从资源文件中读取文本资源。 接收验证错误信息。 验证的默认实现。 下面是ActionSupport类所实现的接口: public cla

35、ss ActionSupport implements Action, Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty

36、 Ltd.Copyright 2004-2011 Aspose Pty Ltd. Action接口同样位于com.opensymphony.xwork2包,定义了一组标准的常量 和execute()方法,可提供给开发人员使用,如下所示: public interface Action public static final String SUCCESS = “success“; public static final String NONE = “none“; public static final String ERROR = “error“; public static final Str

37、ing INPUT = “input“; public static final String LOGIN = “login“; public String execute() throws Exception; Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Lt

38、d.Copyright 2004-2011 Aspose Pty Ltd. 拦截器与Action的关系 v 将一些功能放到拦截器,可以降低Action的复杂性,提高 重用性。 v 拦截器的典型使用: v 封装请求参数 v 文件上传 v 类型转换 v 异常处理 v Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyrigh

39、t 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 拦截器围绕着Action和Result的执行而执行,其工作方式如图: 从图中可以看到,在Action和Result执行之前,为Action配置的拦截器将首先 被执行,在Action和Result执行之后,拦截器将重新获得控制权,然后按照与 先前调用相反的顺序依次执行。在整个执行过程中,任何一个拦截器都可以 选择直接返回,从而终止余下的拦截器、Action和Result的执行。例如:当一 个未授权的用户访问受保护的资源时,执行身份验证的拦截器可以直接返回 。 Evalua

40、tion only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. Struts2内建了大量的拦截器,这些拦截器以name-class对的形式配置在 struts-default.xml文件中,其中name是拦截器的名

41、字,就是以后使用该拦截器 的唯一标识;class则指定了该拦截器的实现类,如果我们定义的package继承 了Struts2的struts-default包,则可以自由使用下面定义的拦截器,否则必须自 己定义这些拦截器。 大部分时候,开发者无需手动控制这些拦截器,因为struts-default.xml文件中 已经配置了这些拦截器,只要我们定义的包继承了系统的struts-default包,就 可以直接使用这些拦截器。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile

42、5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 拦截器名字说明 Alias Interceptoralias在不同请求之间将请求参数在不同名字间转换,请求内容不变 Chaining Interceptorchain让前一个Action的属性可以被后一个Action访问,现在和chain类 型的result()结合使用。 Checkbox Interceptor

43、checkbox添加了checkbox自动处理代码,将没有选中的checkbox的内容 设定为false,而html默认情况下不提交没有选中的checkbox。 Cookies Interceptorcookies使用配置的name,value来是指cookies Conversion Error Interceptor conversionError将错误从ActionContext中添加到Action的属性字段中。 Create Session Interceptor createSession自动的创建HttpSession,用来为需要使用到HttpSession的拦截 器服务。 Deb

44、ugging Interceptordebugging提供不同的调试用的页面来展现内部的数据状况。 Execute and Wait Interceptor execAndWait在后台执行Action,同时将用户带到一个中间的等待页面。 Exception Interceptorexception将异常定位到一个画面 File Upload InterceptorfileUpload提供文件上传功能 I18n Interceptori18n记录用户选择的locale Logger Interceptorlogger输出Action的名字 Message Store Interceptor s

45、tore存储或者访问实现ValidationAware接口的Action类出现的消息, 错误,字段错误等。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 拦截器名字说明 Model D

46、riven Interceptormodel-driven如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中。 Scoped Model Drivenscoped-model- driven 如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出 model调用Action的setModel方法将其放入Action内部。 Parameters Interceptor params 将请求中的参数设置到Action中去。 Prepare Interceptorprepare如果Acton实现了Prepar

47、able,则该拦截器调用Action类的prepare方法。 Scope Interceptorscope将Action状态存入session和application的简单方法。 Servlet Config InterceptorservletConfig提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问。 Static Parameters InterceptorstaticParams从struts.xml文件中将中的中的内容设置到对应的Action中。 Roles Interceptorroles确定用户是否具有JAAS指定的

48、Role,否则不予执行。 Timer Interceptortimer输出Action执行的时间 Token Interceptortoken通过Token来避免双击 Token Session InterceptortokenSession和Token Interceptor一样,不过双击的时候把请求的数据存储在Session中 Validation Interceptor validation 使用action-validation.xml文件中定义的内容校验提交的数据。 Workflow Interceptorworkflow调用Action的validate方法,一旦有错误返回,重新定

49、位到INPUT画面 Parameter Filter InterceptorN/A从参数列表中删除不必要的参数 Profiling Interceptorprofiling通过参数激活profile Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 数学与计算机工程学院 Java Web高级开发技术 IBM Software Group 在struts2中要编写拦截器类,必须实现com.opensymphony.xwork2.interceptor.Interceptor接口 ,该接口定义了如下的三个方法: void init(): 该方法在拦截器实例创建后、intercept()方法被调用之前调用,用于

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1