Struts2 是 Apache 软件组织推出的一个相当强大的 Java Web 开源框架,本质上相当于一个 servlet。Struts2 基于 MVC 架构,框架结构清晰。通常作为控制器(Controller)来建立模型与视图的数据交互,用于创建企业级 Java web 应用程序
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
Struts2是一个基于MVC设计模式的Web应用框架,大家可以看看之前分享过的一篇介绍什么是MVC:https://developer.aliyun.com/article/1549674?spm=a2c6h.26396819.creator-center.6.744d3e18e6rdqI
Struts2框架概述
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,由Apache软件基金会维护,目的是简化Web应用的开发过程。Struts2的核心组件包括模型(负责数据和业务逻辑)、视图(负责用户界面展示)和控制器(处理用户输入并调用模型和视图)。
Struts2框架的特点
- MVC架构:Struts2采用MVC架构,将应用程序分成模型、视图和控制器三个部分,有助于代码的解耦和模块化开发。
- 轻量级:Struts2作为一个轻量级框架,不会给应用带来过多负担。
- 灵活性:Struts2提供了丰富的配置选项,允许开发者根据具体需求调整框架。
- 社区支持:Struts2拥有庞大的社区,提供丰富的文档和资源支持。
Struts2框架的应用场景
Struts2广泛应用于电子政务、电子商务、内容管理系统等多种Web应用程序中。
Struts2框架的执行流程
- 请求拦截:用户发起请求后被Struts2的核心过滤器(如StrutsPrepareAndExecuteFilter)拦截。
- Action映射:根据struts.xml配置文件中的映射关系,将请求映射到相应的Action类。
- Action处理:调用Action类中的execute方法处理请求,该方法通常返回一个结果视图。
- 结果呈现:根据Action返回的结果类型,如JSP页面或FreeMarker模板,呈现给用户。
Struts2框架的优势
- 易于维护:MVC设计模式使得代码结构清晰,易于维护。
- 丰富的标签库:Struts2提供丰富的标签库,简化JSP页面开发。
- 强大的拦截器:拦截器提供了数据校验、日志记录等功能。
- 灵活的扩展性:Struts2支持通过插件扩展功能。
Struts2框架的未来趋势
- 人工智能集成:预计Struts2将与AI技术集成,增强数据分析能力。
- 移动端优化:Struts2将加强移动端支持,提升用户体验。
- 云计算应用:Struts2将探索云计算应用,优化资源利用。
Struts2框架的实际应用案例
在实际开发中,Struts2框架常用于处理用户注册、登录、信息发布等业务逻辑。例如,用户提交注册信息后,Struts2框架会拦截请求,根据配置文件找到对应的Action类处理请求,并返回成功或失败的视图。
结论
Struts2框架因其轻量级、灵活性和强大的社区支持,在Java Web开发中占据了重要地位。它不仅简化了开发过程,还提供了丰富的功能和易于维护的代码结构。随着技术的发展,Struts2将继续集成新技术,优化现有功能,以适应不断变化的Web开发需求。
Struts2详细工作流程?
a.浏览器发出welcome.action请求
b.请求到达Struts的Filter控制器(由于web.xml配置)
c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件
d.调用Action组件的execute方法处理请求,最后返回一个String视图标识
e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)
f.调用JSP视图生成响应界面给浏览器显示。
Struts2控制流程?
1)请求到来
2)创建ValueStack(Action放栈顶),进行初始化
3)调用拦截器Interceptor,在拦截器中是可以访问ValueStack的
4)调用Action,执行execute()方法
5)调用Result,Result负责把数据显示给用户
6)最后到页面,通过标记库(Taglib)取出数据
Struts2中常用的集中Result组件?
1)JSP响应
dispatcher :采用请求转发方式调用JSP组件响应。
redirect:采用请求重定向方式调用JSP组件响应。(在重定向后,原request和action都被销毁掉,因此在JSP获取不到值)
2)Action响应
redirectAction:采用重定向方式发出一个*.action请求
chain:采用转发方式发出一个*.action请求
3)流响应
典型功能:验证码和下载。
stream:可以将Action中的一个InputStream类型属性以流方式响应输出。
4)JSON响应
负责对Ajax请求进行数据响应。
json:可以将Action中的一个属性或多个属性以json格式响应输出
(注意:使用前需要引入struts-json-plugin.jar,然后将<package>元素的extends设置成"json-default")