struts2静态资源映射代码示例

下面是关于“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}" />

上述配置含义如下:

  1. 首先,将struts.action.extension属性设置为html。
  2. 然后,定义一个静态资源处理器StaticResult,用于将静态资源发给请求。静态资源处理器是Struts2提供的默认结果类型之一。
  3. 设置tiles视图结果类型,以支持使用tiles作为模板引擎。
  4. 定义默认结果和错误结果。
  5. 定义全局结果和异常映射。
  6. 最后,设定静态资源映射的后缀和路径。

接下来,我们提供两个代码示例来演示如何使用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" />

上述配置含义如下:

  1. 首先,将struts.action.extension属性设置为html。
  2. 然后,定义一个静态资源处理器StaticResult,用于将静态资源发给请求。
  3. 设置tiles视图结果类型,以支持使用tiles作为模板引擎。
  4. 定义默认结果和错误结果。
  5. 定义全局结果和异常映射。
    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技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 计算机二级考试java软件操作教程 教大家如何学习java

    计算机二级考试Java软件操作教程 为什么学习Java? Java是一门跨平台的编程语言,在开发Web应用、移动应用、桌面应用等众多领域都有广泛应用。学习Java可以让程序员扩展自己的技能树,更好地适应市场需求。而计算机二级考试中也有Java相关的考察内容,学习Java可以更好地准备考试。 学习Java的基本步骤 下载安装Java开发环境(JDK)和集成开发…

    Java 2023年5月20日
    00
  • java限流算法详细

    Java限流算法详细攻略 什么是限流算法 限流算法是一种流行的控制流量的技术,通常是在高并发的系统中使用,用于控制请求的流量以避免系统过载。在某些情况下,如果系统不稳定地处理过多的请求,系统可能会崩溃,因此限流算法的作用显得尤为重要。 常见的限流算法 以下是几种常见的限流算法: 1.计数器算法 计数器算法是一种特别基础的算法,思路就是所有的请求都进入一个计数…

    Java 2023年5月19日
    00
  • 详解web存储中的storage

    详解Web存储中的Storage 一、Storage简介 Storage是Web API的一部分,提供了在浏览器本地存储数据的功能。Storage分为两种类型:localStorage和sessionStorage。 localStorage和sessionStorage的区别在于,localStorage中存储的数据没有时间限制,除非用户手动删除;而ses…

    Java 2023年6月15日
    00
  • Java开发常用类库之Hutool详解

    Java开发常用类库之Hutool详解 什么是Hutool Hutool是Java开发中的一套工具类库,它封装了一系列常用的Java工具类,包括字符串处理、日期时间处理、加密解密、敏感词过滤、Excel文件操作等。使用Hutool可以简化Java开发中的一些常见操作,提高开发效率,减少代码量。 安装Hutool 使用Hutool,需要在项目中引入Hutool…

    Java 2023年5月20日
    00
  • 浅谈Java中实现深拷贝的两种方式—clone() & Serialized

    Java中实现对象拷贝通常有两种方式:浅拷贝和深拷贝。浅拷贝只复制原对象中所有基本数据类型的值和引用类型变量的地址,而深拷贝则是在堆中重新开辟空间,将原对象的所有属性都复制到新的对象中去,新的对象与原始对象没有任何关联。本文将讲解Java中实现深拷贝的两种方式:clone()和Serialized。 使用clone()方法实现深拷贝 Java中Object类…

    Java 2023年5月19日
    00
  • JavaScript封装axios的实现详解

    JavaScript封装axios的实现详解 Axios是基于Promise的HTTP客户端,可以在浏览器和Node.js中使用。它简单易用、功能强大,逐渐成为前端开发中最常用的HTTP请求库之一。本篇文章将详细讲解如何封装axios,并提供两个示例进行说明。 封装axios 安装axios 在开始封装axios之前,我们需要先安装它。可以使用npm来安装a…

    Java 2023年6月15日
    00
  • Java应用打包成Docker镜像

    下面是Java应用打包成Docker镜像的完整攻略: 1. 准备工作 在开始之前,需要先确保已经安装好了Docker和Java开发环境。 2. 编写Dockerfile Dockerfile是定义Docker镜像构建过程的脚本文件。创建一个名为Dockerfile的文件并编写如下内容: FROM openjdk:8-jdk-alpine ADD target…

    Java 2023年5月26日
    00
  • Java Spring JdbcTemplate基本使用详解

    Java Spring JdbcTemplate基本使用详解 Java Spring JdbcTemplate是一个操作数据库的类库,对于Java开发者来说是一项重要的技能。在使用JdbcTemplate的过程中,需要遵循一些基本的使用规则,接下来我们将详细介绍JdbcTemplate的使用方法。 JdbcTemplate的简介 JdbcTemplate是S…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部