学习心得

BlogJava 首页 新随笔 联系 聚合 管理
  3 Posts :: 0 Stories :: 1 Comments :: 0 Trackbacks

2009年2月26日 #

首先得弄清什么是Action?然后再搞清楚他在struts框架中扮演的什么角色?最后再了解他如何使用和基本结构生命周期等细节问题.
在大多数人来看。Action其实就像是servlet。其实Action是一个轻量级的Java类。Servelt引用ActionMapping列表来选择对应Action来处理。
调用Action的方法然后返回一个ActionForward.ActionServlet再通过这个ActionForward转发相应请求。
posted @ 2009-03-02 16:41 Mr.wang 阅读(200) | 评论 (0)编辑 收藏

谈到ActionMapping.相信大家用得最多的就是ActionMapping.findForward("forwardName");通过ActionMapping对象把请求转发到指定的forward对象。
没错,在大体上。ActionMapping就实现了一个路由的功能。负责把请求转发到不同的ActionForward上。
在我们经常用的配置就是:
<action-mappings>
<action path="login" type="study.struts.LoginAction"
name
="login" scope="request"
    </action>
</action-mappings
>
在<action-mappings>标签中配置了N个action。实际上在struts1.1处理的时候会把这些action都装饰成一个单例的ActionMapping对象然后放到一个
ActionMappings的Map中,通过action的path属性做为key。来区别不同的ActionMapping对象。struts就通过请求不同的path就可以达到把请求转发给
不同的Action上。
------------------------------------------------------------------------------------------------------
ActionMapping工作起来就像是ActionServlet的一个路由联络官。取决于mapping 如何被填写
设置,请求可能被传递到任何地方。ActionMapping表达了Struts 应用的核心设计。如果你
想知道一个 Struts 应用是如何工作的,可以从ActionMapping开始着手。如果你想知道如何
编写一个新的Struts 应用,也请从ActionMapping开始。Mapping处于每个Struts 应用的绝对
核心。
-----------------------------------截自<<struts in action>>------------------------------------------
posted @ 2009-03-02 10:58 Mr.wang 阅读(1567) | 评论 (0)编辑 收藏

昨天学习了struts的ActionForm 才知道,原来在struts中ActionForm扮演N多重要角色。
今天学习到ActionForward。
下面开始简述一下自己学到的心得体会。
在刚开始我理解的请求的转发和重定向只是有一个区别,
那就是如果用请求的转发那么在上下文环境中储存的参数些在转发的下一个Action或JSP中还能用。
而相反请求的重定向则会把上下文清空。所以那些参数也不复存在。
其实在一开始这么理解确实没有错的。
这几天猛然翻起struts的书才发现。自己懂的还很少。

请求的转发:
请求的转发实际是在服务器那端执行的。也就是说那些request、session这里里面存放的东西只能在服务器端访问。
现在从客户端发送一个请求过来,如果在Action中进行了请求的重定向,那么struts就会把请求对象传给下一个Servelt
处理。所以大家在上下文件环境中保存的参数都还有。在我们做的程序开发中差不多全是请求的转发,因为要利用
上下文环境来传递数据。因为在请求的转的同时,这一次请求并没有返回客户端,只是在服务器端做了转发。所以
当响应回到客户端的时候,客户端并不知道服务器端进行过请求的转发所以在客户端的地址栏的url不做任何变化。

请求的重定向:
请求的重定向实际是当在服务器端接受到请求的重定向请求的时候,他会即时响应客户端然后告诉客户端要请求的地址。并
自动再将请求发送给传回来的url。实际上请求的重定向两次向服务器发送了请求。所以当服务器第一次响应请求的时候,
不能把request对象传送回客户端,所以在请求的重定向中无法通过上下文环境来保存数据。那我们怎么传递数据呢,只能通过
服务器第一次响应的时候会传送回来一个再次请求的url(http://www.baidu.com?keyword=123)。可以在url中跟上对应的参数可以达到数据传递的目的。这样用着比较麻烦,但这样做就可以改变客户端的url地址。因为请求第一次是返回过客户端的。所以客户端就知道了新的url地址,相应
也就会改变。
小结:
个人认为请求的重定向的转发最大的差别就是:请求的转发是在服务端完成的,并没有返回客户端。而请求的重定向会返回一次客户端,通过
客户端的身份再次请求相应的url。
posted @ 2009-02-26 14:59 Mr.wang 阅读(2581) | 评论 (1)编辑 收藏