我从上世纪90年代末开始对Web框架发生兴趣。我准备写一种语言,它可以使我能解决
在进行高级开发时的某些问题--通过它可以使我从动态分配内存中的问题中解放出来。
一开始,我真正想实现的是如何使一些Web应用开发者的工作变得容易一点。但后来
Struts那以置信的流行说明我并不是唯一在这些问题中挣扎的人—Struts满足了通常的需要。
当早期的JSP规范草案发布时(0.91和0.92),此文档中最迷人概念的是JSP使用了两种
基本设计风格的理念。Model 1 设计主要表现在表单提交可以回复到创建该表单的Servlet或
JSP页面。这种设计鼓励混合表现逻辑(用来创建表单)和业务逻辑(用来验证表单输入和
处理请求事务)。这种设计在那些开发者仅具单一技能(比如页面设计者懂一些编程而JAVA
开发者也知道一些HTML)时经常使用。而且在时间第一的情况下也很有用(原型必须在下
周一运行而我们还没有获得风险投资)。而经验告诉我们, Model 1 设计在后来会很难进
行维护和升级。
相反,Model 2 设计是将表单提交给一个控制器组件。控制器组件调度相应的业务逻辑
组件来完成请求的事务。业务逻辑组件和数据库交互,并获取它在下次用户交互所需要的信
息。控制器组件将响应页面的创建委派给表现组件,表现组件只有一个目的,就是创建响应。
你可能想Model 2听起来好像更加复杂—也许甚至好想要完全扼杀简单应用。实际上,基于
Model 2 创建一个应用并不比用Model 1创建同一个应用花太多的时间。但主要的优点会很
快显现出来。如果你创建了一个正确的应用,对一层的主要修改,应该基本不会影响到其它
层(如果有的话),并且你可以马上在没受影响的层重用你的逻辑。
虽然,所有这些对Web应用架构的聪明的研究正在进行,但我的专业工作让我也对方向
感兴趣。我正为一个专为长途运输行业提供信息服务的美国公司工作,并且我们正在准备将
业务扩展到欧洲。这样就产生了处理多语言和国际化问题的需要。我很快就受到了我用来实
现基本MVC的单一的简单Servlet的折磨,即它没有解决包含一个语言选择控件的问题。
对国际化问题的第一次努力是我尝试使用JSP1.1种的新的标记来创建“用户接口组件”
—它最终导致了现在Struts一个标记<bean:message>。
紧跟着,我加入到Sun Microsystems 并工作于Tomcat servlet 和JSP container的创建(我
是Tomcat 4的基础Catalina servlet 容器的主要架构者)。这个开发的大部分工作是在Apache
的开源社区内进行,作为Jakarta项目的一部分—本项目由1999年Sun 贡献了servlet 和JSP
参考实现源代码给Apache起始。然而,我并不满意于那时候Model 2-面向应用设计的状态,所
以我开始想怎样来解决这个问题。
在进行高级开发时的某些问题--通过它可以使我从动态分配内存中的问题中解放出来。
一开始,我真正想实现的是如何使一些Web应用开发者的工作变得容易一点。但后来
Struts那以置信的流行说明我并不是唯一在这些问题中挣扎的人—Struts满足了通常的需要。
当早期的JSP规范草案发布时(0.91和0.92),此文档中最迷人概念的是JSP使用了两种
基本设计风格的理念。Model 1 设计主要表现在表单提交可以回复到创建该表单的Servlet或
JSP页面。这种设计鼓励混合表现逻辑(用来创建表单)和业务逻辑(用来验证表单输入和
处理请求事务)。这种设计在那些开发者仅具单一技能(比如页面设计者懂一些编程而JAVA
开发者也知道一些HTML)时经常使用。而且在时间第一的情况下也很有用(原型必须在下
周一运行而我们还没有获得风险投资)。而经验告诉我们, Model 1 设计在后来会很难进
行维护和升级。
相反,Model 2 设计是将表单提交给一个控制器组件。控制器组件调度相应的业务逻辑
组件来完成请求的事务。业务逻辑组件和数据库交互,并获取它在下次用户交互所需要的信
息。控制器组件将响应页面的创建委派给表现组件,表现组件只有一个目的,就是创建响应。
你可能想Model 2听起来好像更加复杂—也许甚至好想要完全扼杀简单应用。实际上,基于
Model 2 创建一个应用并不比用Model 1创建同一个应用花太多的时间。但主要的优点会很
快显现出来。如果你创建了一个正确的应用,对一层的主要修改,应该基本不会影响到其它
层(如果有的话),并且你可以马上在没受影响的层重用你的逻辑。
虽然,所有这些对Web应用架构的聪明的研究正在进行,但我的专业工作让我也对方向
感兴趣。我正为一个专为长途运输行业提供信息服务的美国公司工作,并且我们正在准备将
业务扩展到欧洲。这样就产生了处理多语言和国际化问题的需要。我很快就受到了我用来实
现基本MVC的单一的简单Servlet的折磨,即它没有解决包含一个语言选择控件的问题。
对国际化问题的第一次努力是我尝试使用JSP1.1种的新的标记来创建“用户接口组件”
—它最终导致了现在Struts一个标记<bean:message>。
紧跟着,我加入到Sun Microsystems 并工作于Tomcat servlet 和JSP container的创建(我
是Tomcat 4的基础Catalina servlet 容器的主要架构者)。这个开发的大部分工作是在Apache
的开源社区内进行,作为Jakarta项目的一部分—本项目由1999年Sun 贡献了servlet 和JSP
参考实现源代码给Apache起始。然而,我并不满意于那时候Model 2-面向应用设计的状态,所
以我开始想怎样来解决这个问题。
解决方案 »
- 怎么在网页上运行可执行程序
- 关于权限问题讨论,有兴趣的朋友都来看一下,来着有分
- 怎样设计servlet listener监听地址栏的地址?
- 请大家帮我看看我的程序错在什么地方!!!
- 大家看看我的JAVA BEAN的问题啊!
- 上传文件遇到的问题,很急,大家帮忙啊!!
- HQL不识别占位符,抛出反射异常
- 求关于extJS+google map api 的资料
- resin2.1.4安装问题
- javascript中confirm()方法弹出的对话框的默认焦点是在yes上的。如何改在no上。
- 求助:怎样在JSP(TOMCAT)中加入一链接,点击打开服务器上的一个EXCEL文档?
- 谁能把搜索、帖子置顶和设置热门帖子的方法说一下?在线急等!!
一种典型的结构应该是这样的:
1:)View 层 主要完成 数据处理功能,因此就和三层结构的表示层相对应,因此这一层的实现上多用于 JSP ,原因是jsp能够很
容易的展现给用户一个可操作健壮视图。
2:)Control层 主要完成企业的业务逻辑处理(并且包括页面间的连接关系),因为和三层结构的逻辑层想对应,这一层的实现
技术,多用于servlet/javabean/session bean。
3:)Model 层 对应这三层结构的数据层(存储层)。这一层的实现技术对应于 j2ee的 Entity bean .
而struts 就是mvc的一种应用框架