手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

Struts 学习笔记2 -ActionServlet深入探讨

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
  • mappingClass = value;

  • 在initMapping()中,首先链接mappings对象到本servlet实例。其实这句话的作用很简单,在ActionMappings中会有一个ActionServlet类型的属性,这个属性就界定了这个ActionMappings对象所属的ActionServlet。Struts的实现比较灵活,其中的ActionFormBean、ActionForward、ActionMapping类你完全可以使用自己实现的子类,来定制Struts的工作方式。上面的代码就从配置文件(web.xml)中读取formBean、forward、mapping参数,这些参数就是你定制的ActionFormBean、ActionForward、ActionMapping类名。
    1. // Initialize the context-relative path to our configuration resources
    2. value = getServletConfig().getInitParameter("config");
    3. if (value != null)
    4. config = value;
    5. // Acquire an input stream to our configuration resource
    6. InputStream input = getServletContext().getResourceAsStream(config);
    7. Digester digester = null;
    8. digester = initDigester(detail);
    9. try {
    10. formBeans.setFast(false);
    11. forwards.setFast(false);
    12. mappings.setFast(false);
    13. digester.parse(input);
    14. mappings.setFast(true);
    15. forwards.setFast(true);
    16. formBeans.setFast(true);
    17. } catch (SAXException e) {
    18. throw new ServletException
    19. (internal.getMessage("configParse", config), e);
    20. } finally {
    21. input.close();
    22. }

    从web.xml读取Struts的配置文件的位置。使用org.apache.struts.digester.Digester解析config参数标示的配置文件,通常为“/WEB-INF/struts-config.xml”,解析出所有的data-source、form-bean、action-mapping、forward。从上面的程序片断看到,Digester仅仅调用了一个parse()方法,那么,Digester是怎样把解析struts-config.xml文件并把解析的结果form-bean等信息存储到属性变量formBeans等中的呢?你可以注意到在调用digester.parse(InputStream)之前,首先调用了initDigester()方法:
    1. Digester digester = new Digester();
    2. digester.push(this);
    3. digester.addObjectCreate("struts-config/action-mappings/action",
    4. mappingClass, "className");
    5. digester.addSetProperties("struts-config/action-mappings/action");
    6. digester.addSetNext("struts-config/action-mappings/action",
    7. "addMapping",
    8. "org.apache.struts.action.ActionMapping");
    9. digester.addSetProperty
    10. ("struts-config/action-mappings/action/set-property",
    11. "property", "value");

    在这个方法中首先生成一个Digester对象,然后设置解析的规则和回调,如果你对XML、SAX不是很熟,这儿不必纠缠太深。要注意的是addSetNext()方法,设置了每一个要解析元素的Set Next回调方法,而这个方法就是由digester解析器的父提供的。上面的片断中的“addMapping”就是ActionServlet本身定义的一个方法,将由Digester回调。Digester就是籍此把解析出的每一个FormBean、ActionForward、ActionMapping等存储到属性变量formBeans、forwards、mappings等中的。

    文章整理:西部数码--专业提供域名注册虚拟主机服务
    http://www.west263.com
    以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!