Struts2框架入门.ppt_第1页
Struts2框架入门.ppt_第2页
Struts2框架入门.ppt_第3页
Struts2框架入门.ppt_第4页
Struts2框架入门.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第5章 Struts 2框架入门,5.2 Struts 2概览,5.3 Struts 2基础,5.1 MVC框架,5.4 值栈与OGNL表达式,5.5 Struts 2的标签库,5.1 MVC框架,5.1.2 MVC设计模式,5.1.3 Struts 2框架的MVC架构,5.1.1 Model 1与Model 2,返回,5.1.1 Model 1与Model 2(1),Model 1 Model 1是在早期广泛使用的一个模型。在Model 1体系中,所有的HTTP请求都被直接发送到JSP文件中,JSP文件独自响应请求并将处理结果返回给用户(所有的数据存取是由与JSP文件交互的Bean来实现的)。对于简单的应用开发而言,使用Model 1是一个不错的选择,但是它却不能满足复杂的大型应用程序的实现。这是因为在开发一个大型的应用程序时,使用Model 1可能会导致JSP页面内被嵌入大量的脚本片段或Java代码,特别是当需要处理的请求量很大时,情况更为严重。对于网页设计人员和维护人员来说,这简直就是灾难,因为项目的开发和管理势必会因此而变得越来越困难。,5.1.1 Model 1与Model 2(2),Model 2 Model 2和Model 1有一些不同。在Model 2体系中,采用JSP与Servlet结合的方式来实现对用户请求的处理,使用Servlet充当控制器,使用JSP生成视图界面。Servlet的任务是负责管理对请求进行处理,以及创建JSP页面需要使用的Bean和对象,同时根据用户的请求将相应的JSP页面响应给客户端。JSP页面则是负责检索原先由Servlet创建的对象或Bean,从Servlet中提取动态内容插入静态模板,它不负责处理业务逻辑。Model 2的优点就是它清晰地分离了表达和内容,明确了角色的定义,以及开发者与网页设计者的分工。,返回,5.1.2 MVC设计模式,MVC 组成 VC英文为Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成3个层:模型层、视图层和控制层,从而可以使同一个应用程序使用不同的表现形式。 原理,返回,5.1.3 Struts 2框架的MVC架构(1),Struts 2中的MVC MVC架构 Struts 2框架是一个基于MVC架构的框架,它的MVC架构如下图所示。,5.1.3 Struts 2框架的MVC架构(2),架构模式 前端控制器模式 Struts 2框架接收以“*.action”结束的请求,并对该请求进行处理。,页面控制器模式 页面将直接请求指定的模型(Action),主要通过在JSP页面中使用标签来实现,返回,5.2 Struts 2概览,5.2.2 Struts 2的简单应用,5.2.1 Struts 2的工作流程,返回,5.2.1 Struts 2的工作流程,工作流程 Struts 2框架作为一个表示层的框架,主要用于处理应用程序与客户端交互问题。Struts 2框架的基本工作流程如下图所示。,返回,5.2.2 Struts 2的简单应用(1),使用Struts 2框架开发一个简单的Web应用程序,(1)创建一个Web应用工程,工程的目录结构如下图所示。,5.2.2 Struts 2的简单应用(2),(2)实现Action类,public class HelloAction private String message; /用于封装HTTP请求参数的属性 public String getMessage() return message; public void setMessage(String message) this.message = message; public String execute() /处理用户请求 if (this.message.equals(“) | (this.message = null) message = “请输入问候语“; return “success“; ,5.2.2 Struts 2的简单应用(3),(3)配置Action类 创建完Action类以后还需要将其在“struts.xml”文件中进行配置,它用于配置Action的实现类、逻辑视图和物理视图之间的映射关系, /hello.jsp ,5.2.2 Struts 2的简单应用(4),(4)视图页面的实现, 问候程序 ,5.2.2 Struts 2的简单应用(5),(5)配置web.xml文件 在“web.xml”文件中配置Struts 2的核心拦截器, Struts2Filter org.apache.struts2.dispatcher.FilterDispatcher Struts2Filter /* ,返回,5.3 Struts 2基础,5.3.2 结果与视图,5.3.3 struts.xml的配置,5.3.1 Action详解,返回,5.3.1 Action详解(1),在Struts 2应用程序中,Action负责具体的业务逻辑处理,它是整个应用的核心所在。 Action可以以多种形式存在: 普通的Java类 实现Action接口 继承ActionSupport,1普通的Java类 无参数的execute()方法:用于处理用户请求。 私有属性及其属性的set、get方法:Action类中封装HTTP请求参数,因此私有属性的名称应和HTTP请求参数的名称保持一致;程序通过属性的set、get方法来处理请求参数,所以必须提供属性的set、get方法。,5.3.1 Action详解(2),2实现Action接口 Struts 2提供了一个名为“com.opensymphony.xwork2.Action”的接 口,开发人员在创建Action类时可实现该接口,,3继承ActionSupport类 Struts 2除了提供Action接口外,还提供了一个名为 “com.opensymphony.xwork2.ActionSupport”的类,该类实现了 Action接口、Validateable接口、ValidationAware接口、 TextProvider接口和LocaleProvider接口并提供了用于处理输入校 验、访问国际化资源包等不同的方法。,5.3.1 Action详解(3),在Action中访问Servlet API 通过ActionContext ActionContext ctx = ActionContext.getContext(); /获取一个ActionContext实例 Map session = ctx.getSession(); /获取Session Map application = ctx.getApplication(); /获取Application,5.3.1 Action详解(4),通过实现*Aware()接口 public class Test implements SessionAware private Map session; private User user; public void setSession(Map session) /获取Session this.session = session; public String execute() throws Exception if (user != null) session.put(“user“, user); return “success“; else return “error“; ,返回,5.3.2 结果与视图(1),在Struts 2应用程序中,所有的Action类在处理完成之后返回的都是一个字符串类型的结果,这个结果作为一个逻辑视图而存在。Struts 2框架正是通过这个字符串,在“struts.xml”配置文件中将逻辑视图与物理视图建立起映射关系,而这一实现是由元素来声明的。 参数值 ,5.3.2 结果与视图(2),元素包含两个属性name和type,其中name属性指定了逻辑视图名称,type属性指定了结果类型。常用的类型如下表所示:,5.3.2 结果与视图(3),常用的结果类型: 1请求转发(dispatcher) 请求转发只能将请求转发至同一个Web应用。 利用请求转发浏览器的址栏不会发生变化。 利用请求转发调用者与被调用者之间共享相同的Request对象和Response对象,他们属于同一个访问的请求和响应。 2重定向(redirect) 重定向分为两种情况:一种是生成一个全新的请求,另一种是重定向到另一个Action。 重定向不仅可以指定到一个Web应用,还能够指定到任何JSP资源。 重定向的访问结束后,浏览器的地址栏中显示URL的变化。,5.3.2 结果与视图(4),重定向的调用者与被调用者使用各自的Request对象和Response对象,他们属于两个独立的访问请求和响应过程。 对于重定向结果的类型,可以在元素中设置两个参数:“location”和“parse”。 location:指定重定向的地址。 parse:指定在location参数中是否使用OGNL表达式,它的默认值是“true”。通过过该参数的使用,系统会对结果配置信息中的OGNL表达式进行解析、运算,并用运算结果替换掉原有OGNL表达式。 重定向示例代码: /show.action?arg=“$message“ true ,5.3.2 结果与视图(5),3Action链(chain) 当一个Action执行完成后需要直接跳转到另一个Action,此时就要用到Action链。通过Action链的使用,可以轻松实现两个Action之间的数据共享。在Struts 2中,Action链是通过一个叫做“chain”的拦截器实现的。,返回,5.3.3 struts.xml的配置,struts.xml文件是Struts 2应用中的一个核心配置文件,它是程序整个运行流程的依据,Struts 2正是根据这个文件所配置的信息才知道处理什么程序、什么时候处理、如何进行处理等。,返回,5.4 值栈与OGNL表达式(1),值栈 值栈中存储的对象主要包括以下4种类型: 临时对象(Temporary Object):该对象是在程序执行过程中,由容器自动创建并存储到值栈中的。临时对象的值并不固定,会随着应用不同而发生变化。当应用结束时,该对象会被清空。比如当在页面中利用Struts 2标签输出迭代的值时,这些值都将以临时对象的形式存放到值栈中。 模型对象(Model Object):该对象仅在Action使用模型驱动方式传值的时候被用到。如果某个Action中应用了模型驱动(model-driven),当Action被请求时,“modeldriven”拦截器会自动从此Action中获得模型对象,并将所获得的对象放置在值栈中对应Action对象的上面。当JSP页面需要用到这些对象所携带数据时,也会到值栈去找对应模型对象,获取数值。 Action对象(Action Object):当每个Action请求到来的时候,容器都会先创建一个此Action的对象并存入值栈,该对象携带所有与Action执行过程有关的信息。 命名对象(Named Objects):主要包括Servlet作用范围内相关的对象信息,比如Request、Session、Application等。,5.4 值栈与OGNL表达式(2),值栈中对象的存储顺序如图所示,OGNL表达式 OGNL全称是Object-Graph Navigation Language, 意思是图对象导航语言,它是表达式语言的一种。 OGNL的功能非常强大,它通过简单一致的语法, 可以任意存取对象的属性或者调用对象的方法, 并能够遍历整个对象的结构图,实现对象属性字段的类型转化. Struts 2中的很多地方都要用到OGNL表达式,比如Struts 2的标签、 Struts 2的校验文件等。 1使用OGNL访问JavaBean 在OGNL中使用“.”对导航图进行遍历,例如“randfather.father.child” 这种形式,5.4 值栈与OGNL表达式(3),2访问应用上下文 OGNL通过“#”对应用上下文进行访问。,3访问集合元素,5.4 值栈与OGNL表达式(4),对Map的访问:,返回,5.5 Struts 2的标签库,5.5.2 数据标签,5.5.3 表单标签,5.5.1 控制标签,返回,5.5.4 非表单UI标签,5.5.1 控制标签,控制标签主要用于控制输出流程以及访问值栈中的值。包括: if/elseif/else标签:用于完成分支控制。 80“成绩优秀 60“成绩及格 成绩不及格 iterator标签:用于迭代输出集合中的元素,包括List、Set和数组。 ,返回,5.5.2 数据标签(1),数据标签:用于对数据进行相关操作,例如将数据存入值栈或者从值栈中取出数据。包括: bean标签:用于创建一个JavaBean实例,在其标签体中可以用标签对JavaBean实例的参数赋值。 狗的名字: 狗的年龄: 在bean标签外部通过id输出: ,5.5.2 数据标签(2),param标签:用于为其它标签添加参数。 参数值 property标签:用于输出一个属性值。 ,5.5.2 数据标签(3),inclu

温馨提示

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

评论

0/150

提交评论