《Java-Web程序设计教程-第5章-Struts-2框架入门新课件.ppt》由会员分享,可在线阅读,更多相关《Java-Web程序设计教程-第5章-Struts-2框架入门新课件.ppt(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章 Struts 2框架入门框架入门5.2 Struts 2概览5.3 Struts 2基础5.1 MVC框架5.4 值栈与OGNL表达式5.5 Struts 2的标签库2023/2/1015.1 MVC框架框架5.1.2 MVC设计模式5.1.3 Struts 2框架的MVC架构5.1.1 Model 1与Model 2返回2023/2/1025.1.1 Model 1与与Model 2(1)Model 1Model 1是在早期广泛使用的一个模型。在Model 1体系中,所有的HTTP请求都被直接发送到JSP文件中,JSP文件独自响应请求并将处理结果返回给用户(所有的数据存取是由与J
2、SP文件交互的Bean来实现的)。对于简单的应用开发而言,使用Model 1是一个不错的选择,但是它却不能满足复杂的大型应用程序的实现。这是因为在开发一个大型的应用程序时,使用Model 1可能会导致JSP页面内被嵌入大量的脚本片段或Java代码,特别是当需要处理的请求量很大时,情况更为严重。对于网页设计人员和维护人员来说,这简直就是灾难,因为项目的开发和管理势必会因此而变得越来越困难。2023/2/1035.1.1 Model 1与与Model 2(2)Model 2Model 2和Model 1有一些不同。在Model 2体系中,采用JSP与Servlet结合的方式来实现对用户请求的处理,
3、使用Servlet充当控制器,使用JSP生成视图界面。Servlet的任务是负责管理对请求进行处理,以及创建JSP页面需要使用的Bean和对象,同时根据用户的请求将相应的JSP页面响应给客户端。JSP页面则是负责检索原先由Servlet创建的对象或Bean,从Servlet中提取动态内容插入静态模板,它不负责处理业务逻辑。Model 2的优点就是它清晰地分离了表达和内容,明确了角色的定义,以及开发者与网页设计者的分工。返回2023/2/1045.1.2 MVC设计模式设计模式MVC组成VC英文为Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、Vie
4、w、Controller的方式进行分离,这样一个应用被分成3个层:模型层、视图层和控制层,从而可以使同一个应用程序使用不同的表现形式。原理 返回2023/2/1055.1.3 Struts 2框架的框架的MVC架构架构(1)Struts 2中的MVCMVC架构Struts 2框架是一个基于MVC架构的框架,它的MVC架构如下图所示。2023/2/1065.1.3 Struts 2框架的框架的MVC架构架构(2)架构模式前端控制器模式 Struts 2框架接收以“*.action”结束的请求,并对该请求进行处理。页面控制器模式页面将直接请求指定的模型(Action),主要通过在JSP页面中使用标
5、签来实现返回2023/2/1075.2 Struts 2概览概览5.2.2 Struts 2的简单应用5.2.1 Struts 2的工作流程返回2023/2/1085.2.1 Struts 2的工作流程的工作流程工作流程Struts 2框架作为一个表示层的框架,主要用于处理应用程序与客户端交互问题。Struts 2框架的基本工作流程如下图所示。返回2023/2/1095.2.2 Struts 2的简单应用的简单应用(1)使用Struts 2框架开发一个简单的Web应用程序(1)创建一个Web应用工程,工程的目录结构如下图所示。2023/2/10105.2.2 Struts 2的简单应用的简单应
6、用(2)(2)实现Action类public class HelloActionprivate 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;2023/2/10115.2.2
7、Struts 2的简单应用的简单应用(3)(3)配置Action类创建完Action类以后还需要将其在“struts.xml”文件中进行配置,它用于配置Action的实现类、逻辑视图和物理视图之间的映射关系/hello.jsp2023/2/10125.2.2 Struts 2的简单应用的简单应用(4)(4)视图页面的实现 问候程序2023/2/10135.2.2 Struts 2的简单应用的简单应用(5)(5)配置web.xml文件在“web.xml”文件中配置Struts 2的核心拦截器Struts2Filterorg.apache.struts2.dispatcher.FilterDisp
8、atcherStruts2Filter/*返回2023/2/10145.3 Struts 2基础基础5.3.2 结果与视图5.3.3 struts.xml的配置5.3.1 Action详解返回2023/2/10155.3.1 Action详解详解(1)在Struts 2应用程序中,Action负责具体的业务逻辑处理,它是整个应用的核心所在。Action可以以多种形式存在:普通的Java类实现Action接口继承ActionSupport1普通的Java类无参数的execute()方法:用于处理用户请求。私有属性及其属性的set、get方法:Action类中封装HTTP请求参数,因此私有属性的名
9、称应和HTTP请求参数的名称保持一致;程序通过属性的set、get方法来处理请求参数,所以必须提供属性的set、get方法。2023/2/10165.3.1 Action详解详解(2)2实现Action接口Struts 2提供了一个名为“com.opensymphony.xwork2.Action”的接口,开发人员在创建Action类时可实现该接口,3继承ActionSupport类Struts 2除了提供Action接口外,还提供了一个名为“com.opensymphony.xwork2.ActionSupport”的类,该类实现了Action接口、Validateable接口、Valida
10、tionAware接口、TextProvider接口和LocaleProvider接口并提供了用于处理输入校验、访问国际化资源包等不同的方法。2023/2/10175.3.1 Action详解详解(3)在Action中访问Servlet API通过ActionContextActionContext ctx=ActionContext.getContext();/获取一个ActionContext实例Map session=ctx.getSession();/获取SessionMap application=ctx.getApplication();/获取Application2023/2/1
11、0185.3.1 Action详解详解(4)通过实现*Aware()接口public class Test implements SessionAware private Map session;private User user;public void setSession(Map session)/获取Sessionthis.session=session;public String execute()throws Exception if(user!=null)session.put(user,user);return success;elsereturn error;返回2023/2/
12、10195.3.2 结果与视图结果与视图(1)在Struts 2应用程序中,所有的Action类在处理完成之后返回的都是一个字符串类型的结果,这个结果作为一个逻辑视图而存在。Struts 2框架正是通过这个字符串,在“struts.xml”配置文件中将逻辑视图与物理视图建立起映射关系,而这一实现是由元素来声明的。参数值2023/2/10205.3.2 结果与视图结果与视图(2)元素包含两个属性name和type,其中name属性指定了逻辑视图名称,type属性指定了结果类型。常用的类型如下表所示:2023/2/10215.3.2 结果与视图结果与视图(3)常用的结果类型:1请求转发(dispa
13、tcher)请求转发只能将请求转发至同一个Web应用。利用请求转发浏览器的址栏不会发生变化。利用请求转发调用者与被调用者之间共享相同的Request对象和Response对象,他们属于同一个访问的请求和响应。2重定向(redirect)重定向分为两种情况:一种是生成一个全新的请求,另一种是重定向到另一个Action。重定向不仅可以指定到一个Web应用,还能够指定到任何JSP资源。重定向的访问结束后,浏览器的地址栏中显示URL的变化。2023/2/10225.3.2 结果与视图结果与视图(4)重定向的调用者与被调用者使用各自的Request对象和Response对象,他们属于两个独立的访问请求和
14、响应过程。对于重定向结果的类型,可以在元素中设置两个参数:“location”和“parse”。location:指定重定向的地址。parse:指定在location参数中是否使用OGNL表达式,它的默认值是“true”。通过过该参数的使用,系统会对结果配置信息中的OGNL表达式进行解析、运算,并用运算结果替换掉原有OGNL表达式。重定向示例代码:/show.action?arg=$messagetrue2023/2/10235.3.2 结果与视图结果与视图(5)3Action链(chain)当一个Action执行完成后需要直接跳转到另一个Action,此时就要用到Action链。通过Acti
15、on链的使用,可以轻松实现两个Action之间的数据共享。在Struts 2中,Action链是通过一个叫做“chain”的拦截器实现的。返回2023/2/10245.3.3 struts.xml的配置的配置struts.xml文件是Struts 2应用中的一个核心配置文件,它是程序整个运行流程的依据,Struts 2正是根据这个文件所配置的信息才知道处理什么程序、什么时候处理、如何进行处理等。返回2023/2/10255.4 值栈与值栈与OGNL表达式表达式(1)值栈值栈中存储的对象主要包括以下4种类型:临时对象(Temporary Object):该对象是在程序执行过程中,由容器自动创建并
16、存储到值栈中的。临时对象的值并不固定,会随着应用不同而发生变化。当应用结束时,该对象会被清空。比如当在页面中利用Struts 2标签输出迭代的值时,这些值都将以临时对象的形式存放到值栈中。模型对象(Model Object):该对象仅在Action使用模型驱动方式传值的时候被用到。如果某个Action中应用了模型驱动(model-driven),当Action被请求时,“modeldriven”拦截器会自动从此Action中获得模型对象,并将所获得的对象放置在值栈中对应Action对象的上面。当JSP页面需要用到这些对象所携带数据时,也会到值栈去找对应模型对象,获取数值。Action对象(Ac
17、tion Object):当每个Action请求到来的时候,容器都会先创建一个此Action的对象并存入值栈,该对象携带所有与Action执行过程有关的信息。命名对象(Named Objects):主要包括Servlet作用范围内相关的对象信息,比如Request、Session、Application等。2023/2/10265.4 值栈与值栈与OGNL表达式表达式(2)值栈中对象的存储顺序如图所示OGNL表达式OGNL全称是Object-Graph Navigation Language,意思是图对象导航语言,它是表达式语言的一种。OGNL的功能非常强大,它通过简单一致的语法,可以任意存取
18、对象的属性或者调用对象的方法,并能够遍历整个对象的结构图,实现对象属性字段的类型转化.Struts 2中的很多地方都要用到OGNL表达式,比如Struts 2的标签、Struts 2的校验文件等。1使用OGNL访问JavaBean在OGNL中使用“.”对导航图进行遍历,例如“randfather.father.child”这种形式2023/2/10275.4 值栈与值栈与OGNL表达式表达式(3)2访问应用上下文OGNL通过“#”对应用上下文进行访问。3访问集合元素2023/2/10285.4 值栈与值栈与OGNL表达式表达式(4)对Map的访问:返回2023/2/10295.5 Struts
19、 2的标签库的标签库5.5.2 数据标签5.5.3 表单标签5.5.1 控制标签返回5.5.4 非表单UI标签2023/2/10305.5.1 控制标签控制标签控制标签主要用于控制输出流程以及访问值栈中的值。包括:if/elseif/else标签:用于完成分支控制。80成绩优秀60成绩及格成绩不及格iterator标签:用于迭代输出集合中的元素,包括List、Set和数组。返回2023/2/10315.5.2 数据标签数据标签(1)数据标签:用于对数据进行相关操作,例如将数据存入值栈或者从值栈中取出数据。包括:bean标签:用于创建一个JavaBean实例,在其标签体中可以用标签对JavaBe
20、an实例的参数赋值。狗的名字:狗的年龄:在bean标签外部通过id输出:2023/2/10325.5.2 数据标签数据标签(2)param标签:用于为其它标签添加参数。参数值property标签:用于输出一个属性值。2023/2/10335.5.2 数据标签数据标签(3)include标签:用于在指定页面中引入另一个JSP页面。i18n标签:用于指定国际化资源文件。输出汉语信息:输出英文信息:返回2023/2/10345.5.3 表单标签表单标签(1)表单标签主要用于生成表单元素。Struts 2不仅提供了与HTML表单标签作用相同的标签,还提供了可用于完成某些特定功能的表单标签。表单标签中通
21、用的参数2023/2/10355.5.3 表单标签表单标签(2)Struts 2中可生成HTML表单标签的标签2023/2/10365.5.3 表单标签表单标签(3)Struts 2中用于完成某些特定功能的表单标签:2023/2/10375.5.3 表单标签表单标签(4)返回2023/2/10385.5.4 非表单非表单UI标签标签非表单UI标签主要用于生成非表单性质的可视化元素。返回2023/2/1039在线教务辅导网:在线教务辅导网:http:/ 更多课程配套课件资源请访问在线教务辅导网更多课程配套课件资源请访问在线教务辅导网2023/2/10402023/2/10412023/2/10422023/2/10432023/2/10442023/2/1045馋死2023/2/10462023/2/10472023/2/10482023/2/10492023/2/10502023/2/10512023/2/10522023/2/10532023/2/10542023/2/10552023/2/10562023/2/10572023/2/1058P P T研 究 院PO W E R PO I N T A C A D E M Y2023/2/10592023/2/10602023/2/1061
限制150内