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 ...
随机推荐
- 异地远程访问群晖NAS中的文件
异地远程访问群晖NAS中的文件 我以群晖DS720+网络存储服务器为例,介绍我是如何异地远程访问群晖NAS中的文件的. 此文章只介绍部署操作的大概步骤,具体的操作方法和技巧可以在西瓜视频.抖音 ...
- Mybatis学习笔记-配置解析
核心配置文件 mybatis-config.xml properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFa ...
- 洛谷P2962题解
题面 看到 \(n \leq 35\) ,这是一个非常小的数据,但是 \(O(2^n)\) 的暴力跑不过去,所以考虑玄学做法 \(\text{Meet in Middle}\) .就是先做左边,然后做 ...
- 寄生线虫免疫学研究新路径!华中农业大学胡敏团队报道寄生线虫N-糖基化修饰图谱
N-糖基化修饰是真核生物中一种重要的蛋白质翻译后修饰,在许多生物学过程中起着关键作用,包括蛋白质折叠.受体-配体相互作用.免疫应答和疾病发病机制等.近年来,高精度质谱技术的出现促进了糖组和糖蛋白质组的 ...
- 月薪60k,仍无人问津,腾讯阿里到底有多缺这类程序员?
不知道大家发现没,近几年,国内对音视频人才需求越来越大了,在某招聘网站上居然薪酬高达60k. 从未来的大趋势来看,随着5G时代的到来,音视频慢慢变成人们日常生活中的必须品.除了在线教育.音视频会议.即 ...
- Docker部署ELK之部署elasticsearch7.6.0(1)
1. 拉取elasticsearch7.6.0镜像: sudo docker pull elasticsearch:7.6.0 2. 输入命令,构建容器: sudo docker run --name ...
- 快速上手CH340N电路设计(CH340N USB转串口模块 USB Type-C接口 CH340系列芯片讲解)
一.上模块 二.功能分析 l 芯片:CH340N l 输入接口:USB.TYPE-C l 输出接口:TTL(5V\3.3V\GND\TX\RX) l 指示灯:电源.TX.RX ...
- DVWA靶场之Brute Force(暴破)通关
DVWA最经典PHP/MySQL老靶场,简单回顾一下通关流程吧 DVWA十大金刚,也是最常见的十种漏洞利用:Brute Force(暴破).Command Injection(命令行注入).CSRF( ...
- 【现学现卖】th:href标签动态路径设置,thymeleaf获取session中的属性值
update:2020-02-28:按道理来说这个功能在前后端分离的时候应该不怎么用的上,基本到现在我还是没遇到过有这样的需求,不过也是一种方法就是.th:href="@{/{role}/l ...
- P5038 奇怪的游戏
题目询问了一个不能确定的时间,所以显然做法中要包含一个二分答案. 我们将整张图分为黑白点两种,黑点旁边的点就是白点,白点旁边的点就是黑点,想一下就能知道,每次操作会使黑白点的数字各加一,而我们的目的就 ...