struts2概述

Struts2是一个基于MVC设计模式的web应用框架,采用拦截器处理用户请求,降低了对ServletAPI的依赖。它支持POJO表单、OGNL表达式、AJAX标签和多种模板。Struts2的优势包括Action的非单例模式、类型转换和丰富的拦截器,提供了灵活的Action生命周期控制。
摘要由CSDN通过智能技术生成

概述

struts2是一个基于MVC设计模式的web应用框架,作为控制器(Controller)来建立模型与视图的数据交互。他本质上相当于一个servlet,是在struts和WebWork的基础上进行了合并的全新的框架。

struts2以webwork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,降低侵入性(侵入式框架和非侵入式框架),struts2可以理解为WebWork的更新产品,即相对于WebWork,struts2的变化很小

struts分化出来的另一个框架是Shale。—百度百科

工作原理图

工作原理图

优势

  • POJO表单即POJO操作
    struts2去除掉了struts框架中的Action Forms部分,在struts2中你可以用任何一个POJO来接受表单输入,同样的,也可以把任一POJO视为一个Action类,而struts要求必须统一扩展自Action类

  • 绑定值到视图技术
    从struts的JSP发展到了struts2的ValueStack技术将值绑定至视图

  • 表达式语言
    struts2不仅支持EL表达式,还整合了OGNL(Object Graph Navigation Language)

  • servlet依赖关系
    struts2不像struts一样需要依赖于Servlet API。

  • 模板支持
    支持使用模板生成视图

  • 标签支持
    struts2改进了标签表单,新的标签表单可以让开发人员减少代码编写量

  • AJAX支持
    struts2创建了类似于标准的struts2标签的AJAX标签

  • 线程模型方面
    struts的Action是单实例的,struts2的Action是一个请求一个实例,没有线程安全方面的问题

  • Action执行控制
    struts支持每个模块对应一个请求处理,但是模块中的所有Action必须共享相同的生命周期。struts2支持通过拦截器堆栈为每一个Action创建不同的生命周期。

  • 类型转换
    struts2中使用OGNL进行类型转换,可以更加方便地使用

  • 众多内置拦截器
    拦截器是AOP技术(Aspect-Oriented Programming)的一种实现策略,struts2中加入了许多内置拦截器,使我们能很方便地对业务进行扩展。

体系结构

引用流程注解
  1. 当web容器收到请求(HttpServletRequest),它将请求传递给一个标准的过滤链。(包括ActionContextCleanUp过滤器)。
  2. 经过Other filters(SiteMesh,etc),需要调用FilterDispatcher核心控制器,然后它调用ActionMapper确定请求那个Action,ActionMapper返回一个收集Action详细信息的ActionMapping对象。
  3. FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager)从配置文件中读取配置信息(struts.xml),然后创建ActionInvocation对象。
  4. ActionInvocation在调用Action之前会依次的调用所用配置拦截器(Interceptor N),一旦执行结果返回字符串,ActionInvocation负责查找结果字符串对应的Result,然后执行这个Result,Result会调用一些模板(JSP)来呈现页面。
  5. 拦截器(interceptor N)会在被执行(顺序和Action执行之前相反,即拦截器调用返回的方向)最后响应(HttpServletResponse)被返回在web.xml中配置的那些过滤器和核心控制器(FilterDispatcher)。——百度百科
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值