现在的位置: 首页 > 综合 > 正文

jakarta-struts-1.2.4代码阅读

2013年09月07日 ⁄ 综合 ⁄ 共 2725字 ⁄ 字号 评论关闭

一、stuts工作原理:

1web.xml中的设置如下

<servlet>
   
<servlet-name>action</servlet-name>  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
   
<init-param>
     
<param-name>config</param-name>
     
<param-value>/WEB-INF/struts-config.xml</param-value>
   
</init-param>
    
<load-on-startup>2</load-on-startup>
 
</servlet>
servlet定义了系统中需要用到的servlet的访问标签,类名、初始化参数和加载顺序
servlet-name:定义了访问servlet时使用的标签
servlet-class:指出了servlet所在的类名(包括包名)
init-param:初始化servlet时需要的参数,在servlet中可以使用getServletConfig().getInitParameter("config")方法取得传进去的参数也可使用形如“config/XXX”的形式定义子应用。
load-on-startup:定义了servlet容器加载servlet的顺序。只可以设置正整数和0,当输入非数字、负数或没有设置时servlet容器在真正用到servlet时以任意顺序加载。当设置为正整数时,在容器启动时加载,数字小的在数字大的前面加载。
<servlet-mapping>
   
<servlet-name>action</servlet-name>
   
<url-pattern>*.do</url-pattern>
</servlet-mapping>
   
servlet-mapping
:定义了容器在分发用户请求时使用的规则。上例就说明,当容器接收到已.do结尾的请求时,调用action
servlet
来处理!
  
servlet-name
:申明了需要调用的servlet的标签
url-pattern:定义了容器在分发用户请求时匹配的格式。现在只知道可以使用*.XX/XX两种
注:如果希望替换struts默认的ActionServlet可以在这里自己定义,替换掉servlet-class就可以了

2struts-config.xml的配置

   
  <controller contentType="text/xml;charset=UTF-8"
             
debug="0"
             
locale="true"
             
nocache="true"
             
processorClass="jp.co.nttdata.terasoluna.framework. web.richclient.RequestProcessorEx"/>
      
定义了由ActionServlet调用的RequestProcessor类,RequestProcessor类完成所有struts中请求分发。

3、多重子应用

      Struts 1.1中可以定义和支持多重的子应用。这意味着你能将你的应用放在更易维护的子应用中。你不再需要在唯一的struts-config.xml文件之外检测来源控制。
    
另一个使用子应用的原因是根据客户而改变的控制流。在某些应用中,你可能有一些通用的页面,但是控制流也许会由于登陆应用的客户的不同而有所改变。你能把这个控制流的元数据存入数据库并生成web.xml文件(或该文件中的一部分),与不同的struts-config.xml文件一起。
   
如果你曾对Struts 1.x 进行过开发,你可能注意到了许多web.xml文件中的元素已经移到了Struts 1.1的struts- config.xml文件中。这是因为现在他们是应用特定(application-specific)的。多重的子应用通过在请求URI的相对于上下文
部分开始的前缀来确定。
如果没有应用前缀能够匹配,则选择默认配置。默认设置拥有一个空字符串的前缀。执行默认设置的这种方式对可能只定义一个应用的 Struts 1.0.x是向后兼容的。

   
如果你拥有一个包含不同功能模块的大型应用,那么用协同运行的子应用代替一个巨大的应用会更有意义。 当使用子应用时,你可能定义上下文相关的请求URI来指定使用哪一个子应用。

4、Jakarta通用库的集成

  Struts工具包可以解决在创建 Web应用时不断出现的问题。这个包中的大部分类不依赖于控制器Servlet框架或定制的标记库,因此它们可被用于一般的Java应用编程。在
Struts 1.1
版本中,这个包中的许多类被移植到Jakarta的公共项目中。这些类包括Bean工具,Colections,以及
Digester
包。Struts中提供的logging实际上来自于公共项目.
   org.apache.commons.beanutils
组件封装了JavaReflectionIntrospection应用编程接口(API)。使用beanutils包中的类,可在未知方法名编译的
情况下动态的调用
gettersetter方法。这些类用Struts的定制标记库调用,因此可以为你的应用定义附加的定制标记,你也许想要进一步了解
这个包中的可用内容。表
1列出了这些。
1:Struts 1.1中的通用包
BeanUtils 通过反射组装JavaBeans属性
ConvertUtils 将字符串值转换为指定类的对象
MappedPropertyDescriptor 描述与映射属性
MethodUtils 集中于大体的方法上而不是属性等细节上
PropertyUtils 使用Java Reflection应用编程接口(API)对一般属性进行setter(设置值)与getter(获取值)操作
      Digester 包提供了基于XML文档的规则。
这么做对读取配置文件非常重要,便于正确的初始化对象。这个包可是你非常简单的完成这些事否则就需要你更深入地了解DOM
SAX的处理。当XML中的模式被验证后,这些可通过指定了规则的对象映射模块来完成。这包括嵌入你自己模式匹配的引擎的能力,合法命名空间的处理,以及用于多应用并且封装了规则的RuleSets如果你明确的读取XML文件别需要映射为适当的Java对象,Digester包是十分有用的。

抱歉!评论已关闭.