版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 Struts2.0表现层技术3.1 Struts2.0 框架介绍3.2 Action 知识3.3 Struts2.0 标签3.4 Struts2.0 拦截器3.1 Struts2.0 框架介绍Struts2框架简介Struts2历史Struts2与MVCStruts2体系介绍Struts2体系架构Struts2工作流程Struts2基本知识点Struts2标签库简介Struts2拦截器默认配置文件struts-default.xml概要说明Struts2核心配置文件Struts.xml详解Struts2的简单开发和配置3.1 Struts2.0 框架介绍Apache Struts 2即
2、是大家之前所熟悉的WebWork2.随着各自的发展,WebWork和Struts社区决定将二者合并为Struts2,新版本的Struts与以前版本的一样更易于使用. 从某种程度上来讲,Strut2没有继承Struts1的血统,而是继承了WebWork的血统。或者说,WebWork衍生出了Struts2,而不是Struts1衍生了Struts2。因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证;而且吸收了Struts 1和WebWork两者的优势 最新版本为2012年01月22日发布的-all 版本Struts2历 史3.1 Struts2.
3、0 框架介绍概括地说,MVC思想将一个应用分成了Model,View,Control三个部分。三个部分以最少的耦合协同工作,从而提高应用的可扩展性和维护性。MVC具有以下特点:多个视图对应一个模型 模型返回的数据与显示逻辑分离 三层架构导致的低耦合性和易维护性。控制层概念。MVC更符合软件工程化管理的精神 Struts2与MVC在struts2中,Model对应业务逻辑组件,它通常用于实现业务逻辑方法以及以及与底层数据库的交互等;View对应视图组件,通常是指JSP页面,但也适用于其他视图显示技术,如Velocity或者Excel文档;Control对应系统核心控制器和业务逻辑控制器,系统核心
4、控制器为Struts2框架提供的FilterDispatcher,它根据请求自动调用相应的Action。业务逻辑控制器是指开发人员自行定义的一系列Action,在Action中负责调用相应的业务逻辑组件来完成处理。 3.1 Struts2.0 框架介绍Struts2与MVC3.1 Struts2.0 框架介绍Struts2体系架构MVC / Struts2架构Struts2的体系使用了WebWork的设计核心(XWork)。在Struts2中使用拦截器来处理用户请求,从而允许用户业务逻辑控制器与Servlet API分离。3.1 Struts2.0 框架介绍Struts2体系架构Struts2
5、 框架由3个部分组成: 核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件核心控制器:FilterDispatcher FilterDispatcher是Struts2框架的核心控制器,该控制器作为一个filter运行在web应用,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求业务控制器 业务控制器组件就是用户实现Action类的实例3.1 Struts2.0 框架介绍Struts2体系架构Struts2的模型组件 JavaEE应用里的模型组件,通常指系统的业务逻辑组件,而隐藏在系统的业务逻辑组件下面的可能还包含Dao、领域对象等组件Str
6、uts2视图组件 Struts2能使用JSP、FreeMarker、Velocity等作为视图技术3.1 Struts2.0 框架介绍Struts2体系架构3.1 Struts2.0 框架介绍Struts2工作流程视图客户端Struts2容器控制器FilterDispatcher模型Action类ResultStruts.xmlHtml,JSP123451.客户端向Struts2容器发出请求。2.FilterDispatcher接受请求,过滤URL并调用指定的Action类。3.Action类处理请求,返回逻辑视图result。4.在struts.xml中找到result对应的物理视图。5.将
7、物理视图展示到客户端。以控制器为例Struts 2框架的大致处理流程如下:浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf等。Control中的核心控制器FilterDispatcher根据请求调用相应的业务逻辑控制器(Action)。 Struts2的拦截器链自动对请求应用通用功能,如数据校验和文件上传等功能。回调Action中的execute()方法,并在方法体内调用业务逻辑组件来处理请求(Model)。既可以是将数据保存到数据库,也可以从数据库中检索信息。实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求。exec
8、ute()方法将调用业务逻辑组件(Model)得到的数据返还并更新视图层(View),可以是HTML页面、图像,也可以是PDF文档或者其他文档。此时支持的视图技术非常多,既支持JSP,也支持Velocity、FreeMarker等模板技术。3.1 Struts2.0 框架介绍Struts2工作流程使用struts2程序最少需要需要的jar包,如下:文件名说明struts2-core-2.1.6.jarStruts2框架的核心库xwork-2.1.2.jarXwork类库,Struts2在其上构建ognl-2.6.11.jar对象图导航语言,Struts2使用的一种表达式语言freemarker
9、-2.3.13.jarStruts2的UI标签的模板使用FreeMarker编写commons-logging-1.1.jar使用此名来支持Log4j和JDK1.4+的日志3.1 Struts2.0 框架介绍Struts2开发环境1在Struts的下载包中有一个struts2-blank-2.1.6.war的应用,只需要将其WEB-INF/lib目录中的JAR拷贝到Project的WEB-INF/lib目录下便可,不可随便导入其它的JAR,应按需要导入,否则会出现异常。 在web.xml文件中配置FilterDispatcher。 struts2.0 org.apache.struts2.di
10、spatcher.FilterDispatcher struts2.0 /* 3.1 Struts2.0 框架介绍Struts2开发环境2public class LoginAction private String name;private String password;/*在此方法里实现业务逻辑处理*/public String execute() throws Exception if(.equals(sa) & this.password.equals(“123”)return success;else return error; setter/getter提供属性参数及set/ge
11、t方法通过ioc的方法将页面的参数注入到Action类中3.1 Struts2.0 框架介绍Struts2开发Action WEB-INF/classes(实际在src目录下创建便可)目录下创建struts.xml文件,在文件中对Action类进行配置,并将action与结果页面关联在一起。 /success.jsp /error.jsp 引入dtd文件对Action类进行配置3.1 Struts2.0 框架介绍Struts.xml配 置 Action中的url路径与struts.xml中保持一样表单元素名称与Action类中的属性名称保持一致3.1 Struts2.0 框架介绍Login.j
12、spStruts2.0中的Action几种方式虽然,理论上Struts 2.0的Action无须实现任何接口或继承任何类型,但是,我们为了方便实现Action,大多数情况下会采用以下二种方式对Action进得处理: 继承com.opensymphony.xwork2.ActionSupport 实现com.opensymphony.xwork2.Action默认情况下:重载(Override)或覆写(Overload)其中的的 String execute() throws Exception 3.1 Struts2.0 框架介绍Struts2Action2在struts.xml中进行配置 /
13、success.jsp /error.jsp 1将LoginAction类继承ActionSuportpublic class LoginAction extends ActionSupport private String name;private String password;public String execute() throws Exception if(.equals(sa) & this.password.equals(“123”)return “success”;/与struts.xml中配置的result相同else return “error”;3.1 Struts2.
14、0 框架介绍Struts2ActionSupport实现Action接口的方式表面上看起来,实现Action接口没有太大的好处。事实上实现Action接口,有利用于更好地实现Action类。Action接口的实现如下:在这里定义了五个字符串常量,注意常量中的值,联想一下前面,想想这五个常量有什么作用public class LoginAction extends ActionSupport private String name;private String password;public String execute() throws Exception if(.equals(sa) & t
15、his.password.equals(“123”)return SUCCESS;/这里采用的是一个常量值else return ERROR;/通过此种方式,可以简化使用,当然在ActionSupport类中也可以采/用此种方式,因为ActionSupport是Action的实现类Students.jspStudentsAction.javaexecute() ; return “hfut”; glxy.jsp struts.xmlglxy.jsp接收用户输入的几种方式在Struts2.0中有如下几种方式可以获得用户输入信息,采用的都是IOC的方式,具体方式如下:使用action类的属性接收用
16、户输入使用领域对象接收用户输入使用ModelDriven的方式接收用户输入3.1 Struts2.0 框架介绍Action接受用户输入使用action类的属性接收用户输入在某些应用中,只传输了少量的属性,在struts2中,可以直接使用action的属性来接收用户的输入,比如前面在登录中的案例就是采用这种方式。使用此种方式注意以下二点:在action类中提供对应的属性及set/get方法在页面表单中将表单元素的name属性与action中的属性名称一样在Action类中使用POJO类接收用户输入参数Struts2中支持直接使用领域对象来接收用户输入的数据。public class LoginA
17、ction implements Action private User user;public String execute() throws Exception /业务处理Set/Get在Action类中直接使用POJO对象 在表单元素的name属性值为user为Action类中的属性名password为pojo类中的属性名3.1 Struts2.0 框架介绍领域对象接受用户输入Struts2把所有的标签都定义在URI为“/struts-tags”的空间下,我们可以对Struts2标签进行简单的分类,从最大的范围来分, Struts2可以讲所有标签分成如下三类:1.UI(User Inte
18、rface,用户界面)标签:主要用于生成HTML元素的标签。2.非UI标签:主要用于数据访问、逻辑控制等的标签。3.AJAX标签:用于Ajax(Asynchronous JavaScript And XML)支持的标签。3.1 Struts2.0 框架介绍Struts2标签库简介对于UI标签,则又可分为如下两类:1.表单标签:表单标签主要用于生成HTML页面的form元素.以及普通表单元素的标签。2.非表单标签:非表单标签主要用于生成页面上的树、Tab页等标签。对于非UI标签,页可分为如下两类:1.流程控制标签:只要包含用于实现分支、循环等流程控制的标签。2.数据访问标签:主要包含用户输出Va
19、lueStack中的值,完成国际化等功能的标签3.1 Struts2.0 框架介绍Struts2标签库简介3.1 Struts2.0 框架介绍Struts2标签库简介Strus2标签库用户界面标签库表单标签库非表单标签库非用户界面标签库控制标签库数据访问标签库Ajax支持标签库什么是拦截器 (Interceptor) 在Struts 2文档中对拦截器的解释为拦截器是动态拦截Action调用的对象。拦截器是动态拦截Action调用的对象。它提供了一种机制 可以使开发者可以定义在一个Action执行的前后执行一个特定的功能模块,同时也提供了一种可以提取Action中可重用的部分的方式。拦截器是St
20、ruts 2的核心组成部分。很多功能(feature)都是构建在拦截器基础之上的,例如文件的上传和下载、国际化、转换器和数据校验等,Struts 2利用内建的拦截器,完成了框架内的大部分操作3.1 Struts2.0 框架介绍Struts2拦截器3.1 Struts2.0 框架介绍Struts2拦截器拦截器的实现原理 Struts 2的拦截器实现相对简单。当请求到达Struts 2的ServletDispatcher时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器。3.1 Struts2.0 框架介绍Stru
21、ts2拦截器3.1 Struts2.0 框架介绍Struts2拦截器struts-default.xml概要说明struts-default.xml文件是struts2框架默认加载的配置文件。它定义struts2一些核心的bean和拦截器。 这些拦截器是以key-value对的形式配置在struts-default.xml中,其中name是拦截器名字,就是后面使用该拦截器的引用点,value则指定拦截器的实现类 3.1 Struts2.0 框架介绍配置文件Struts.xml作用详解配置请求和Action之间的对应关系,并匹配逻辑视图(在Action中返回的String值)名和物理视图资源(如
22、自己写的JSP页面等)之间的对应关系. 配置常量,导入其它配置文件 .3.1 Struts2.0 框架介绍Struts.xml showcase.jsp /empmanager/editSkill.jsp /empmanager/editSkill.jsp edit.action?skillName=$currentS Constant配置,常量配置- Constant 子节点Constant节点定义了Struts 2框架的大量属性,开发者可以通过改变这些属性来满足应用的需求。Constant节点包含了系列的key-value对象,每个key就是一个Struts 2属性,该key对应的valu
23、e就是一个Struts 2属性值。3.1 Struts2.0 框架介绍Struts.xml struts.devMode该属性设置Struts 2应用是否使用开发模式。如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示。该属性只接受true和flase两个值,该属性的默认值是false。通常,应用在开发阶段,将该属性设置为true,当进入产品发布阶段后,则该属性设置为false。 struts.multipart.maxSize该属性指定Struts 2文件上传中整个请求内容允许的最大字节数。struts.configuration.xml.reload该属性设置当stru
24、ts.xml文件改变后,系统是否自动重新加载该文件。该属性的默认值是false。3.1 Struts2.0 框架介绍Struts.xmlStruts.xml文件配置include部分 include加载子配置文件,即多配置文件-include子节点。Struts2框架的核心配置文件就是struts.xml配置文件,该文件主要负责管理Struts2框架的业务控制器Action。在默认情况下,Struts2框架将自动加载放在WEB-INF/classes路径下的struts.xml文件。为了避免随着应用规模的增加,而导致的struts.xml文件过于庞大,臃肿,从而是该文件的可读性下降。我们可以将
25、一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。 3.1 Struts2.0 框架介绍Struts.xmlPackage配置,包配置-package子节Struts2框架使用包来管理Action和拦截器等。每个包就是多个Action、多个拦截器、多个拦截器引用的集合。使用package可以将逻辑上相关的一组Action,Result,Intercepter等组件分为一组,Package有些像对象,可以继承其他的Package,也可以被其他package继承,甚至可以定义抽象的Package。 Package的可以使用的属性: name:必填
26、,指定包的名字,该名字是该包被其他包引用的key。extends:可选,指定该包继承其他包.继承其他包,可以继承其他包中的Action定义、拦截器定义等。namespace:可选,定义该包的命名空间。abstract:可选,它指定该包是否是一个抽象包。抽象包不能包含Action定义。 3.1 Struts2.0 框架介绍Struts.xmlNamespace配置,命名空间配置 Struts2以命名空间的方式来管理Action,同一个命名空间里不能有同名的Action,不同的命名空间里可以有同名的Action。Struts2通过为包指定namespace属性来为包下面的所有Action指定共同的
27、命名空间。 Namespace将action分成逻辑上的不同模块,每一个模块有自己独立的前缀。使用namespace可以有效的避免action重名的冲突,Struts2标签带有namespace选项,可以根据namespace的不同向服务器提交不同的package的action的请求。 “/”表示根namespace,所有直接在应用程序上下文环境下的请求(Context)都在这个package中查找。 “”表示默认namespace,当所有的namespace中都找不到的时候就在这个namespace中寻找. 3.1 Struts2.0 框架介绍Struts.xmlStruts.xml文件配置
28、package部分 Struts.xml文件配置interceptors部分Struts.xml文件配置action部分/talk.jsp Struts.xml文件配置result部分 /error.jspStruts.xml文件配置全局result配置 Struts.xml文件配置action部分Struts2配置文件Struts.xml详解 Struts2支持的处理结果类型一个提交到服务器的处理通常可以分为两个阶段,第一个阶段查询服务器状态(查询或者更新数据库),第二个阶段选择一个合适的结果页面其返回给用户(这里要讲的Result的内容)。Struts2提供了对不同种类返回结果的支持,常见的有JSP,FreeMarker,Velocity等。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年注册测绘师综合能力真题试卷(附答案)
- 2026年行政事业单位会计题库及答案
- 第二单元综合测试卷(单元测试)2025-2026学年二年级数学下册人教版(含答案)
- 2026年人和安全管理人员安全生产专项培训测试题含答案
- 2026年佛山市三水区林业系统人员招聘考试模拟试题及答案解析
- 2026年《农村文书面试试题及答案》(含解析)
- 企业月结关账优化方案
- 2025南京银行总行行政事务部社会招聘笔试历年典型考题及考点剖析附带答案详解
- 2025华夏银行成都分行社会招聘综合柜员笔试历年典型考题及考点剖析附带答案详解
- 2025北京平谷大厂回族自治县山东博兴新华村镇银行招聘笔试历年典型考题及考点剖析附带答案详解
- 12kV手车式开关柜标准化设计方案
- 2026-2030中国运甲状腺素蛋白行业市场发展趋势与前景展望战略分析研究报告
- 2025年甘肃金昌市地理生物会考真题试卷(+答案)
- 2026年云南校长职级模拟题库及参考答案详解(综合题)
- 呼和浩特市2026年初三年级第二次模拟考试道德与法治试卷(含答案)
- 2026年高考生物全国二卷试题及答案
- (2026年)检验检测机构资质认定“一单一库”的学习与解读(2026年实施)课件
- 青春不诈骗2026年高中五一假期反诈防骗指南
- (2026年版)发热伴血小板减少综合征防控方案培训课件
- 2025无锡科技职业学院教师招聘考试题目及答案
- 直播带货主播工作制度
评论
0/150
提交评论