Struts2框架的工作原理与架构分析ppt课件_第1页
Struts2框架的工作原理与架构分析ppt课件_第2页
Struts2框架的工作原理与架构分析ppt课件_第3页
Struts2框架的工作原理与架构分析ppt课件_第4页
Struts2框架的工作原理与架构分析ppt课件_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

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

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

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

7、为应用指定多个配置文件,3.在struts.xml中通过include进行配置,Struts2中的国际化,Struts2中的国际化,Struts2中的国际化,Struts2中的国际化,Struts2中的国际化,Struts2中的国际化,案例:struts2appi18n/LoginAction,Struts2中的表单校验Annotations验证,Struts2提供了注解的方式校验 1) Validation 指明这个类或者接口将使用基于注解的校验。 2) Validations() 在同一个方法上要使用多个注解校验时。 3) SkipValidation 指定某个方法不需要校验。否则所有方法

8、都会使用校验。也可以在检验拦截器中使用validateAnnotatedMethodOnly 4) 13个内置校验器的注解版本:RequiredFieldValidatorRequiredStringValidatorStringLengthFieldValidatorIntRangeFieldValidatorDoubleRangeFieldValidatorDateRangeFieldValidatorExpressionValidatorFieldExpressionValidatorRegexFieldValidatorEmailValidatorUrlValidatorVisitor

9、FieldValidatorConversionErrorFieldValidator案例: annotation/SimpleAnnotationAction, annotation/AnnotationValidationAction,Struts2单文件上传,上传jsp,Struts2单文件上传,action,Struts2单文件上传,xml,案例:SingleUpload.jsp,Struts2多文件上传,jsp,Struts2多文件上传,action,Struts2多文件上传,xml,案例:MultiUpload.jsp,Struts2动态方法调用,Struts.xml,Struts

10、2动态方法调用,action,Struts2动态方法调用,action,案例:DynamicAction.action,Struts2使用通配符定义action,xml,Struts2使用通配符定义action,action,案例:WildcardAction.java,Struts2局部自定义类型转换器,Struts2局部自定义类型转换器,Struts2局部自定义类型转换器,Struts2局部自定义类型转换器,Struts2局部自定义类型转换器,案例:localconverter.CircleAction.java,Struts2全局自定义类型转换器,必须在src的目录下建立xwork-co

11、perties文件,案例:globalconverter.CircleAction.java,Struts2的OGNL表达式,1.OGNL表达式语言OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。 Struts 2框架使用OGNL作为默认的表达式语言。 2.访问上下文(Context)中的对象需要使用#符号标注命名空间,如#application、#session 3.由于ValueStack(值栈)是Struts 2中OGNL的根对象,如果用户需要访问值栈中的对象,在JSP页面可以直接通过下面的

12、EL表达式访问ValueStack(值栈)中对象的属性:$foo /获得值栈中某个对象的foo属性,Struts2的OGNL表达式,application.userName或者#applicationuserName,相当于调用ServletContext的getAttribute(username)。 session对象:用来访问HttpSession,例如#session.userName或者#sessionuserName,相当于调用session.getAttribute(userName)。 request对象:用来访问HttpServletRequest属性(attribute)的

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

14、访问HttpSession,例如#session.userName或者#sessionuserName,相当于调用session.getAttribute(userName)。 request对象:用来访问HttpServletRequest属性(attribute)的Map,例如#request.userName或者#requestuserName,相当于调用request.getAttribute(userName)。 parameters对象:用于访问HTTP的请求参数,例如#parameters.userName或者#parametersuserName,相当于调用request.ge

15、tParameter(username,Struts2中为action属性注入值,Struts2中为Action中的属性提供了依赖注入功能,在Struts2的配置文件中,我们可以方便的为action中的属性注入值,注意:属性必须提供setter方法 Action,Struts2中为action属性注入值,jsp,Struts2中为action属性注入值,xml,案例:ioc.IocAction.java,Struts2自定义拦截器,Struts2 拦截器在访问某个 Action 方法之前或之后实施拦截,Struts2 拦截器是可插拔的,拦截器是 AOP(Aspect Oriented Programming面向切面) 的一种实现,Struts2自定义拦截器,Action,Struts2自定义拦截器,Interceptor,Struts2自定义拦截器,xml,Struts2自定义拦截器,登录jsp,Struts2自定义拦截器,执行 动作jsp: 从拦截器得到message,Struts2自定义拦截器,退出jsp,Struts2自定义拦截器,演示拦截过程,1.http:/localhost:8080/struts2web/interc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论