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

上传人:小飞机 文档编号:1377143 上传时间:2022-11-16 格式:PPTX 页数:48 大小:1.17MB
返回 下载 相关 举报
Struts2框架的工作原理与架构分析ppt课件.pptx_第1页
第1页 / 共48页
Struts2框架的工作原理与架构分析ppt课件.pptx_第2页
第2页 / 共48页
Struts2框架的工作原理与架构分析ppt课件.pptx_第3页
第3页 / 共48页
Struts2框架的工作原理与架构分析ppt课件.pptx_第4页
第4页 / 共48页
Struts2框架的工作原理与架构分析ppt课件.pptx_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《Struts2框架的工作原理与架构分析ppt课件.pptx》由会员分享,可在线阅读,更多相关《Struts2框架的工作原理与架构分析ppt课件.pptx(48页珍藏版)》请在三一办公上搜索。

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

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

3、ruts2框架也是由两部分组成: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框架默认加载的配置文件。它定义struts2一些核

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

5、urces=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 设置struts2 的临时文件上

6、传路径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中为应用指定多个配置文件,3.在s

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

8、器中使用validateAnnotatedMethodOnly 4) 13个内置校验器的注解版本:RequiredFieldValidatorRequiredStringValidatorStringLengthFieldValidatorIntRangeFieldValidatorDoubleRangeFieldValidatorDateRangeFieldValidatorExpressionValidatorFieldExpressionValidatorRegexFieldValidatorEmailValidatorUrlValidatorVisitorFieldValidatorC

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

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

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

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

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

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

15、ter(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 Program

16、ming面向切面) 的一种实现,Struts2自定义拦截器,Action:,Struts2自定义拦截器,Interceptor:,Struts2自定义拦截器,xml:,Struts2自定义拦截器,登录jsp:,Struts2自定义拦截器,执行 动作jsp: 从拦截器得到message,Struts2自定义拦截器,退出jsp:,Struts2自定义拦截器,演示拦截过程:,1.http:/localhost:8080/struts2web/intercepter/user.jsp,2.http:/localhost:8080/struts2web/IntercepterAction.action,Struts2自定义拦截器,演示拦截过程:,3.http:/localhost:8080/struts2web/intercepter/quit.jsp,4.http:/localhost:8080/struts2web/IntercepterAction.action,案例:IntercepterAction.action,Struts2异常处理,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号