Struts2框架的工作原理与架构分析.ppt

上传人:赵** 文档编号:67314742 上传时间:2022-12-24 格式:PPT 页数:48 大小:810.50KB
返回 下载 相关 举报
Struts2框架的工作原理与架构分析.ppt_第1页
第1页 / 共48页
Struts2框架的工作原理与架构分析.ppt_第2页
第2页 / 共48页
点击查看更多>>
资源描述

《Struts2框架的工作原理与架构分析.ppt》由会员分享,可在线阅读,更多相关《Struts2框架的工作原理与架构分析.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Struts2框架的工作原理与架构分析郭剑峰2012年11月Struts2的工作原理一个请求在Struts2框架中的处理分为以下几个步骤 1客户端初始化一个指向Servlet容器(如Tomcat)请求 2这个请求经过一系列的过滤器(Filter)3接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5ActionProxy通过ConfigurationManager询问框架的

2、配置文件,找到需要调用的Action类 6ActionProxy创建一个ActionInvocation的实例。7ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。8一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper2021/9/302Struts2的架构分析Struts2框架也是

3、由两部分组成:XWork2和Struts2。XWork是一个命令模式框架,它是Struts2的基础。XWork提供了很多核心功能:IoC(Inversionofcontrol,控制反转)容器,强大的表达式语言(OGNL:ObjectGraphNavigationLanguage-对象图像导航语言)数据类型转换,验证和可插入的配置。XWork框架的核心概念包括action,拦截器(inerceptor)和result.2021/9/303struts-default.xml文件struts-default.xml文件是struts2框架默认加载的配置文件。它定义struts2一些核心的bean和

4、拦截器。这些拦截器是以key-value对的形式配置在struts-default.xml中,其中name是拦截器名字,就是后面使用该拦截器的引用点,value则指定拦截器的实现类。struts-default.xml:struts2全局配置文件,struts2框架启动时会自动加载该文件 位置:struts2-core.jar/struts-default.xml作用:定义bean和一个抽象的包。包中定义了返回类型、拦截器、拦截器栈、默认的拦截器和默认的Action2021/9/304struts.properties文件作用:覆盖系统配置信息struts.custom.i18n.resour

5、ces=globalMessages国际化文件的前缀名配置struts.ui.theme=simple使用struts2的simple模板生成html代码struts.ui.templateDir=templateStruts2的模板目录是通过struts.ui.templateDir常量来指定的,该常量的默认值是template,即意味着Struts2会从Web应用的template目录struts.ui.templateSuffix=ftl去除struts2标签中的自动生成的布局样式 struts.multipart.saveDir=/tmp设置struts2的临时文件上传路径struts

6、.multipart.maxSize=1000000000struts2修改文件上传大小限制 2021/9/305Struts2中为应用指定多个配置文件为了避免struts.xml文件过于庞大、臃肿,提高代码的可读性,我们可以将一个struts.xml配置文件分解成过个配置文件,然后在struts.xml文件中包含其他配置文件。1.配置一个名为department.xml文件/department/index.jsp2021/9/306Struts2中为应用指定多个配置文件2.配置一个名为employee.xml文件/employee/index.jsp 2021/9/307Struts2中为

7、应用指定多个配置文件3.在struts.xml中通过include进行配置 2021/9/308Struts2中的国际化2021/9/309Struts2中的国际化2021/9/3010Struts2中的国际化2021/9/3011Struts2中的国际化2021/9/3012Struts2中的国际化2021/9/3013Struts2中的国际化案例:案例:struts2appi18n/LoginAction2021/9/3014Struts2中的表单校验Annotations验证Struts2提供了注解的方式校验 1)Validation 指明这个类或者接口将使用基于注解的校验。2)Vali

8、dations()在同一个方法上要使用多个注解校验时。3)SkipValidation 指定某个方法不需要校验。否则所有方法都会使用校验。也可以在检验拦截器中使用validateAnnotatedMethodOnly 4)13个内置校验器的注解版本:RequiredFieldValidatorRequiredStringValidatorStringLengthFieldValidatorIntRangeFieldValidatorDoubleRangeFieldValidatorDateRangeFieldValidatorExpressionValidatorFieldExpression

9、ValidatorRegexFieldValidatorEmailValidatorUrlValidatorVisitorFieldValidatorConversionErrorFieldValidator案例:案例:annotation/SimpleAnnotationAction,annotation/SimpleAnnotationAction,annotation/AnnotationValidationActionannotation/AnnotationValidationAction2021/9/3015Struts2单文件上传上传jsp:2021/9/3016Struts2单

10、文件上传action:2021/9/3017Struts2单文件上传xml:案例:案例:SingleUpload.jspSingleUpload.jsp2021/9/3018Struts2多文件上传jsp:2021/9/3019Struts2多文件上传action:2021/9/3020Struts2多文件上传xml:案例:案例:MultiUpload.jspMultiUpload.jsp2021/9/3021Struts2动态方法调用Struts.xml:2021/9/3022Struts2动态方法调用action:2021/9/3023Struts2动态方法调用action:案例:案例:D

11、ynamicAction.actionDynamicAction.action2021/9/3024Struts2使用通配符定义actionxml:2021/9/3025Struts2使用通配符定义actionaction:案例:案例:WildcardAction.javaWildcardAction.java2021/9/3026Struts2局部自定义类型转换器2021/9/3027Struts2局部自定义类型转换器2021/9/3028Struts2局部自定义类型转换器2021/9/3029Struts2局部自定义类型转换器2021/9/3030Struts2局部自定义类型转换器案例案例

12、:localconverter.CircleAction.java:localconverter.CircleAction.java2021/9/3031Struts2全局自定义类型转换器必须在src的目录下建立xwork-conversion.properties文件:案例案例:globalconverter.CircleAction.java:globalconverter.CircleAction.java2021/9/3032Struts2的OGNL表达式1.OGNL表达式语言表达式语言OGNL是ObjectGraphicNavigationLanguage(对象图导航语言)的缩写,它

13、是一个开源项目。Struts2框架使用OGNL作为默认的表达式语言。2.访问上下文(访问上下文(Context)中的对象需要使用)中的对象需要使用#符号标注命名空间,如符号标注命名空间,如#application、#session3.由于由于ValueStack(值栈值栈)是是Struts 2中中OGNL的根对象,如果用户需要的根对象,如果用户需要访问值栈中的对象,在访问值栈中的对象,在JSP页面可以直接通过下面的页面可以直接通过下面的EL表达式访问表达式访问ValueStack(值栈值栈)中对象的属性:中对象的属性:$foo/获得值栈中某个对象的foo属性2021/9/3033Struts2

14、的OGNL表达式#application.userName或者#applicationuserName,相当于调用ServletContext的getAttribute(username)。session对象:用来访问HttpSession,例如#session.userName或者#sessionuserName,相当于调用session.getAttribute(userName)。request对象:用来访问HttpServletRequest属性(attribute)的Map,例如#request.userName或者#requestuserName,相当于调用request.getA

15、ttribute(userName)。parameters对象:用于访问HTTP的请求参数,例如#parameters.userName或者#parametersuserName,相当于调用request.getParameter(username)。2021/9/3034Struts2的OGNL表达式#application.userName或者#applicationuserName,相当于调用ServletContext的getAttribute(username)。session对象:用来访问HttpSession,例如#session.userName或者#sessionuserNa

16、me,相当于调用session.getAttribute(userName)。request对象:用来访问HttpServletRequest属性(attribute)的Map,例如#request.userName或者#requestuserName,相当于调用request.getAttribute(userName)。parameters对象:用于访问HTTP的请求参数,例如#parameters.userName或者#parametersuserName,相当于调用request.getParameter(username)。2021/9/3035Struts2中为action属性注入

17、值Struts2中为Action中的属性提供了依赖注入功能,在Struts2的配置文件中,我们可以方便的为action中的属性注入值,注意:属性必须提供setter方法Action:2021/9/3036Struts2中为action属性注入值jsp:2021/9/3037Struts2中为action属性注入值xml:案例案例:ioc.IocAction.java:ioc.IocAction.java2021/9/3038Struts2自定义拦截器Struts2拦截器在访问某个 Action方法之前或之后实施拦截,Struts2拦截器是可插拔的,拦截器是 AOP(AspectOriented

18、Programming面向切面)的一种实现2021/9/3039Struts2自定义拦截器Action:2021/9/3040Struts2自定义拦截器Interceptor:2021/9/3041Struts2自定义拦截器xml:2021/9/3042Struts2自定义拦截器登录jsp:2021/9/3043Struts2自定义拦截器执行 动作jsp:从拦截器得到message2021/9/3044Struts2自定义拦截器退出jsp:2021/9/3045Struts2自定义拦截器演示拦截过程:1.http:/localhost:8080/struts2web/intercepter/user.jsp2.http:/localhost:8080/struts2web/IntercepterAction.action2021/9/3046Struts2自定义拦截器演示拦截过程:3.http:/localhost:8080/struts2web/intercepter/quit.jsp4.http:/localhost:8080/struts2web/IntercepterAction.action案例:案例:IntercepterAction.actionIntercepterAction.action2021/9/3047Struts2异常处理2021/9/3048

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁