Structs2的作用是什么??
struts2是一种重量级的框架,位于MVC架构中的controller,可以分析出来,它是用于接受页面信息然后通过内部处理,将结果返回。
同时struts2也是一个web层的MVC框架,那么什么是struts2中的MVC呢?
我们可以联想一下struts2的使用流程,我们需要先通过过滤器,调用URL判断使用哪个Action,再由Action决定返回结果,继而 提交请求。那么这就构成了一个MVC架构,由过滤器(Controller)控制选择动作Action(Model),获得结果Result(View),向控制器提交请求。
所以从宏观架构的角度来讲,struts2就是联系了模型层和视图层,将用户要求按照业务逻辑执行并且返回结果。
简要概括一下它的作用,无非在于传递参数,将请求发送给合适的控制器,在控制器中调用业务接口,最后将业务接口返回的结果返回给指定的视图。
但是说了这么多,我们还没有看到struts2的优越之处,所以我们为什么要选择他作为控制层呢?这里我们需要了解一下,在struts2框架出现之前,我们是使用sevlet来进行操作的,也就是说struts2是淘汰掉了servlet,那么让我们来做一个对比。
我们主要从三方面来对比:
①配置:当我们配置servlet的时候,我们需要在web.xml中配置很多,也就是说一个servlet我们就需要配置一段代码,这样不仅会导致web.xml中的代码过于繁多,并且不利于分组开发,需要手动配置二级的URL-PATTERN。
而在使用struts2的时候就很好的解决了这个问题,我们引用专门的XML文件,配置package属性和action属性,大大增加了配置代码的可读性,而且结构层次清晰,提升了分组开发的效率。
②测试:当我们需要测试我们的代码的时候,使用servlet的我们必须要配置两个与容器相关的参数,HttpServletResponse和HttpServletRequest,这样就会增加我们的工作量,而struts2则可以很好的独立完成单元测试。
③传参:每次传参的时候,使用servlet我们就必须手动操作作用域,如果serlvet方法非常多的情况下,就会很大程度上影响开发,在struts2中,我们的默认过滤器栈中自带了自动收参的方法,极大的便利了我们的开发。
在其他的方面其实struts2也有很大的优势,比如全局异常的设置比如拦截器的配置比如...
简要概括使用流程:
①导入jar包
②配置核心过滤器
③创建Action,书写代码并配置返回值
④配置配置文件
总结一下struts2的好处:
struts2将应用分层,使产品结构清晰,能够减少代码的维护量,同时能够使开发人员分层实现,也就是说Java程序员可以只专注于业务逻辑的实现
项目开源,使用及扩展方便
提供了强大的全局异常处理机制;
Result方式的页面导航,通过 Result 标签很方便的实现重定向和页面跳转;
通过简单、集中的配置来调度业务类,使得配置和修改都非常容易;
提供简单、统一的表达式语言来访问所有可供访问的数据(OGNL);
提供标准、强大的验证框架和国际化框架;
提供多种表现层的技术支持和页面标签,大大简化开发;
拥有简单的插件,只需要放入响应的 jar 包,任何人都可以扩展 Struts2 框架,比如:
自定义拦截器、自定义结果类型、自定义标签等,为 Struts2 定制需要的功能,不需要什么特殊的配置,并且可以发布给其他人使用。
拥有智能的默认设置,不需要另外进行繁琐的设置。使用默认设置就可以完成大多数项目程序开发所需的功能。
原文链接:struts2的作用是什么 - 双间 - 博客园 (cnblogs.com)
Structs2的作用是什么??的更多相关文章
- Structs2中Action返回json到前台方法
1.传统方式JSON输出 这一点跟传统的Servlet的处理方式基本上一模一样,代码如下 01 public void doAction() throws IOException{ 02 ...
- springmvc与Structs2本质区别
1.前端控制器不同:structs2入口是一个filter过滤器,springmvc入口是一个servlet. 2.设计思想不同: struts2通过在action类中定义成员变量接收请求参数,str ...
- 【web开发学习笔记】Structs2 Result学习笔记(一)简介
Structs2 Result学习笔记(一)简介 问题一 <struts> <constant name="struts.devMode" value=" ...
- if __name__== "__main__" 的意思(作用)python代码复用
if __name__== "__main__" 的意思(作用)python代码复用 转自:大步's Blog http://www.dabu.info/if-__-name__ ...
- (转载)linux下各个文件夹的作用
linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ...
- github中的watch、star、fork的作用
[转自:http://www.jianshu.com/p/6c366b53ea41] 在每个 github 项目的右上角,都有三个按钮,分别是 watch.star.fork,但是有些刚开始使用 gi ...
- web.xml中welcome-file-list的作用
今天尝试使用struts2+ urlrewrite+sitemesh部署项目,结果发现welcome-file-list中定义的欢迎页不起作用: <welcome-file-list> & ...
- web.xml中load-on-startup的作用
如下一段配置,熟悉DWR的再熟悉不过了:<servlet> <servlet-name>dwr-invoker</servlet-name> <ser ...
- SQLSERVER中NULL位图的作用
SQLSERVER中NULL位图的作用 首先感谢宋沄剑提供的文章和sqlskill网站:www.sqlskills.com,看下面文章之前请先看一下下面两篇文章 SQL Server误区30日谈-Da ...
随机推荐
- ArrayList 源码底层实现解析 基于1.8
ArrayList 介绍 ArrayList是一种线性数据结构,它的底层是用数组实现的,是动态数组.与Java中的数组相比,它的容量能动态增长.源代码里有解释.当创建一个数组的时候,就必须确定它的大小 ...
- Python开发篇——基于React-Dropzone开发上传组件
这次我要讲述的是在React-Flask框架上开发上传组件的技巧.我目前主要以React开发前端,在这个过程中认识到了许多有趣的前端UI框架--React-Bootstrap.Ant Design.M ...
- Linux部署达梦数据库(完全版)
环境准备 数据库下载去http://www.dameng.com 1.下载好达梦数据库iso上传(通过xftp)到你自己存在的目录(/opt) 2.将你上传的iso文件挂载到其它的目录下面(mount ...
- [TcaplusDB知识库]数据库支撑底盘引擎计算层介绍
在上次的TcaplusDB知识库中,TcaplusDB君为大家讲解了TcaplusDB所用的基于HASH表的Key-value存储引擎TXHDB.存储引擎作为数据库的支撑底盘,其重要性无可置疑,而在本 ...
- NOIP 模拟 $24\; \rm block$
题解 \(by\;zj\varphi\) 因为它要求大于它的且放在它前的数的个数要小于它的 \(key\) 值,所以先按 \(\rm val\) 值排序,然后按 \(\rm key\) 值排序,按顺序 ...
- Maven在IDEA中的日常使用
1.为什么使用MavenMaven是我们在开发过程中常用的工具,主要用途有两种:1)方便的下载jar包2)项目打包接下来以windows操作系统为例,介绍一下Maven在IDEA中如何设置和常用的功能 ...
- Centos7上安装rabbitmq和使用
github rpm地址: https://github.com/rabbitmq/erlang-rpm 要安装rabbitmq先安装它的语言 创建erlang repo /etc/yum.repos ...
- RabbitMQ 安装与配置管理
rabbitmq安装 1. 安装erlang yum install erlang xmlto 2. 安装rabbitmq rpm包 #wget http://www.rabbitmq.com/rel ...
- 【转】CAP定理的含义
转自:https://blog.csdn.net/pengjunlee/article/details/86517935 1998年,加州大学的计算机科学家 Eric Brewer 提出了分布式系统的 ...
- sizeof()和 strlen()的区别 --- 个人笔记
在学习C语言和linux的时候,遇到了一些常见问题.题目,有些很简单,有些容易出错,本人水平有限,未免会出错,今天有时间,就将以前做的笔记,一一拿出来,写写blog. sizeof()和 strlen ...