Struts控制器组件 Struts控制器组件:ActionServlet RequestProcessor Action 之间有什么区别和联系?控制流程是怎样的?不具体不给分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 struts中所有的请求都是通过ActionServlet转发的,一个action请求首先会传给 ActionServlet,ActionServlet会将其委托给RequestProcessor,RequestProcessor进行一些处理后将调用对应的Action类来执行该请求。ActionServlet、RequestProcessor、Action的职责ActionServlet负责通过Struts配置文件初始化Struts应用程序的配置,并负责接受用户请求。RequestProcessor负责与请求相关的各方面,如选择与请求相关联的Form Bean、用数据填充FormBean、验证Form Bean的有效性及选择正确的Action类来执行该请求。Action是Struts框架的终点和你的应用程序代码的起点。以下为Action执行过程的详细分析:ActionServlet继承自HttpServlet它重写了其doGet、doPost方法,这两个方法执行时都会调用ActionServlet 的process(HttpServletRequest request, HttpServletResponse response)方法,这里将会获取一个RequestProcessor的实例,并调用RequestProcessor的process (HttpServletRequest request, HttpServletResponse response)方法,这样用户请求就转到了RequestProcessor以下为RequestProcessor类的process(HttpServletRequest request, HttpServletResponse response)方法的片断 // Create or acquire the Action instance to process this request Action action = processActionCreate(request, response, mapping); if (action == null) { return; } // Call the Action instance itself ActionForward forward = processActionPerform(request, response, action, form, mapping); // Process the returned ActionForward instance processForwardConfig(request, response, forward);这里用户请求的Action被实例化后传给processActionPerform(request, response,action, form, mapping)方法,此方法将调用Action的execute(HttpServletRequest request, HttpServletResponse response, ActionForm form, ActionMapping mapping)方法并返回一个ActionForward,processForwardConfig(request, response, forward)方法将用户界面转到ActionForward指定的url。至此用户请求的action就执行完毕了。你可能要问ActionServlet是如何被启动的呢?因为它是一个HttpServlet,其执行是由Servlet容器来控制的,在后面的tomcat源码分析中会讲到Servlet是如何被执行的! 晕 路过的帮个忙啊 properties配置文件写入的操作 急啊!谢谢了 Struts2绑定自定义类型传递 关于apache common-mail发邮件,部分邮箱无法接收问题 请教一个getHibernateTemplate调用存储过程的问题 怎样编辑application.properties? 请教一字符问题 写系统日志时,增加一条记录时怎么知道该条记录的id 问:jsp可以使用activeX组件吗? 关于JSP网页转向的问题? Help!! 如何在JSP中实现类似于树形的控件!!! jsp编程连接数据库出错!!!!急,请高手支招!!!! 新手请教list取值问题
ActionServlet负责通过Struts配置文件初始化Struts应用程序的配置,并负责接受用户请求。
RequestProcessor负责与请求相关的各方面,如选择与请求相关联的Form Bean、用数据填充Form
Bean、验证Form Bean的有效性及选择正确的Action类来执行该请求。
Action是Struts框架的终点和你的应用程序代码的起点。以下为Action执行过程的详细分析:
ActionServlet继承自HttpServlet它重写了其doGet、doPost方法,这两个方法执行时都会调用ActionServlet 的process(HttpServletRequest request, HttpServletResponse response)方法,这里将会获取一个RequestProcessor的实例,并调用RequestProcessor的process (HttpServletRequest request, HttpServletResponse response)方法,这样用户请求就转到了RequestProcessor
以下为RequestProcessor类的process(HttpServletRequest request, HttpServletResponse response)方法的片断
// Create or acquire the Action instance to process this request
Action action = processActionCreate(request, response, mapping);
if (action == null) {
return;
} // Call the Action instance itself
ActionForward forward =
processActionPerform(request, response,
action, form, mapping); // Process the returned ActionForward instance
processForwardConfig(request, response, forward);这里用户请求的Action被实例化后传给processActionPerform(request, response,action, form, mapping)方法,此方法将调用Action的execute(HttpServletRequest request,
HttpServletResponse response,
ActionForm form,
ActionMapping mapping)方法并返回一个ActionForward,
processForwardConfig(request, response, forward)方法将用户界面转到ActionForward指定的url。
至此用户请求的action就执行完毕了。你可能要问ActionServlet是如何被启动的呢?因为它是一个HttpServlet,其执行是由Servlet容器来控制的,在后面的tomcat源码分析中会讲到Servlet是如何被执行的!