




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章Struts2框架入门,5.2Struts2概览,5.3Struts2基础,5.1MVC框架,5.4值栈与OGNL表达式,5.5Struts2的标签库,5.1MVC框架,5.1.2MVC设计模式,5.1.3Struts2框架的MVC架构,5.1.1Model1与Model2,返回,5.1.1Model1与Model2(1),Model1Model1是在早期广泛使用的一个模型。在Model1体系中,所有的HTTP请求都被直接发送到JSP文件中,JSP文件独自响应请求并将处理结果返回给用户(所有的数据存取是由与JSP文件交互的Bean来实现的)。对于简单的应用开发而言,使用Model1是一个不错的选择,但是它却不能满足复杂的大型应用程序的实现。这是因为在开发一个大型的应用程序时,使用Model1可能会导致JSP页面内被嵌入大量的脚本片段或Java代码,特别是当需要处理的请求量很大时,情况更为严重。对于网页设计人员和维护人员来说,这简直就是灾难,因为项目的开发和管理势必会因此而变得越来越困难。,5.1.1Model1与Model2(2),Model2Model2和Model1有一些不同。在Model2体系中,采用JSP与Servlet结合的方式来实现对用户请求的处理,使用Servlet充当控制器,使用JSP生成视图界面。Servlet的任务是负责管理对请求进行处理,以及创建JSP页面需要使用的Bean和对象,同时根据用户的请求将相应的JSP页面响应给客户端。JSP页面则是负责检索原先由Servlet创建的对象或Bean,从Servlet中提取动态内容插入静态模板,它不负责处理业务逻辑。Model2的优点就是它清晰地分离了表达和内容,明确了角色的定义,以及开发者与网页设计者的分工。,返回,5.1.2MVC设计模式,MVC组成VC英文为Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成3个层:模型层、视图层和控制层,从而可以使同一个应用程序使用不同的表现形式。原理,返回,5.1.3Struts2框架的MVC架构(1),Struts2中的MVCMVC架构Struts2框架是一个基于MVC架构的框架,它的MVC架构如下图所示。,5.1.3Struts2框架的MVC架构(2),架构模式前端控制器模式Struts2框架接收以“*.action”结束的请求,并对该请求进行处理。,页面控制器模式页面将直接请求指定的模型(Action),主要通过在JSP页面中使用标签来实现,返回,5.2Struts2概览,5.2.2Struts2的简单应用,5.2.1Struts2的工作流程,返回,5.2.1Struts2的工作流程,工作流程Struts2框架作为一个表示层的框架,主要用于处理应用程序与客户端交互问题。Struts2框架的基本工作流程如下图所示。,返回,5.2.2Struts2的简单应用(1),使用Struts2框架开发一个简单的Web应用程序,(1)创建一个Web应用工程,工程的目录结构如下图所示。,5.2.2Struts2的简单应用(2),(2)实现Action类,publicclassHelloActionprivateStringmessage;/用于封装HTTP请求参数的属性publicStringgetMessage()returnmessage;publicvoidsetMessage(Stringmessage)this.message=message;publicStringexecute()/处理用户请求if(this.message.equals()|(this.message=null)message=请输入问候语;returnsuccess;,5.2.2Struts2的简单应用(3),(3)配置Action类创建完Action类以后还需要将其在“struts.xml”文件中进行配置,它用于配置Action的实现类、逻辑视图和物理视图之间的映射关系,/hello.jsp,5.2.2Struts2的简单应用(4),(4)视图页面的实现,问候程序,5.2.2Struts2的简单应用(5),(5)配置web.xml文件在“web.xml”文件中配置Struts2的核心拦截器,Struts2Filterorg.apache.struts2.dispatcher.FilterDispatcherStruts2Filter/*,返回,5.3Struts2基础,5.3.2结果与视图,5.3.3struts.xml的配置,5.3.1Action详解,返回,5.3.1Action详解(1),在Struts2应用程序中,Action负责具体的业务逻辑处理,它是整个应用的核心所在。Action可以以多种形式存在:普通的Java类实现Action接口继承ActionSupport,1普通的Java类无参数的execute()方法:用于处理用户请求。私有属性及其属性的set、get方法:Action类中封装HTTP请求参数,因此私有属性的名称应和HTTP请求参数的名称保持一致;程序通过属性的set、get方法来处理请求参数,所以必须提供属性的set、get方法。,5.3.1Action详解(2),2实现Action接口Struts2提供了一个名为“com.opensymphony.xwork2.Action”的接口,开发人员在创建Action类时可实现该接口,,3继承ActionSupport类Struts2除了提供Action接口外,还提供了一个名为“com.opensymphony.xwork2.ActionSupport”的类,该类实现了Action接口、Validateable接口、ValidationAware接口、TextProvider接口和LocaleProvider接口并提供了用于处理输入校验、访问国际化资源包等不同的方法。,5.3.1Action详解(3),在Action中访问ServletAPI通过ActionContextActionContextctx=ActionContext.getContext();/获取一个ActionContext实例Mapsession=ctx.getSession();/获取SessionMapapplication=ctx.getApplication();/获取Application,5.3.1Action详解(4),通过实现*Aware()接口publicclassTestimplementsSessionAwareprivateMapsession;privateUseruser;publicvoidsetSession(Mapsession)/获取Sessionthis.session=session;publicStringexecute()throwsExceptionif(user!=null)session.put(user,user);returnsuccess;elsereturnerror;,返回,5.3.2结果与视图(1),在Struts2应用程序中,所有的Action类在处理完成之后返回的都是一个字符串类型的结果,这个结果作为一个逻辑视图而存在。Struts2框架正是通过这个字符串,在“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=$messagetrue,5.3.2结果与视图(5),3Action链(chain)当一个Action执行完成后需要直接跳转到另一个Action,此时就要用到Action链。通过Action链的使用,可以轻松实现两个Action之间的数据共享。在Struts2中,Action链是通过一个叫做“chain”的拦截器实现的。,返回,5.3.3struts.xml的配置,struts.xml文件是Struts2应用中的一个核心配置文件,它是程序整个运行流程的依据,Struts2正是根据这个文件所配置的信息才知道处理什么程序、什么时候处理、如何进行处理等。,返回,5.4值栈与OGNL表达式(1),值栈值栈中存储的对象主要包括以下4种类型:临时对象(TemporaryObject):该对象是在程序执行过程中,由容器自动创建并存储到值栈中的。临时对象的值并不固定,会随着应用不同而发生变化。当应用结束时,该对象会被清空。比如当在页面中利用Struts2标签输出迭代的值时,这些值都将以临时对象的形式存放到值栈中。模型对象(ModelObject):该对象仅在Action使用模型驱动方式传值的时候被用到。如果某个Action中应用了模型驱动(model-driven),当Action被请求时,“modeldriven”拦截器会自动从此Action中获得模型对象,并将所获得的对象放置在值栈中对应Action对象的上面。当JSP页面需要用到这些对象所携带数据时,也会到值栈去找对应模型对象,获取数值。Action对象(ActionObject):当每个Action请求到来的时候,容器都会先创建一个此Action的对象并存入值栈,该对象携带所有与Action执行过程有关的信息。命名对象(NamedObjects):主要包括Servlet作用范围内相关的对象信息,比如Request、Session、Application等。,5.4值栈与OGNL表达式(2),值栈中对象的存储顺序如图所示,OGNL表达式OGNL全称是Object-GraphNavigationLanguage,意思是图对象导航语言,它是表达式语言的一种。OGNL的功能非常强大,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,并能够遍历整个对象的结构图,实现对象属性字段的类型转化.Struts2中的很多地方都要用到OGNL表达式,比如Struts2的标签、Struts2的校验文件等。1使用OGNL访问JavaBean在OGNL中使用“.”对导航图进行遍历,例如“randfather.father.child”这种形式,5.4值栈与OGNL表达式(3),2访问应用上下文OGNL通过“#”对应用上下文进行访问。,3访问集合元素,5.4值栈与OGNL表达式(4),对Map的访问:,返回,5.5Struts2的标签库,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),include标签
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西安文理学院《思辨英语》2023-2024学年第一学期期末试卷
- 新疆农业大学《广播节目播音主持》2023-2024学年第二学期期末试卷
- 濮阳科技职业学院《热流体与冶金传输基础》2023-2024学年第二学期期末试卷
- 新乡工程学院《卫生财务管理》2023-2024学年第一学期期末试卷
- 三峡大学科技学院《食品质量与安全导论》2023-2024学年第二学期期末试卷
- 淄博师范高等专科学校《有机合成与制备综合实验》2023-2024学年第二学期期末试卷
- 泉州信息工程学院《设计效果图》2023-2024学年第二学期期末试卷
- 宁夏民族职业技术学院《计量经济学课程设计》2023-2024学年第二学期期末试卷
- 浙江省温州市文成县黄坦中学2025年初三下学期期终调研测试生物试题试卷含解析
- 山西省忻州市定襄县市级名校2025年初三联考(三)英语试题含答案
- 数学全等三角形课件++2024-2025学年北师大版七年级数学下册
- LBT 235-2022绿色食品设施甜樱桃生产操作规程
- 编织老师考试试题及答案
- 2025年03月重庆市涪陵区新妙镇选聘本土人才1人笔试历年参考题库考点剖析附解题思路及答案详解
- 2025-2030巴基斯坦基础建设行业市场现状供需分析及投资评估规划分析研究报告
- 攀枝花2025年四川攀枝花市东区事业单位春季引才(4人)笔试历年参考题库附带答案详解
- GB/T 27060-2025合格评定良好实践指南
- 2025年《保障中小企业款项支付条例》学习解读课件
- 2025年国家电投集团内蒙古能源有限公司招聘笔试参考题库含答案解析
- 2025年保安证考试常见试题与答案
- 2024年四川眉山中考满分作文《时光剪影中的那抹温柔》
评论
0/150
提交评论