Struts 如何工作的

原创 2004年06月27日 07:55:00
http://jakarta.apache.org/struts/faqs/works.html
(这时我刚刚翻译好的,欢迎转载和交流,请在转载之前注明作者信息,谢谢)
Java Servlets 被设计用于操控(handle)Web浏览器的请求。Java ServerPage被设计用于创建哪些可发布宣传站点到在线应用系统中的动态Web页面。Struts使用一个特殊的Servlet作为“交换机”,将来自Web浏览器的请求转到相应的ServerPage。这使Web应用更加容易设计、创建和维护。
以下是有关Struts的机制和依存关系的更加详细说明:
l 你开发的web应用有一个必须要写的部署描述文件(WEB-INF/web.xml)。这个文件描述了你的web应用的配置,包括欢迎页面(welcome pages)(当请求没有指定时,出现在目录下的文件)、servlet(路径或者扩展名)和那些servlets的参数的映射。
在这个文件中,你配置Struts ActionServlet作为一个操控所有指定映射(通常以.do为扩展名)请求的servlet。这就是前面提到的“交换机”。
也在这个文件中,你配置ActionServlet使用一个或者多个用于Struts本身的配置文件。
在本教程中,假定我们将web应用安装在服务器的/myapp下,并且使用最简单的可能配置。
如果你需要了解有关部署描述符方面更加详细的情况,请阅读Servlet 规范,这个可以在Sun的Java站点获得。
l 在Struts配置文件中,你将路径和你应用程序的控制组件相关联,像Action类(例如:“login”=>LoginAction类)。这告诉Struts的ActionServlet,当来一个
http://myhost/myapp/login.do请求时,应该调用你的控制组件LoginAction。
注意在这个URL中的后缀.do。这个后缀导致你的容器(例如Tomcat)去调用ActionServlet,它将单词“login”看做你要做的一件事。当这个配置被引用后,你的LoginAction也配执行。
l 对于每个Action,你也可以用结果页面(resulting page)的名字配置Struts,这些结果页面可以显示作为动作的结果。动作的结果可以有不止一种的视图(通常的,它至少有两种:一个是成功,一个是失败)。你的Action(你写的控制组件)依赖于这些“逻辑”结果的映射名。它使用一些诸如“success”“、failur”、“ok”、“UserInIncompetent”等词向ActionServlet回报。Struts系统(通过你写的配置文件)知道如何转向到合适的指定页面。这就是通过简单的编写Struts XMl配置文件为视图层进行重新配置所带来的额外好处。
从这点来看,Struts知道如何委派你的控制组件,知道你的控制器处理结果要显示什么。应用程序的模型(model)部分完全取决于你,它从你的控制组件内被调用。
l 你也许要在Struts配置文件中将一个Java Bean和一个action(或者一组action)相关联。Java Bean被当做form或者显示数据的仓库(repository),它可以在view和controller层通信。
这些Beans对你的控制组件(像LoginAction)和任何与控制器(controller)相关联的显示页面都将自动可见。
在Struts系统的帮助下,这些Beans将被核准用于帮助确认用户在表单中输入正确的数据。它们可以被一个session携带,允许表单(form)跨越多个视图页面,而Actions在控制器中。
注意:为了使显示层看到这些数据,你必须使用一些服务端技术(JSP、Velcity、XSLT)(静态的HTML不起作用)。
Struts工作在服务端,因此客户的视图必须在那里编写。客户端通过一般的表单提交(POST/GET)方法反馈数据,Struts系统在调用你的控制组件之前更新Bean里面的数据。
l 在你的web应用中,将会有一些页面,这些页面用于表现你的用户将看到的视图。这些可以是JSP页面,Velocity模板,XSLT页面等等。一组JSP标签和Struts发行包绑定,这样,你可以立刻使用,但不是说任何标准的表示技术(presentation technology)都可以在Struts中使用。
当然,静态HTML文件可以在你的Struts应用中使用,但是它们将不能获得充分获得动态特点的好处。
在Struts JSP taglibs的例子中,提供了一些其他包,使这个framework更加容易使用你的一些喜好的表现技术。对于Velocity 模板,有用于Struts的Velocity的ViewTools。如果你要使用XSLT在你的应用中,你可以在stxx和StrutsCX之间选择。
这些包使标准的Struts框架元素看起来像是原来表现技术的不可分割的一部分。Struts也使它变得容易混合和搭配。如果需要,你可以在同一个应用中使用JSP、velocity模板和XSLT!
由于Struts依赖于标准的Servlet技术,所有你应该可以在Struts中使用任何Java表现技术。
l 虽然Struts框架的焦点在控制器(controller),但是表现层是任何一个应用的有机部分。Struts JSP标签库包括一些普通的和Struts特有的标签,用于帮助在你的视图中使用动态数据。
客户定制JSP标签占Struts基础代码的很大一部分。一个有教育意义的是,在1.1b3版本中,有关Struts的核心Java代码是大约28,000行,而标签库(包括tiles)的Java代码是将近41,000行。
这些标签有助于你将你的视图层和控制层粘合而不需要插入很多Java代码在JSP中。这使页面看起来像一个XML文件,比起一个寻常的JSP文件,这使web设计者更加容易处理。这也有助于减少控制和视图的耦合性。
客户定制标签用于创建表单(非显示的和前面提到的Bean相关),逻辑上指向其他页面,然后激活web应用中的其他action。
还有一些标签是帮助你进行国际化、错误消息处理等等。所有这些功能都依靠你在应用于Struts中的配置文件的一些方法。
你需要记住的重要一点是,这里所说的机制仅仅在ActionServlet操控请求时才有效。
既然这只发生当你的请求被提交然后致使容器调用ActionServlet的情况下,所以你必须确保任何依赖于Struts的页面的请求是映射到ActionServelt的。

Struts工作机制?为什么要使用Struts?

基本简要流程如下: 1、客户端浏览器发出HTTP请求。 2、根据web.xml配置,该请求被FilterDispatcher接收。 3、根据struts.xml配置,找到需要调用的Action类和方法...
  • jxq0816
  • jxq0816
  • 2014年01月03日 20:33
  • 3400

Struts 如何工作的

作者:东海之心 2003-11-28,来源:Struts How To:http://jakarta.apache.org/struts/faqs/works.htmlJava Servlets 被设...
  • eric88
  • eric88
  • 2005年01月05日 17:49
  • 722

Struts 2详细工作流程及原理

Struts 2详细工作流程      Struts2工作原理及流程      Struts2框架的基本思想是采用MVC设计模式,即将应用设计成模型(Model)、视图(View)和控制器(Co...
  • liuyinghui523
  • liuyinghui523
  • 2015年09月08日 14:31
  • 4036

struts2的原理和工作机制

struts2的基本组成 Struts2框架的基本思想是采用MVC设计模式,即将应用设计成模型(Model)、视图(View)和控制器(Control)三个部分;      那么Struts2框...
  • hsj1213522415
  • hsj1213522415
  • 2017年10月06日 22:08
  • 107

Struts2工作原理

Struts2工作原理 Struts2请求响应流程:   在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller、ActionProxy、Ac...
  • wuwenxiang91322
  • wuwenxiang91322
  • 2013年09月04日 16:18
  • 90855

struts2之自定义拦截器及拦截器生命周期分析

一,概述 本文主要是关于怎样自定义拦截器及通过自定义的拦截器来了解拦截器的生命周期. 二,自定义拦截器 1)写一个拦截器类HelloInterceptor,它实现了Interceptor接口. ...
  • bighuan
  • bighuan
  • 2017年04月19日 11:40
  • 1521

Struts2底层实现原理

struts2 操作 action servlet,是通过在web.xml中配置一个filter实现的  struts2 org.apache.struts2.dispatcher...
  • pk2012comeon
  • pk2012comeon
  • 2013年09月08日 15:03
  • 2260

struts1的工作原理及基本配置详解

一、引入struts Model 1结构如图1所示:     Mode11是一个以JSP文件为中心的模式,在这种模式中JSP页面不仅负责表现逻辑,也负责控制逻辑。专业书籍上称之为逻辑耦合在...
  • cs_fei
  • cs_fei
  • 2013年08月05日 13:18
  • 2272

struts的工作机制

在web应用启动时就会加载初始化ActionServlet, ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象 当ActionSer...
  • yecat_10
  • yecat_10
  • 2010年11月04日 21:56
  • 221

Struts2的运行原理(配图解)

1.客户端发出一个HttpServletRequest请求 2.这个请求经过一系列过滤器(ActionContextCleanUp、FilterDispatcher) 3.FilterDispat...
  • gongzhufanlulu
  • gongzhufanlulu
  • 2016年01月28日 19:26
  • 514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts 如何工作的
举报原因:
原因补充:

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