当前位置: 首页 > news >正文

什么是Struts2?有哪些优势

Java中Strutsl是最早的基于MVC模式的轻量级Web框架,它能够合理地划分代码结构,并包含验证框架、国际化框架等多种实用工具框架。但是随着技术的进步,Struts1的局限性也越来越多地暴露出来。为了符合更加灵活、高效的开发需求,Struts2框架应运而生。

Struts2是Strutsl的下一代产品,是在Struts1和WebWork技术的基础上进行合并后的全新框架(WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的J2EE Web框架,它也是一个MVC框架)。虽然Struts2的名字与Struts1相似,但其设计思想却有很大的不同。实质上,Struts2是以WebWork为核心的,它采用拦截器的机制来处理用户的请求。这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts2可以理解为WebWork 的更新产品。

Struts2拥有优良的设计和功能,其优势具体如下:

·项目开源,使用及拓展方便。

·提供Exception处理机制。

·Result方式的页面导航,通过Result标签很方便地实现重定向和页面跳转。

·通过简单、集中的配置来调度业务类,使得配置和修改都非常容易。

·提供简单、统一的表达式语言来访问所有可供访问的数据。

·提供标准、强大的验证框架和国际化框架。

·提供强大的、可以有效减少页面代码的标签。

·提供良好的Ajax支持。

·拥有简单的插件,只需放人相应的JAR包,任何人都可以扩展Struts2框架,例如自定义拦截器、自定义结果类型、自定义标签等,为Struts2定制需要的功能,不需要什么特殊配置,并且可以发布给其他人使用。

·拥有智能的默认设置,不需要另外进行烦琐的设置。使用默认设置就可以完成大多数项目程序开发所需要的功能。

Struts2框架的执行流程是怎样的?

为了更好地学习Struts2框架,下面分析一下Struts2的基本执行流程,如下图所示。

Struts2的执行流程图

Struts2的流程图中,一个请求在Struts2框架中的处理可以分为以下几个步骤:

(1)客户端浏览器发送一个请求(HttpServletRequest)。

(2)程序会调用StrutsPrepareAndExecuteFilter,然后询问ActionMapper这个请求是否需要调用某个Action。

(3)如果ActionMapper决定需要调用某个Action,StrutsPrepareAndExecuteFilter会把请求的处理交给ActionProxy。

(4)ActionProxy通过配置管理器(Configuration Manager)从配置文件(struts.xml)中读取框架的配置信息,从而找到需要调用的Action类。

(5)ActionProxy会创建一个ActionInvocation的实例。

(6)ActionInvocation使用命名模式来调用Action,在调用Action前,会依次调用所有配置的拦截器(Intercepter1、Intercepter2、…)。

(7)一旦Action执行完,返回结果字符串,ActionInvocation就会负责查找结果字符串。对应的Result,然后执行这个Result。通常情况下Result会调用一些模板(JSP等)来呈现页面。

(8)产生的Result信息返回给ActionInvocation,此过程中拦截器会被再次执行(顺序与Action执行之前相反)。

(9)产生一个HttpServletResponse的响应行为,通过StrutsPrepareAndExecuteFilter反馈给客户端。

http://www.lryc.cn/news/15822.html

相关文章:

  • Ubuntu22.04 安装Mongodb6.X
  • 启动内核,能启动内核但是无法进入内核,始终卡在某一地方,比如 No soundcards found.
  • SQL零基础入门学习(六)
  • 股票、指数、快照、逐笔... 不同行情数据源的实时关联分析应用
  • 华为OD机试真题Python实现【 不含 101 的数】真题+解题思路+代码(20222023)
  • centos7 搭建ELK(elasticsearch、logstash、kibana)
  • 如何写新闻稿?写好新闻稿的技巧与步骤
  • 抖音不想只做“开心果”
  • MATLAB | 如何用MATLAB绘制这样有气泡感的网络图
  • Linux 远程登录
  • SAP中BOM基础数量及组件数量单位比例关系的注意事项
  • 华为OD机试真题Python实现【最大相连男生数】真题+解题思路+代码(20222023)
  • Vue使用ElementUI对表单元素进行自定义校验
  • linux的文件权限介绍
  • 支付系统中的设计模式03:模板方法模式
  • 【黏住用户的不是小红书,而是它背后的那些人】
  • 基于STM32采用CS创世 SD NAND(贴片SD卡)完成FATFS文件系统移植与测试(中篇)
  • 0基础学插画是报班还是自学
  • 【Spring Cloud Alibaba】000-Spring Cloud Alibaba 问题集锦[持续更新]
  • Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理
  • vue3组件篇 Select
  • 华为OD机试 - 员工出勤(Python) | 机试题+算法思路+考点+代码解析 【2023】
  • 力扣:27. 移除元素
  • 华为OD机试 - 剩余可用字符集(Python) | 机试题+算法思路+考点+代码解析 【2023】
  • 金三银四丨黑蛋老师带你剖析-安全开发岗
  • isNaN、Number.isNaN、isFinite、Number.isFinite
  • MyBatis分页插件
  • Vue组件间通信的四种方式(函数回调,自定义事件,事件总线,消息订阅与发布)
  • 华为OD机试真题Python实现【求字符串中所有整数的最小和】真题+解题思路+代码(20222023)
  • 行为型设计模式之中介者模式