写点什么

Struts 学习笔记 1 -Struts Framework 概览,BAT 面试 & 高级进阶

  • 2021 年 11 月 10 日
  • 本文字数:2511 字

    阅读完需:约 8 分钟

Tuesday, January 21 2003 11:06 AM<table><tbody><tr><td class="text1"><p></p><div>Struts 开始于 2000 年 3 月,1.0 在 2001 年 7 月发布。采用 Struts 能开发出基于 MVC(Model-View-Controller)设计模式的应用构架。MVC 设计模式把一个系统分成 3 个相互协调的部分:<br><p></p><table cellspacing="0" cellpadding="0" width="0" align="right" border="0"><tbody><tr><td><script language=JavaScript1.1 src="http://ad.cn.doubleclick.net/adj/messagingplus.zdnet.com.cn/developer/tech;sz=1x1;ord=410130982?"> </script><center><img height="15" src="http://www.zdnet.com.cn/ads/image/advert_mu_stat.gif" width="336"></center><script language=VBScript> on error resume next ShockMode = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) </script><noscript><a href="http://ad.cn.doubleclick.net/click%3Bh=v2|%20rel=" target="_blank" rel="noopener noreferrer"><img src="http://m2.cn.doubleclick.net/649284/net_MPU.gif" width="468" height="60" border="0"></a></noscript><noscript><a href="http://ad.cn.doubleclick.net/jump/messagingplus.zdnet.com.cn/developer/tech;sz=1x1;ord=410130982?"><img src="http://ad.cn.doubleclick.net/ad/messagingplus.zdnet.com.cn/developer/tech;sz=1x1;ord=410130982?" border="0"></a></noscript></td></tr></tbody></table><p><b>Model</b><b>(模型)</b><br>模型用于封装系统的状态<br><br><b>View</b><b>(视图)</b><br>是模型的表示,提供用户交互界面。当模型状态发生变化时,视图应该得到通知,以便更新视图。<br><br><b>Controller</b><b>(控制器)</b><br>接受来自视图的请求,修改模型的状态。<br><br>在基于 JSP/Servlet 的 Web 应用中要使用 MVC 模式,需要解决一个问题。我们知道,HTTP 的底层是 TCP/IP 协议,而 TCP/IP 是一种无状态连接的协议,那么如果我们的模型发生了变化,就无从通知视图。Struts 采用了在“JSP 规范 v0.92”中提到的 MVC Model 2,这是对 MVC 在 Web 上应用的修订版。图示如下:</p><p><img alt="" align="baseline" border="0" src="https://blog.csdn.net/"></p><p>图表 1:MVC Model 2(From Malcolm Davis)<br><br>Struts 应用有 3 个主要部件:一个 Servlet Controller(由 Struts 提供,org.apache.action.ActionServlet,以下简称 controller)及负责具体业务处理的 Action 类(org.apache.action.Action 的基类);Jsp 页面(viewer);应用的业务逻辑封装(model)。Struts 的中心控制器(ActionServlet)接受所有来自客户端的请求,并根据系统的配置(Struts-config.xml)路由 HTTP 请求到其他 Action 对象(开发者实现的 org.apache.struts.action.Action 的子类),在这些 Action 对象中会进行所有的业务操作,比如插入一条订单,修改一条记录。处理完毕,由 Struts 的 ActionServlet 转向到 JSP 页面,将处理结果返回给客户端。从这儿可以看出在 Struts 中 ActionServlet 担任了重要的角色,由它控制所有的程序流转,是 MVC


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


三个相对独立的部分协调工作,提供系统的完善功能。从下图可见 Struts 是 MVC Model 2 的一个典型应用。<br><img alt="" align="baseline" border="0" src="https://blog.csdn.net/"></p><p>图表 2:Struts 工作机理(From Malcolm Davis)<br>在 Struts 启动时,controller 会读入一个配置文件 struts-config.xml,其中定义了前端请求的 url 与相应的 Action 类及使用的 Form 类的映射关系,下面是一个 struts-config.xml 中的片断:</p><pre><br><action    path="/logon"<br>       type="org.apache.struts.webapp.example.LogonAction"<br>       name="logonForm"<br>       scope="request"<br>       input="/logon.jsp"><br></action></pre><p></p><table cellspacing="0" cellpadding="0" width="0" align="right" border="0"><tbody><tr><td><script language=JavaScript1.1 src="http://ad.cn.doubleclick.net/adj/messagingplus.zdnet.com.cn/developer/tech;sz=1x1;ord=993129533?"> </script><center><img height="15" src="http://www.zdnet.com.cn/ads/image/advert_mu_stat.gif" width="336"></center><script language=VBScript> on error resume next ShockMode = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) </script><noscript><a href="http://ad.cn.doubleclick.net/click%3Bh=v2|%20rel=" target="_blank" rel="noopener noreferrer"><img src="http://m2.cn.doubleclick.net/649284/net_MPU.gif" width="468" height="60" border="0"></a></noscript><noscript><a href="http://ad.cn.doubleclick.net/jump/messagingplus.zdnet.com.cn/developer/tech;sz=1x1;ord=993129533?"><img src="http://ad.cn.doubleclick.net/ad/messagingplus.zdnet.com.cn/developer/tech;sz=1x1;ord=993129533?" border="0"></a></noscript></td></tr></tbody></table><p>从中可以看出,这个 action 会响应 url 类似于/logon 的请求(在后面我们会看到,这儿的实际的 url 要根据在 web.xml 中配置,比如可能为/logon.do 或/logon.other 之类的带后缀的 url),负责处理这个请求的 action 类是 org.apache.struts.webapp.example.LogonAction,使用的 FormBean 是 logonForm,scope 界定了这个 FormBean 存在的范围是只在当前 request 中存在。<br></p><p>struts 会读入这些设置,生成相应的 org.apache.action.ActionMapping 对象。controller 正是使用这些 mapping 来把 HTTP 请求转发到应用的 actions。一个 ActionMapping 指定了</p><ul type="disc"><li>一个请求 URI</li><li>对应的类(Action 的子类)</li><li>需要的属性</li></ul><p><br>对于一个 DB 应用,</p><ul type="disc"><li>一个商业逻辑 Bean 用于连接、查询数据库</li><li>这个 Bean 返回结果到 Action</li><li>Action 将这些结果存储到 request 的 form bean 中</li><li>Jsp 显示</li></ul></div></td></tr></tbody></table>

评论

发布
暂无评论
Struts 学习笔记1 -Struts Framework 概览,BAT面试&高级进阶