分享
 
 
 

Struts是怎么工作的(翻译)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Java的Servlets是用来处理Web浏览器的请求的,而JSP是用来建立动态网页,使得网站成为活动的应用的。Struts使用了一个特殊的Servlet作为交换器,将Web浏览器的请求导向到适合的JSP页面去。这使得Web应用的设计,创建和维护更加容易。

以下是Struts的一些详细的机制和对其他技术的依赖:

你开发的web应用必须要写一个发布描述文件(WEB-INF/web.xml),这个文件描述了你的web应用的配置,包括欢迎页(当web请求是一个目录而没有指明具体的文件时,服务器显示的文件),servlet的映象(路径和扩展名)和这些servlet的参数。

在这个文件中,你将Struts的ActionServlet配置为处理所有映象(通常的扩展名为.do)的请求的servlet。这就是上面提到的交换器。

在这个文件中,你为Struts本身设置ActionServlet使用一个或多个配置文件。

本文档中,假设我们把web应用安装在服务器的/myapp目录下,并从那里使用最为简单的配置。

如果你需要发布描述文件的详细信息,请阅读Servlet Specification,它可以从Sun Microsystem的Java网站上得到。在Struts的配置文件中,你将路径信息和你的应用中的控制组件相关联,这些控制组件为Action类(例如:“login”——>LoginAction类)。这就告诉Struts的ActionServet当收到的请求为:http://myhost/myapp/login.do的时候,它应该调用你的LoginAction控制组件。

注意在URL中的.do扩展名,这个扩展名使得你的Servlet容器(例如Tomcat)调用ActionServlet,ActionServlet知道这个单词“login”就是你需要做的事情。然后从配置文件中查找对应的Action类,于是你的LoginAction将会被执行。对于每一个Action类,你也要为Struts配置结果页面的名字,这些结果页面是该Action类执行的结果。一个Action可能会有多个执行结果的视图(通常,至少有两个:一个为成功的,一个为失败的)。

你的Action(你写的控制组件)是基于这些逻辑结果页面的名称的。这些名称会返回到ActionServlet类去,使用诸如“success”,“failure”,“ready”,“ok”,“UserIsIncompetent”一类的名称。Struts系统(通过你写的配置)知道怎样找到适合的指定页面。这就使得通过简单的编辑Struts的XML配置文件,就能重新配置视图层。

在这一点上,Struts知道怎样代表你的控制组件,显示你的控制组件运行的结果。应用程序的模式层则完全取决于你,它会在你的控制组件中被调用。你也可以在Struts的配置文件中,将Java Bean作为一个Action(或者一系列Action)。Java Bean被作为表单或者显示数据的容器,这些数据可以在视图层和控制层中交流。

这些Bean能被你的控制组件(例如LoginAction)和任何与该控制组件联系的视图页面自动的看到。

这些Bean也能在Struts系统的帮助下被验证,保证用户在表单中录入了正确的数据。它们能置入session中,使得表单能用多个视图页面来表示,以及在控制层表单能被多个Action处理。

注意:你必须在视图层(将会在客户端显示的)使用服务器端的技术(JSP,Velocity,XSLT)去得到这些数据。(纯HTML是没办法得到的)。Struts在服务器上工作,所以客户能看到的视图必须也在服务器端被合成。

客户通过正常的表单提交(POST/GET)来反馈数据,Struts系统则在调用你的控制组件之前,更新在Bean中的这些数据。

在你的web应用中,页面将会代表用户看到的视图。这些页面可以是JSP页面,Velocity模板,XSLT页面等等。一系列JSP标记同Struts一同发布,因此你能马上开始。但是你仍然可以在Struts中使用任何标准的展示技术。

就算纯HTML文件也能在你的Struts应用中使用,尽管他们不能使用动态技术的任何好处。

下面是Struts的JSP标记的例子,你也可以获得其他一些包使得Struts框架在你喜欢的展示技术中更加容易使用。在Velocity模板中,Velocity ViewTools支持Struts。如果你想使用XSLT,你能在stxx和StrutsCX中选择。

这些包使得标准的Struts框架元素看上去或者感觉上去像是这些展示技术无缝的一部分。Struts也使得它容易跟其他技术混合和结合。如果需要,你可以在同一个应用程序中一起使用JSP,Velocity模板和XSLT。

因为Struts是基于标准的Servlet技术,你应该能和Struts一起使用任何Java展示技术。Struts框架主要集中在控制器,而展示层也是应用程序相当重要的一部分。Struts的JSP标记包括了一些通用和Struts专用的标记,它们能帮助你在你的视图中使用动态的数据。

定制的JSP标记是Struts代码基础中很大的一部分。注意到在版本1.1b3中,Struts内核的Java代码大概有28,000行,而这些标记(包括tiles)的Java代码大概是41,000行是非常有意义的。

这些标记能使你将你的视图层与控制层结合在一起,而不用在JSP页面中嵌入很多的Java代码。这使得页面看上去象XML,这就能比纯JSP更加容易的被web页面设计者处理。它同时也能减少在控制层和视图层之间的依赖关系。

定制标记被用来建立表单(隐式的与前面提到的Bean相互作用),逻辑地转向到其他页面,调用web应用的其他Action。

这些标记也能帮你进行国际化,错误信息处理等等。

所有这些能力都是在一定程度上依赖于你提供给Struts的配置文件的。当ActionServlet处理web请求的时候,所有在这里描述的机制才是有效的,请记住这点,这是很重要的。

因为仅当一个请求提交时,你的容器(例如,Tomcat,WebShpere等)调用ActionServlet,所有这些才会发生。你必须保证通过一个将会映象到ActionServlet的请求(例如,有一个.do的扩展名)得到的任何依赖于Struts的页面都已经准备好了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有