版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-1-掌握Struts2的框架结构了解核心控制器StrutsPrepareAndExecuteFilter了解业务控制器Action了解Struts2支持的视图组件掌握Struts2工作流程掌握Struts2相关文件配置目标-2-Struts2框架概述Struts2是以WebWork的设计思想为核心,吸收Struts1的部分优点后建立的一个兼容WebWork和Struts1的MVC框架保留了Struts1的简单易用性,并且充分利用了WebWork的拦截器机制(AOP思想),是一个具有高度可扩展性的框架Struts2框架诞生后,取代了原有的Struts和WebWork框架。在短时间内迅速成为MVC领域最流行的框架Struts2的目标是使Web开发变得更加容易
-3-Struts2框架结构Struts2中大量使用拦截器来处理用户请求允许用户的业务逻辑控制器与ServletAPI分离-4-Struts2控制器组件-StrutsPrepareAndExecuteFilterStrutsPrepareAndExecuteFilter是一个Servlet过滤器是Struts2的核心组件web.xml中配置StrutsPrepareAndExecuteFilter代码:Struts2的控制器由两部分组成:StrutsPrepareAndExecuteFilter和业务控制器Action
<filter> <filter-name>struts2</filter-name> <filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class></filter><filter-mapping> <filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern></filter-mapping>-5-Struts2控制器组件-ActionAction是业务控制器Struts2中的Action类有如下优势:Action类完全是一个POJO,具有良好的代码重用性Action类无需与ServletAPI耦合,因此无论是应用还是测试都非常简单Action类的execute()方法仅返回一个字符串作为处理结果,该处理结果可映射到任何的视图或另一个ActionpublicStringexecute(){
}-6-Struts2配置文件–struts.xmlStruts.xml主要用来配置ActionStruts2的配置文件有两种:配置Action的struts.xml文件配置Struts2全局属性的perties文件<struts><!--指定Struts2处于开发阶段,可以进行调试--><constantname="struts.devMode"value="true"/><!--Struts2的Action都必须配置在package里--><packagename="p1"extends="struts-default"namespace="/admin"> <!--定义一个login的Action,实现类为com.dh.action.LoginAction--> <actionname="login"class="com.dh.action.LoginAction"> <!--配置execute()方法返回值所对应的页面--> <resultname="error">/error.jsp</result> <!--如果result标签不配置name属性,其默认为success--> <result>/success.jsp</result> </action></package></struts>-7-Struts2配置文件–pertiesSperties主要用来配置全局属性#指定web应用的默认的编码集,#相当于调用HttpServletRequest的setCharacterEncoding方法struts.i18n.encoding=GBK#当struts.xml修改后是否重新加载该文件,在开发阶段最好打开struts.configuration.xml.reload=true#设置浏览器是否缓存静态内容,开发阶段最好关闭struts.serve.static.browserCache=false-8-Struts2标签库Struts2的标签库也是Struts2框架的重要组成部分,提供了非常丰富的功能,这些标签不仅提供了表现层数据处理,而且提供了基本的流程控制功能,还提供了国际化、Ajax支持等功能。通过使用Struts2的标签,开发者可以最大限度的减少页面代码的编写。-9-Struts2处理步骤客户端浏览器发送一个请求,例如:/mypage.action。这个请求经过核心控制器StrutsPrepareAndExecuteFilter过滤处理,StrutsPrepareAndExecuteFilter将请求转交给相应的Action代理。Action代理通过配置文件中的信息找到对应的Action类,创建Action对象并调用其execute()方法。在调用Action的过程前后,涉及到相关拦截器的调用。拦截器链自动对请求应用通用功能,例如自动化工作流、验证或文件上传等功能。一旦Action执行完毕,Action代理根据struts.xml中的配置信息找到execute()方法返回值对应的结果。返回结果通常是视图资源(如JSP页面)或另一个Action。-10-基于Struts2的加法器在Struts2框架下开发加法器的具体步骤如下:配置Struts2应用环境。创建add.jsp页面,接收用户输入数据。创建业务逻辑类Calculator,实现数据的算术运算。创建AddAction类,实现execute()方法。在struts.xml中配置AddAction。创建add_result.jsp页面,显示计算结果。-11-添加类库-12-修改web.xml<filter> <!--配置Struts2框架的核心Filter--> <filter-name>struts2</filter-name> <!--配置Struts2核心Filter的实现类--> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class></filter><filter-mapping> <filter-name>struts2</filter-name> <!--匹配所有请求--> <url-pattern>/*</url-pattern></filter-mapping>-13-创建输入页面add.jsp……<formid="calcForm"method="post"action="add.action"><table> <tbody> <tr> <td>第一个数</td> <td><inputtype="text"name="num1"/></td> </tr> <tr> <td>第二个数</td>
<td><inputtype="text"name="num2"/></td> </tr> <tr> <td><inputtype="submit"value="加"/></td> </tr> </tbody></table></form>……-14-实现业务逻辑类CalculatorpublicclassCalculator{ publicdoubleadd(doublea,doubleb){ returna+b; } publicdoublesubtract(doublea,doubleb){ returna-b; } publicdoublemultiply(doublea,doubleb){ returna*b; } publicdoubledivide(doublea,doubleb){ //未判断除数不能为零
returna/b; }}-15-创建业务控制器AddActionpublicclassAddAction{ privatedoublenum1; privatedoublenum2;
num1、num2的get、set方法
/** *调用业务逻辑方法,实现业务,控制流程转向 */ publicStringexecute(){ //新建业务逻辑对象
Calculatorbiz=newCalculator(); //调用业务逻辑方法,获得返回值
doubleresult=biz.add(num1,num2); //将计算结果存入Session中
ActionContext.getContext().getSession().put("result",result); return"cal"; }}Struts2的Action可以通过ActionContext来访问ServletAPI
-16-在struts.xml中配置业务控制器AddAction<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN" "/dtds/struts-2.0.dtd"><struts> <!--指定Struts2处于开发阶段,可以进行调试--> <constantname="struts.devMode"value="true"/> <!--Struts2的Action都必须配置在package里--> <packagename="p2"extends="struts-default"> <!--定义一个add的Action,实现类为AddAction--> <actionname="add" class="com.dh.ch02.action.AddAction"> <!--配置execute()方法返回值所对应的页面--> <resultname="cal">/add_result.jsp</result> </action> </package></struts>-17-创建显示结果页面result.jsp……<table> <tbody> <tr> <td>第一个数</td> <td>${param.num1}</td> </tr> <tr> <td>第二个数</td> <td>${param.num2}</td> </tr> <tr> <td>结果</td> <td>${sessionScope.result}</td> </tr> </tbody></table>……结果值是从session中提取的,而非request中
-18-Struts2与自定义框架的比较基于Struts2的加法器在原理上与自定义框架的加法器是一样的。相比自定义框架的加法器实现,基于Struts2的加法器在代码上简化了许多;而且当增加一个Action时,只需在Struts2的配置文件中进行简单配置即可,无需使用大量代码进行控制实现。另外Struts2框架还提供了许多功能,例如:异常处理、Struts2标签库等,这些功使Struts2开发更加轻松和完善。-19-Struts2在Struts1基础上发展起来的,但实质上以WebWork为核心所有MVC框架都以控制器为核心,其中Struts2控制器由StrutsPre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政治科教学工作总结
- 《中国重症患者肠外营养治疗临床实践专家共识》解读
- 2025西藏自治区新生血管性青光眼诊疗专家共识(2024年)课件
- 浙江大学《大学物理》课件-第11章光学
- 2026年烘培工具行业分析报告及未来发展趋势报告
- 2026年电影行业分析报告及未来发展趋势报告
- 2026年运动马甲行业分析报告及未来发展趋势报告
- 2026春北师大版五年级数学《数据的表示和分析》教学设计
- 2026年广东深圳石厦学校九年级下学期第一次质量监测数学试题含答案
- 2026年酯基锡行业分析报告及未来发展趋势报告
- 当代中国经济教学知识考试复习题库(附答案)
- 2025-2026学年统编版道德与法治八年级下册期中模拟检测试题(含答案)
- 2025年人寿保险公司基本法
- 发药差错防范培训
- 市县医院骨科、麻醉科加速康复实施管理专家共识解读课件
- 2021北京市中考数学真题及答案解析
- (新教材)2026年人教版一年级下册数学 七 复习与关联 第3课时 图形的认识 课件
- DB15∕T 3360-2024 饲草大麦裹包青贮技术规程
- 2026年外国人在中国永久居留资格申请服务合同
- 2025小学英语五年级阅读理解专项训练50篇
- 国家事业单位招聘2025中国康复研究中心招聘高层次人才拟聘用人员笔试历年参考题库附带答案详解
评论
0/150
提交评论