随着时间推移,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包
易语言Goto跳转模块源码,Goto跳转模块,Goto,GetGotoAddr,FillMemory,CopyMemory,GetModuleFileNameEx,IsBadReadPtr,Goto测试_1,Goto测试_2,测试子程序,循环子程序,SHCreateDirectory
IF [NOT] string1==string2 command IF [NOT] EXIST filename command NOT 指定只有条件为 false 的情况下, Windows XP 才 应该执行该命令。 ERRORLEVEL number 如果最后运行的程序返回一个等于或大于 指定...
>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...
php goto解密源码,无需数据库,直接上传即可使用。亲测可解php的goto加密方式
php goto加密解密
作者说是个愚人节诞生的作品,还...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
VB GoTo语句用法实例 VB GoTo语句用法实例
2 需要解析的文件放到decodeFile下 解析至complete下 3 解析的可以是多个文件,不能放置文件夹 4 配置运行环境,执行index.php就可以 5 如果出现类似 ' Maximum function nesting level of '256' reached, ...
goto解密PHP源码解密程序源码 一款goto在线解源码,PHP源码解密。
Matlab goto 函数,实现了在MATLAB中的行数转移执行效果,特定情况下具有极高效率
lua 5.2 中GOTO语句的使用lua 5.2 中GOTO语句的使用
最新款goto解密工具源码,PHP加密解密反编译工具
//单片机实现10路秒表程序流程 1:系统初始化; 2:等待键盘按键,启动秒表; 3:若键盘有按键且不是回车键,记录当前时间 ... 若是复位键,复位系统 goto 1: 若是暂停键,goto 1: 若是退出键,退出系统;
1、UI库 UI库时使用WTL为基础架构的充分考虑自绘和无窗口模式设计开发的,同时兼顾两者使用,Goto由于关注的是搜索功能,所以使用前面的设计,因为开发库是要很长时间的,个人短时间很难完成。 2、XLib库,主要是...
Goto是一款运行于Windows系统,功能强大的桌面搜索软件。目前支持快速启动、磁盘文件搜索、插件、Web搜索、换肤和本地化配置
一句代码解决On error goto line 多次使用的问题 .txt On error goto line 错误跳转语句只能使用一次 本代码只需要加一句即可重复使用错误跳转 On error goto line VBA错误跳转多次使用的问题 On error goto 0 ...
On Error GoTo的应用(VB6.0源代码编写)If Text2.Text <> "" And Text1.Text <> "" Then On Error Resume Next Text3.Text = CInt(Text1.Text) + CInt(Text2.Text) End If
1.谐波GOTO赤道仪制作说明1
易语言goto跳转模块,可以模仿其他语言的goto,易语言本身不带goto