版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财务管理课件 项目3 编制财务预算
- 《我与地坛》教案范文5篇
- 2019-2020学年七年级历史第一学期期中考试试卷(解析版)
- 2024小红书小食行业营销通案
- 软件工程(北方民族大学)知到智慧树章节测试课后答案2024年秋北方民族大学
- 安全与环保管理教学课件
- 合同授予定义
- 合同审批会签单简要内容
- 家长会课件美术
- 《添加剂发展趋势》课件
- 山东省日照市2023-2024学年七年级上学期期末数学试题(含答案)
- 上海华东师大二附中2025届高一数学第一学期期末检测试题含解析
- 新教科版六年级上册科学全册知识点(期末总复习资料)
- 《静女》《涉江采芙蓉》对比阅读教学设计 2023-2024学年统编版高中语文必修上册
- 2024-2030年水培蔬菜行业市场发展分析及发展趋势与投资战略研究报告
- 集成电路制造工艺 课件 6光刻工艺2
- 建筑边坡工程施工质量验收标准
- 2024中华人民共和国农村集体经济组织法详细解读课件
- 2024年贵州省中考理科综合试卷(含答案)
- 2024应急管理部国家自然灾害防治研究院公开招聘34人(高频重点提升专题训练)共500题附带答案详解
- 2002版《水利工程施工机械台时费定额》
评论
0/150
提交评论