下面是关于“struts2静态资源映射代码示例”的完整攻略。
什么是struts2静态资源映射?
struts2有一个默认的静态资源映射器,会将静态资源(例如图片、CSS、JavaScript文件等)映射到web应用的根目录下,从而可以在浏览器中通过相对路径来访问。
但是,有时候我们需要将这些静态资源放到web应用的其他目录中,或者更改其访问路径,这时就需要手动配置一个静态资源映射器。
如何配置静态资源映射?
在struts.xml文件中添加以下配置,来手动配置一个静态资源映射器:
<constant name="struts.action.extension" value="html" />
<package name="default" extends="struts-default">
<default-action-ref name="index" />
<action name="staticContent" class="org.apache.struts2.result.StaticResult" />
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
<result name="error">/WEB-INF/pages/error.jsp</result>
<result name="index" type="tiles">indexLayout</result>
<global-results>
<result name="error" type="redirect">/error.html</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error" />
</global-exception-mappings>
<interceptors>
<interceptor name="authenticationInterceptor" class="com.brainysoftware.actions.AuthenticationInterceptor" />
<interceptor-stack name="securityStack">
<interceptor-ref name="exception">
<param name="logEnabled">true</param>
<param name="logLevel">ERROR</param>
</interceptor-ref>
<interceptor-ref name="authenticationInterceptor" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="securityStack" />
</package>
<constant name="struts.mapper.staticSuffix" value=".ext" />
<constant name="struts.mapper.staticMappings" value="/static=${staticContent}" />
上述配置含义如下:
- 首先,将struts.action.extension属性设置为html。
- 然后,定义一个静态资源处理器StaticResult,用于将静态资源发给请求。静态资源处理器是Struts2提供的默认结果类型之一。
- 设置tiles视图结果类型,以支持使用tiles作为模板引擎。
- 定义默认结果和错误结果。
- 定义全局结果和异常映射。
- 最后,设定静态资源映射的后缀和路径。
接下来,我们提供两个代码示例来演示如何使用struts2静态资源映射器。
示例一:更改静态资源访问路径
例如,我们有一个CSS文件app.css,希望将它放在web应用的css目录下,并通过url /dev/css/app.css 在浏览器中访问。那么,可以在struts.xml中添加以下配置:
<constant name="struts.action.extension" value="html" />
<package name="default" extends="struts-default">
<default-action-ref name="index" />
<action name="staticContent" class="org.apache.struts2.result.StaticResult" />
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
<result name="error">/WEB-INF/pages/error.jsp</result>
<result name="index" type="tiles">indexLayout</result>
<global-results>
<result name="error" type="redirect">/error.html</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error" />
</global-exception-mappings>
<interceptors>
<interceptor name="authenticationInterceptor" class="com.brainysoftware.actions.AuthenticationInterceptor" />
<interceptor-stack name="securityStack">
<interceptor-ref name="exception">
<param name="logEnabled">true</param>
<param name="logLevel">ERROR</param>
</interceptor-ref>
<interceptor-ref name="authenticationInterceptor" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="securityStack" />
</package>
<constant name="struts.mapper.staticSuffix" value=".ext" />
<constant name="struts.mapper.staticMappings" value="/dev=/css" />
上述配置含义如下:
- 首先,将struts.action.extension属性设置为html。
- 然后,定义一个静态资源处理器StaticResult,用于将静态资源发给请求。
- 设置tiles视图结果类型,以支持使用tiles作为模板引擎。
- 定义默认结果和错误结果。
- 定义全局结果和异常映射。
6.最后,设定静态资源映射的后缀和路径。
示例二:更改静态资源访问路径方式
有时候,我们需要在URL中添加前缀来指定静态资源路径。例如,我们有一个CSS文件app.css,放在web应用的css目录下,并通过链接 /app/css/app.css 在浏览器中访问。这里演示如何配置struts2静态资源映射器,支持这种URL格式。
<constant name="struts.action.extension" value="html" />
<package name="default" extends="struts-default">
<default-action-ref name="index" />
<action name="staticContent" class="org.apache.struts2.result.StaticResult" />
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
<result name="error">/WEB-INF/pages/error.jsp</result>
<result name="index" type="tiles">indexLayout</result>
<global-results>
<result name="error" type="redirect">/error.html</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error" />
</global-exception-mappings>
<interceptors>
<interceptor name="authenticationInterceptor" class="com.brainysoftware.actions.AuthenticationInterceptor" />
<interceptor-stack name="securityStack">
<interceptor-ref name="exception">
<param name="logEnabled">true</param>
<param name="logLevel">ERROR</param>
</interceptor-ref>
<interceptor-ref name="authenticationInterceptor" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="securityStack" />
</package>
<constant name="struts.mapper.staticSuffix" value=".ext" />
<constant name="struts.mapper.staticMappings" value="/app=/css" />
上述配置添加了一条常量 struts.mapper.staticMappings
,将请求 /app/css/*.css
映射到web应用的 /css/*.css
指定的目录下,并将其静态资源返回给请求。
以上是使用struts2静态资源映射器的两个示例,希望对你有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:struts2静态资源映射代码示例 - Python技术站