Struts 学习笔记1 -Struts Framework 概览

原创 2007年09月29日 13:48:00

struts开始于2000年3月,1.0在2001年7月发布。采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。MVC设计模式把一个系统分成3个相互协调的部分:

Model(模型)
模型用于封装系统的状态

View(视图)
是模型的表示,提供用户交互界面。当模型状态发生变化时,视图应该得到通知,以便更新视图。

Controller(控制器)
接受来自视图的请求,修改模型的状态。

在基于JSP/Servlet的Web应用中要使用MVC模式,需要解决一个问题。我们知道,HTTP的底层是TCP/IP协议,而TCP/IP是一种无状态连接的协议,那么如果我们的模型发生了变化,就无从通知视图。Struts采用了在“JSP规范 v0.92”中提到的MVC Model 2,这是对MVC在Web上应用的修订版。图示如下:


图表 1:MVC Model 2(From Malcolm Davis)

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三个相对独立的部分协调工作,提供系统的完善功能。从下图可见Struts是MVC Model 2的一个典型应用。
 

图表 2:Struts工作机理(From Malcolm Davis)

在Struts启动时,controller会读入一个配置文件struts-config.xml,其中定义了前端请求的url与相应的Action类及使用的Form类的映射关系,下面是一个struts-config.xml中的片断:
  1.  
  2.     <action    path="/logon"
  3.                type="org.apache.struts.webapp.example.LogonAction"
  4.                name="logonForm"
  5.               scope="request"
  6.               input="/logon.jsp">
  7.     </action>


从中可以看出,这个action会响应url类似于/logon的请求(在后面我们会看到,这儿的实际的url要根据在web.xml中配置,比如可能为/logon.do或/logon.other之类的带后缀的url),负责处理这个请求的action类是org.apache.struts.webapp.example.LogonAction,使用的FormBean是logonForm,scope界定了这个FormBean存在的范围是只在当前request中存在。
struts会读入这些设置,生成相应的org.apache.action.ActionMapping对象。controller正是使用这些mapping来把HTTP请求转发到应用的actions。一个ActionMapping指定了
  • 一个请求URI
  • 对应的类(Action的子类)
  • 需要的属性

对于一个DB应用,
  • 一个商业逻辑Bean用于连接、查询数据库
  • 这个Bean返回结果到Action
  • Action将这些结果存储到request的form bean中
  • Jsp显示
 

Struts 学习笔记1 -Struts Framework 概览

struts开始于2000年3月,1.0在2001年7月发布。采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。MVC设计模式把一个系统分成3个相互协...
  • Explorerwen
  • Explorerwen
  • 2004年10月28日 16:47
  • 525

Struts 学习笔记1 -Struts Framework 概览

作者: bruce -- Java研究组织Tuesday, January 21 2003 11:06 AM Struts开始于2000年3月,1.0在2001年7月发布。采用Struts能开发出基于...
  • whirlwind526
  • whirlwind526
  • 2003年05月08日 14:02
  • 549

用intellij 搭建struts框架完成基本的功能。

创建一个struts工程,其实挺简单,这个软件已经不需要我们自己导包,写配置文件。 项目的选择: 进来后的文件是这些: 设置tomcat,设置后确定 进入proj...
  • sinat_32176267
  • sinat_32176267
  • 2017年04月27日 19:46
  • 207

Struts学习笔记:Struts Framework工作原理

首先说一下Framework的概念:人们用于解决相同或者相似类型问题的方案 特点:可重用行,可扩展性,可收缩性 基于请求响应模式的应用framework的逻辑结构: 1,控制层; 2,业务逻辑...
  • duancanmeng
  • duancanmeng
  • 2012年08月21日 18:14
  • 1842

Struts学习笔记1-StrutsFramework概览

  • zgqtxwd
  • zgqtxwd
  • 2008年05月01日 06:26
  • 138

从struts 1.x升级到 struts 2(一) 第一个程序

Struts 2与Struts 1.x间的差比很大,从用户体验而言,基本上可以认为是两个完全不同的系统。当然,出于兼容性,原先的struts 1.x 框架下的项目仍然可以在struts 2 下运行。s...
  • lldwolf
  • lldwolf
  • 2008年05月05日 14:52
  • 2166

Web framework之Strust2配置详解

struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件。 以下分别介绍一下几个struts.xml中常用到的标签: 1、 利用include标签,可以将一个...
  • u010552723
  • u010552723
  • 2015年04月04日 00:47
  • 315

Struts——概览

Struts是什么?      struts是一种框架。                     先说之前的设计,客户端浏览器通过容器调用类,类直接重定向或转发请求给页面;而struts相当于是提供...
  • kanglix1an
  • kanglix1an
  • 2014年08月13日 22:28
  • 928

从struts 1.x升级到 struts 2(二) POJO

在上例中,其实我只使用了struts2中的简单MVC映射,同时,我在servlet和JSP中大量使用了request对象,而且没有使用任何的struts标签,这些都是struts不希望用户做的事情。但...
  • lldwolf
  • lldwolf
  • 2008年05月07日 23:29
  • 2855

Struts2的method{1}用法

此时method={1}中的{1}代表product_*中的*。最后,如果访问/product_save,
  • wnl_csdn
  • wnl_csdn
  • 2016年11月08日 21:34
  • 729
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts 学习笔记1 -Struts Framework 概览
举报原因:
原因补充:

(最多只允许输入30个字)