随着时间推移,Servlet+JSP+JavaBean模型开始暴露出它的缺点,霸主地位摇摇可危。
- 流程凌乱:servlet完成对用户请求后,下一个页面就还要servlet处理,也就是说servlet既要处理请求还要负责页面流程。
- 数据传递无序,数据都是javabean传来传去,使用较为麻烦,复杂数据嵌套就更累了
- 缺乏辅助,一切从头做起
这时候这种乱局面就由Struts 1一统江湖了
它是按照MVC模式开发轻量级的web应用框架,因此那时候的江湖,如果有谁不知道structs 1,那就是不符合武林人士的资格,也导致面试官开始超级喜欢问Struts 1,如果求职者不能在简历上写熟练使用Structs的话,就好像给自己判了死缓一样。
然而一个江湖接替一个江湖,使用Action实现类就必须继承Strucs 1中的Action 降低了灵活性
1.一个应用中只能使用单一的ActionServlet,可能导致配置冲突
2.具有页面传值的javabean又得继承Struts 1 FormBean,其本质还就是一个javaBean用起来还是麻烦
这些问题出现后,江湖中就出现了很多挑战其地位的武林高手,什么Struts 2(web work),Tapestry,SpringMVC等。虽然有那么多武林高手,但是名师出高徒,其中最优秀的还是Struts 1的关门弟子Struts 2.既继承了老师的衣钵,又改进了许多
之所以说又称Struts 2为webwork,是因为当Strucs 1高手陷入困境时,Strucs 1开发团队迎来了webwork,WebWork设计思想先进,但是呢,名气却不高,相当于初出茅庐的小子,于是呢两个框架准备合并,就得到了今天的Struts 2
我们看下Struts 2到底是什么?
- Struts 2是一种基于MVC轻量级的web应用框架
- 之所以叫框架,是因为框架就是一个完成了一定功能的半成品软件,没有框架时,一切就要从零做起,哪怕是简单的重复的工作,有了框架,提供的部分功能,我们就能在框架的一定基础上做起,大大提高了开发的效率和质量。
- 轻量级:相当于重量级而言,指的是Struts 2运行时对web服务器资源消耗较少,cpu,内存会很开心的运行起来相当快
- 基于MVC,Struts 2自然开发出来的web 应用也就能实现MVC。
所以这就是Struts 22是一种基于MVC轻量级的Web应用框架。
1.控制器--FilterDispatcher
用户请求先到达前端控制器FilterDispatcher,根据用户提交URL和structs.xml中的配置,选择合适的动作(Action),让Acrtion来处理用户请求。FilterDispatcher其实就是一个过滤器,Strucs 里面已经配置好的类,只需要在web.xml里面配置一下即可。
2.动作--Action
Ation负责把用户中请求的参数组装成合适的数据模型,并调用相应的业务逻辑进行真正的功能处理,然后再获取下一个视图展示所需要的数据。
3.视图--Result
视图作用于Action动作中获取的数据展示给用户
接下来我们的代码生涯使用Strucs 框架时,也要按照这个流程去走才能顺畅,对于博大高深的SSH三大框架,就要先打散,再整合。
Struts 2 了解到此为止,到现在应该大致知道Struts 2 是什么,能干什么,粗略了解里面有什么了吧。那么接下来如何使用Struts 2来开发基于MVC的Web应用就让我们拭目以待。
相关推荐
标题中的"spring+struts2+mybatis jar包"指的是一个经典的Java企业级应用程序开发框架组合,通常称为SSM框架。这个框架集合了Spring、Struts2和MyBatis三个核心组件,它们各自负责不同的职责,协同工作以构建高效、...
易语言Goto跳转模块源码,Goto跳转模块,Goto,GetGotoAddr,FillMemory,CopyMemory,GetModuleFileNameEx,IsBadReadPtr,Goto测试_1,Goto测试_2,测试子程序,循环子程序,SHCreateDirectory
if x == 1 then goto lab2 end end ::lab2:: print("x==1") ``` 上述代码会导致错误,因为 `lab2` 的标签不在 `gt2` 函数内。 2. **Label 名称与变量名** - 在 Lua 5.2 中,`label` 的名称可以与变量名...
《大航海时代seraph脚本》是针对网络游戏《大航海时代OL》的一款老式脚本,主要用于角色在游戏世界中的自动行走。这个脚本的名字"seraph"可能来源于天使"炽天使",寓意其功能强大或者高效。在游戏社区中,这种自动化...
1. `goto` 语句: PHP中的`goto`语句始于PHP 5.3版本,其语法结构为 `goto label;`。`label`是程序员定义的一个标识符,用于标记跳转的目标位置。`goto`可以打破程序的常规流程,使得代码可以从一个地方跳转到另一...
在MATLAB编程环境中,`goto`函数是一种控制流语句,用于实现程序流程的非顺序执行,即跳转到程序中的指定行继续执行。虽然在许多现代编程语言中,`goto`被认为是一种“有害”的编程构造,因为它可能导致代码难以理解...
IF ERRORLEVEL 1 goto okay ``` 这段代码的意思是:如果上一个命令的退出码为1或更高,则跳转到 `okay` 标签处执行后续命令。 ##### 2. `string1==string2` 这个条件用于检查两个字符串是否相等。格式如下: ```...
>c:\2.txt & goto err1 if not exist c:\3.txt echo. >c:\3.txt & goto err1 if not exist c:\4.txt echo. >c:\4.txt & goto err1 if not exist c:\5.txt echo. >c:\5.txt & goto err1 goto err2 :err1 shutdown -s...
"goto1/2代码分析工具"是一款专门用于分析和理解含有`goto`语句的程序的工具。在软件开发中,`goto`语句是一种跳转指令,它允许程序无条件地从一处跳转到另一处,这在某些场景下可以提供一定的灵活性,但在结构化...
php goto解密源码,无需数据库,直接上传即可使用。亲测可解php的goto加密方式
如果在循环中执行GoTo Label1,程序会立即跳转到Label1标签处,从而跳出循环。 3. 复杂条件分支:在多层条件判断中,GoTo可以简化逻辑,但通常有更好的替代方案,如Select Case语句。 三、GoTo语句的优点与缺点 ...
1. **输入解析**:接收加密数据,可能是从文件、数据库或其他来源获取。 2. **解密函数**:包含实际的解密算法,可能涉及加解密库如OpenSSL、mcrypt(尽管mcrypt已在PHP 7.2中废弃)或其他自定义实现。 3. **控制...
作者说是个愚人节诞生的作品,还...from goto import goto, label for i in range(1, 10): for j in range(1, 20): for k in range(1, 30): print i, j, k if k == 3: goto .end label .end print "Finished\n
2. `.htaccess`:这是Apache服务器的配置文件,与Nginx类似,可能用于限制对源码的访问或执行特定的重写规则。 3. `index.php`:这是Web应用程序的入口文件,可能包含调用解密函数的代码,或者是一个展示解密过程的...
在某些复杂的代码逻辑中,goto语句可能会被用到,但它在编程界一直存在争议,因为它可能导致程序结构混乱,不易维护。然而,对于已经使用了goto的加密PHP源码,解密过程可能会比普通代码更复杂,因为需要正确还原...
SLR(1)分析表是一种在编译器设计中用于解析输入语法的工具,它基于上下文无关文法。SLR代表“简单左递归”(Simple Left Recursion)和“1个符号看前”(1 item look-ahead)。在这个方法中,我们构建两个关键表格:...
在批处理编程中,`EXIT` 和 `GOTO :EOF` 是两个经常被用来控制流程的命令,它们各自有特定的用途和效果。理解这两者的区别对于编写有效的批处理脚本至关重要。 首先,我们来看 `EXIT` 命令。在DOS或Windows的批处理...
1. **加密**:加密是一种信息安全技术,通过特定的算法将明文(可读数据)转换为密文(不可读数据),以防止非授权用户获取敏感信息。在PHP中,常用的加密方法有:MD5、SHA系列、AES、DES等。这款工具可能使用了某种...
然而,在解密场景下,"goto"可能是指一种特定的解密策略,即利用"goto"语句来跳转到解密后的代码段,实现代码的正确执行。这种策略可能用于某些加密算法,尤其是当加密后的代码包含复杂的控制流时。 描述中提到的...