struts2 工作流程

111~... 111~ 展开
 我来答
匿名用户
2012-03-26
展开全部

struts2的主要工作流程是这样的:

首先有一个http请求,会首先进入ActionContextCleanup(清空值栈等,但会留下自己的,比如session,Attribute等),其作用见括号中的

其次,走一些过滤器,filter,然后进入闻名的struts2的总控FilterDispatcher

穿过上述几层后,会进入ActionMapper,来判断此请求是否需要struts2处理,如果需要,那么由ActionProxy来接管,通过配置管理我们可以找到我们的struts.xml,然后进入真正做事的Action

Invocation,依次穿过我们的拦截器,进入action,从而根据返回的result选择我们要的页面,在拦截器的前半部分去值栈中取值通过标签展示在页面上,最后生成response返回,具体的图如下

此图是我自己总结的,颜色比较多的那个图是struts2的官方图片,只是加了注释

struts2说的应用一些,举例,就像我们图中的,当你点击新增按钮后,会触发一个action给web服务器,服务器接受请求,给对应的web容器,根据上下文可以找到我们的webapp应用,找到总的配置文件web.xml,根据里面的配置来判断action谁去处理,找到filter,反射创建类,回调init,读取struts2的配置文件struts.xml,根据命名空间等找到action,反射创建action类实例,回到execute方法,找到对应的result转向下一个页面,其中虚线框中为右图的一个简写

w24893
2012-03-26 · TA获得超过688个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:74.1万
展开全部

当web 容器收到一个请求时,它将请求传递给一个标准的过滤器链,其中包括ActionContentCleanUp过滤器及其他过滤器(如集成的siteMesh的插件),这是非常有用的技术.

接下来 需要调用 FilterDispatcher,它调用ActionMapper 确定请求调用哪个Action ,ActionMapper返回一个收集了Action详细信息的ActionMapping的对象,接下来FilterDispatcher 将控制权委派给 ActionProxy,ActionProxy调用配置管理器(ConfigurationManager)从配置文件中读取配置信息,然后创建ActionInvocation对象.实际上ActionInvocation的处理过程就是Struts2处理请求的过程.ActionInvocation 被创建的同时,填充了需要的所有对象的信息,它在调用Action之前会依次调用所有配置的拦截器. 一旦action执行返回字符串,ActionInvocation负责查找结果字符串对应的Result.然后执行这个Result.通常状况下Result会调用一些模板来呈现页面. 之后

拦截器被再次执行(顺序和Action执行之前相反),最后响应,被返回给在web.xml中配置的那些过滤器(FilterDispatcher)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
江洋bb
2012-03-26
知道答主
回答量:11
采纳率:0%
帮助的人:4.2万
展开全部
1.启动web应用时就会加载初始化ActionServlet,ActionServlet就会从struts-config.xml文件中
读取配置信息,把他们存放到各种配置对象;
当ActionServlet接受到客户请求时:
检索客户匹配的ActionMapping实列,如果不存在就会返回请求路经无效
如果ActionForm实列不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到Action中
ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action的指定的方法
Action的默认方法是execute() 然后返回一个ActonForward对象
ActionForward()对象指向Jsp组件生成动态网页返回给客户;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liu_ji_bing
2012-03-28 · TA获得超过127个赞
知道答主
回答量:96
采纳率:0%
帮助的人:50万
展开全部
当接收到一个httprequest

  Interceptor做一些拦截或者初始的工作

  当外部的httpservletrequest到来时

  初始到了servlet容器 传递给一个标准的过滤器链

  ActionContextCleanUp这个在集成插件方面非常有用

  Other filters(SitMesh,etc)

  调用FilterDispatecher会去查找相应的ActionMapper

  如果找到了相应的ActionMapper它将会将控制权限交给ActionProxy

  ActionProxy将会通过ConfigurationManager来查找配置struts.xml

  下一步将会 通过ActionInvocation来负责命令模式的实现(包括调用一些拦截Interceptor框架在调用action之前)

  一旦action返回,会查找相应的Result

  Result类型可以是 jsp或者freeMark 等

  这些组件和ActionMapper一起返回给请求的url(注意拦截器的执行顺序)

  响应的返回是通过我们在web.xml中配置的过滤器

  如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理

  sreadlocal ActionContext

  如果ActionContextCleanUp不使用,则将会去清理sreadlocals
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光明武哉5602
2012-03-26 · TA获得超过5.4万个赞
知道大有可为答主
回答量:3.7万
采纳率:0%
帮助的人:2510万
展开全部
表示正在学
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式