Struts的工作流程

本文详细介绍了Struts框架在项目启动时的初始化流程,包括资源文件、Web.xml配置、FormBean、ActionForward等核心组件的加载过程,并概述了请求处理的主要步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Struts在项目启动的时候进行基本资源的初始化工作:

1. initInternal();初始化资源文件

2. initOther();初始化Web.xml对struts的定义信息

3. initServlet();初始化Web.xml对ActionServlet的定义信息.

4. initChain();初始化Struts的处理链,如果自己配置了处理链则要重写这个配置(Web.xml)

5. initModuleConfigFactory(); //设置模块模块工厂,如果自己配置了解析工厂则要重写这个配置(Web.xml)

6. initModuleConfig("prefix", config);初始化Struts-config.xml中的定义.

7. initModuleMessageResources(moduleConfig);初始化自定义消息资源

8. initModulePlugIns(moduleConfig);初始化插件信息

9. initModuleFormBeans(moduleConfig);初始化FormBean信息

    [  baseFormBean = new FormBeanConfig();
        baseFormBean.setName("baseForm");
        baseFormBean.setType("org.apache.struts.action.DynaActionForm");

 

        FormPropertyConfig property = new FormPropertyConfig();
        property.setName("id");
        property.setType("java.lang.String");
        baseFormBean.addFormPropertyConfig(property);

   ]

    这里设置FormBean的初始化工作,根据[Struts-config.xml]

10.initModuleForwards(moduleConfig);初始化Fowwards信息

   [

       baseForward = new ActionForward("success", "/succes.jsp", false);

   ]

   这里设置ActionForward的信息

11.initModuleExceptionConfigs(moduleConfig);初始化异常信息

    [

        baseException = new ExceptionConfig();
        baseException.setType("java.lang.NullPointerException");
        baseException.setKey("msg.exception.npe");

       

        ExceptionConfig exceptionConfig = new ExceptionConfig();
        exceptionConfig.setType("java.sql.SQLException");
        exceptionConfig.setKey("msg.exception.sql");
        baseAction.addExceptionConfig(exceptionConfig);

    ]

    这里设置Exception的处理

12.initModuleActions(moduleConfig);初始化Action

    [

       baseAction = new ActionMapping();
        baseAction.setPath("/index");
        baseAction.setType("org.apache.struts.actions.DummyAction");
        baseAction.setName("someForm");
        baseAction.setInput("/input.jsp");
        baseAction.addForwardConfig(new ActionForward("next", "/next.jsp", false));
        baseAction.addForwardConfig(new ActionForward("prev", "/prev.jsp", false));

    ]

    这里设置Action的信息

13.moduleConfig.freeze();标记这个配置文件已经配置

 

Struts在项目启动成功后,进行Action的执行工作。

1. ModuleUtils.getInstance().selectModule(request, getServletContext());根据请求信息搜索模块配置信息

2. getRequestProcessor(config);得到请求处理器

3. processor.process(request, response);处理这个请求

4. request = processMultipart(request);初始化请求信息,主要是区别Multipart,也就是请求头信息是multipart/form-data

5. String path = processPath(request, response);识别和返回一个Path组件[从requestURI中取](XXX.do)

5. processLocale(request, response);初始化Locale信息

6. processContent(request, response);设置请求和头信息[默认为text/html]

7. processNoCache(request, response);设置头信息的不允许缓存

8. this.processCachedMessages(request, response);如果缓存的信息在Session中没有找到就移除

9. processMapping(request, response, path);初始化ActionMapping[根据Struts-config.xml]

10.processActionForm(request, response, mapping);初始化ActionForm[根据Struts-config.xml]

11.processPopulate(request, response, form, mapping);把请求参数中的属性设置到form当中。

12.processValidate(request, response, form, mapping);处理验证

13.processForward(request, response, mapping);处理响应

14.processInclude(request, response, mapping);处理包含

15.processActionCreate(request, response, mapping);处理Action的创建.

     [Actions是一个HashMap,线程不安全的,所以这里采用的是synchronized,其实还有一个类为

      HashTable是线程安全的,但是作者这里不使用HashTable,可见HashTable已经被废弃了]

16.processActionPerform(request, response, action, form, mapping);这里是处理Action,默认为execute方法

17.processForwardConfig(request, response, forward);处理ActionForward.

 

Struts封装了各环节的处理,在我们操作的时候,我们只需要编写Action,只需要编写execute方法就可以了,

采用了很多优秀的设计模式.

 

 

 

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值