`

Struts1时代 goto Struts 2时代武林霸主变更记

阅读更多

           随着时间推移,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),TapestrySpringMVC等。虽然有那么多武林高手,但是名师出高徒,其中最优秀的还是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应用就让我们拭目以待。

  • 大小: 6.7 KB
  • 大小: 88.4 KB
  • 大小: 11.1 KB
2
2
分享到:
评论

相关推荐

    spring+struts2+mybatis jar包

    标题中的"spring+struts2+mybatis jar包"指的是一个经典的Java企业级应用程序开发框架组合,通常称为SSM框架。这个框架集合了Spring、Struts2和MyBatis三个核心组件,它们各自负责不同的职责,协同工作以构建高效、...

    易语言Goto例程1源码,易语言Goto例程2源码,易语言Goto应用实例:

    易语言Goto跳转模块源码,Goto跳转模块,Goto,GetGotoAddr,FillMemory,CopyMemory,GetModuleFileNameEx,IsBadReadPtr,Goto测试_1,Goto测试_2,测试子程序,循环子程序,SHCreateDirectory

    lua 5.2 中GOTO语句的使用

    if x == 1 then goto lab2 end end ::lab2:: print("x==1") ``` 上述代码会导致错误,因为 `lab2` 的标签不在 `gt2` 函数内。 2. **Label 名称与变量名** - 在 Lua 5.2 中,`label` 的名称可以与变量名...

    大航海时代seraph脚本

    《大航海时代seraph脚本》是针对网络游戏《大航海时代OL》的一款老式脚本,主要用于角色在游戏世界中的自动行走。这个脚本的名字"seraph"可能来源于天使"炽天使",寓意其功能强大或者高效。在游戏社区中,这种自动化...

    php goto加密解密

    1. `goto` 语句: PHP中的`goto`语句始于PHP 5.3版本,其语法结构为 `goto label;`。`label`是程序员定义的一个标识符,用于标记跳转的目标位置。`goto`可以打破程序的常规流程,使得代码可以从一个地方跳转到另一...

    Matlab中的goto函数

    在MATLAB编程环境中,`goto`函数是一种控制流语句,用于实现程序流程的非顺序执行,即跳转到程序中的指定行继续执行。虽然在许多现代编程语言中,`goto`被认为是一种“有害”的编程构造,因为它可能导致代码难以理解...

    if命令IF %ERRORLEVEL% LEQ 1 goto okay

    IF ERRORLEVEL 1 goto okay ``` 这段代码的意思是:如果上一个命令的退出码为1或更高,则跳转到 `okay` 标签处执行后续命令。 ##### 2. `string1==string2` 这个条件用于检查两个字符串是否相等。格式如下: ```...

    360安全管理员软件

    >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代码分析工具

    "goto1/2代码分析工具"是一款专门用于分析和理解含有`goto`语句的程序的工具。在软件开发中,`goto`语句是一种跳转指令,它允许程序无条件地从一处跳转到另一处,这在某些场景下可以提供一定的灵活性,但在结构化...

    goto解密程序php源码,直接上传即可解密goto加密的代码

    php goto解密源码,无需数据库,直接上传即可使用。亲测可解php的goto加密方式

    VB GoTo语句用法实例

    如果在循环中执行GoTo Label1,程序会立即跳转到Label1标签处,从而跳出循环。 3. 复杂条件分支:在多层条件判断中,GoTo可以简化逻辑,但通常有更好的替代方案,如Select Case语句。 三、GoTo语句的优点与缺点 ...

    php goto解密脚本源码

    1. **输入解析**:接收加密数据,可能是从文件、数据库或其他来源获取。 2. **解密函数**:包含实际的解密算法,可能涉及加解密库如OpenSSL、mcrypt(尽管mcrypt已在PHP 7.2中废弃)或其他自定义实现。 3. **控制...

    goto for python模块:在Python中支持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

    goto解密PHP源码.zip

    2. `.htaccess`:这是Apache服务器的配置文件,与Nginx类似,可能用于限制对源码的访问或执行特定的重写规则。 3. `index.php`:这是Web应用程序的入口文件,可能包含调用解密函数的代码,或者是一个展示解密过程的...

    goto高性能解密2021.zip

    在某些复杂的代码逻辑中,goto语句可能会被用到,但它在编程界一直存在争议,因为它可能导致程序结构混乱,不易维护。然而,对于已经使用了goto的加密PHP源码,解密过程可能会比普通代码更复杂,因为需要正确还原...

    SLR(1).rar_SLR(1) 表 C++_SLR(1)文法C++_SLR(1)的GOTO_action表和goto表_sl

    SLR(1)分析表是一种在编译器设计中用于解析输入语法的工具,它基于上下文无关文法。SLR代表“简单左递归”(Simple Left Recursion)和“1个符号看前”(1 item look-ahead)。在这个方法中,我们构建两个关键表格:...

    EXIT 与 GOTO :EOF 在批处理中的区别

    在批处理编程中,`EXIT` 和 `GOTO :EOF` 是两个经常被用来控制流程的命令,它们各自有特定的用途和效果。理解这两者的区别对于编写有效的批处理脚本至关重要。 首先,我们来看 `EXIT` 命令。在DOS或Windows的批处理...

    最新款goto解密工具源码,PHP加密解密反编译工具

    1. **加密**:加密是一种信息安全技术,通过特定的算法将明文(可读数据)转换为密文(不可读数据),以防止非授权用户获取敏感信息。在PHP中,常用的加密方法有:MD5、SHA系列、AES、DES等。这款工具可能使用了某种...

    一款goto在线解源码,PHP源码解密工具

    然而,在解密场景下,"goto"可能是指一种特定的解密策略,即利用"goto"语句来跳转到解密后的代码段,实现代码的正确执行。这种策略可能用于某些加密算法,尤其是当加密后的代码包含复杂的控制流时。 描述中提到的...

Global site tag (gtag.js) - Google Analytics