Struts1 资源文件配置及资源文件加载方式详解 - 点滴记忆*记忆点滴
收藏本站

Struts1 资源文件配置及资源文件加载方式详解

   在struts 1.1 版本有两种配置方式,分别是:

在web.XML 中

<servlet-class>
      org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>
      application
</param-name>
<param-value>
      com.systemmobile.example.ApplicationResources
</param-value>
</init-param>
</servlet>
这种方式支持将配置文件放置于classpath 之外的目录。

第二种,struts 配置文件当中:

<message-resources key="myResources" parameter="com.systemmobile.example.ApplicationResources"/>
这种方式默认配置文件只能放置于classpath 下。当然你可以通过设置factory 属性来进行扩展。

并且struts1.2 起,不在支持第一种方式。

要扩展,需要了解java 资源文件读取方式,因为读取不到servletContext 也就无法获取到web根目录。只能通过ClassLoader 方式来获取。

附常用加载资源方式区别:

Class.getResourceAsStream和ClassLoader.getResourceAsStream

两个都可以用于从 classpath 里面进行资源读取,  classpath包含classpath中的路径和classpath中的jar。


两个方法的区别是资源的定义不同, 一个主要用于相对与一个object取资源,而另一个用于取相对于classpath的资源,用的是绝对路径。


在使用Class.getResourceAsStream 时, 资源路径有两种方式, 一种以 / 开头,则这样的路径是指定绝对

路径, 如果不以 / 开头, 则路径是相对与这个class所在的包的。


在使用ClassLoader.getResourceAsStream时, 路径直接使用相对于classpath的绝对路径。


举例,下面的三个语句,实际结果是一样的:

com.explorers.Test.class.getResourceAsStream("abc.jpg")

com.explorers.Test.class.getResourceAsStream("/com/explorers/abc.jpg")

ClassLoader.getResourceAsStream("com/explorers/abc.jpg")


    留下足迹