初识Struts2框架
来源:互联网 发布:nginx实现负载均衡 编辑:程序博客网 时间:2024/06/06 16:26
Struts2是整合了当前动态网站开发中的Servlet、JSP、JavaBean、JDBC、XML等相关技术的一种主流Web开发框架,是一种基于经典MVC的框架。它把Java Web应用程序分为(1)控制器层,包括核心控制器FilterDispatcher和业务控制器Action;(2)模型层,包括业务逻辑组件和数据库访问组件;(3)视图层,包括HTML、JSP、Struts2的标签等。
下面分别介绍Struts2的核心组件:
一、控制器组件
1、FilterDispatcher控制器
基于MVC的Java Web框架需要在Web应用程序中加载一个核心控制器,Struts2框架需要加载的是FilterDispatcher。FilterDispatcher是一个过滤器,是Struts2的核心控制器,控制着整个Java web项目中数据流的流向和操作。如果用户请求以action结尾,该请求将被转入Struts2框架处理。然后根据*.action的前面部分决定调用哪个业务控制组件,例如,对于login.action请求,Struts2调用名为login的Action来处理。FilterDispatcher需要在web.xml中进行配置。此外,Struts2控制数据时,还需要用到另外一个配置文件struts.xml。
2、struts.xml配置文件
Struts2的核心配置文件是struts.xml。用户请求提交给核心控制器FilterDispatcher后,具体由哪个业务控制器Action来完成,是在struts.xml配置文件中事先配置好的,根据配置文件struts.xml中的数据,核心控制器FilterDispatcher调用某个具体的业务控制器Action来完成数据的处理,处理完数据后把处理结果通过其他对象返回给核心控制器FilterDispatcher,核心控制器根据struts.xml配置文件中的配置,决定下一步操作。
3、Action控制器
开发基于Struts2的Java Web应用项目时,Action是数据处理的核心,需要编写大量的Action类,并在struts.xml文件中配置Action。Action类中包含了对用户请求的处理逻辑,因此也把Action称为Action业务控制器。Action就是一个普通的Java类,该类不要求继承任何Struts2的父类,后者实现任何Struts2的接口,但是为了简化项目开发可以继承ActionSupport类。Action中不实现任何业务逻辑,只负责组织调度业务模型组件。
Struts2的Action类具有如下优势。
(a)Action类完全是一个简单的Java对象,实际上就是一个普通的JavaBean,所以Action具有良好的代码重用性。
(b)Action类无须与Servlet API关联,降低了与Servlet的耦合度,所以应用和测试比较简单。
(c)Action类的excute()方法仅返回一个字符串作为处理结果,该处理结果可传到任何一个视图或另外一个Action。
二、Struts2的模型组件
模型组件是可以实现业务逻辑的模块,如JavaBean、POJO或者EBJ。实际的项目开发中,对模型组件的区别和定义比较模糊。Struts2框架的业务控制器不会对用户请求进行实质的处理,用户请求最终由模型组件负责处理,业务控制器只是提供处理场合,是负责调度模型组件的调度器。当业务控制器需要获得业务逻辑组件实例时,通常并不会直接获取业务逻辑组件实例,而是通过工厂模式来获取业务逻辑组件的实例,或者用其他IoC容器(如Spring)来管理业务逻辑组件的实现。
三、Struts2的视图组件
Struts2视图组件除了有HTML、JSP、Struts2标签之外,还可以采用模板技术作为视图技术,如FreeMarker、Velocity等视图技术。
- 初识Struts2框架
- 初识Struts2框架
- struts2框架初识
- 框架(一)struts2——初识
- 初识框架之struts2(一)
- 初识框架之struts2(二)
- [Struts2]初识框架/表单提交数据/struts2配置
- struts2 初识
- 初识Struts2
- 初识struts2
- 初识struts2
- 初识Struts2
- Struts2初识
- 初识Struts2
- Struts2初识
- Struts2初识
- 初识Struts2
- 初识 Struts2
- [C#]浅谈协变与逆变
- Java 工厂模式
- CI框架ajax方式post数据时加上csrf验证
- Hibernate SQLQuery 原生SQL 查询及返回结果集处理-1
- 使用红杏代理更新AndroidSDK
- 初识Struts2框架
- eclipse打开文件所在的本地文件夹
- Android获取屏幕分辨率及DisplayMetrics简介
- VM虚拟机中的Ubuntu设置固定IP上网图文教程
- [leetcode] House Robber II
- Java-核心技术总结-第3章
- 又安上了好多otherthings.......
- SOA面向服务架构的一些思考
- 《Pro Ogre 3D Programming》读书笔记 之 第十一章 动态阴影