作者: bruce -- Java研究组织
Tuesday, January 21 2003 11:06 AM
| 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上应用的修订版。图示如下: | |
| <action path="/logon" type="org.apache.struts.webapp.example.LogonAction" name="logonForm" scope="request" input="/logon.jsp"> |
| ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| 转存失败重新上传取消转存失败重新上传取消 |从中可以看出,这个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显示 |