Struts2学习教程之Action类如何访问WEB资源

为了让Action类能够访问WEB资源,需要进行以下几个步骤:

1. 在struts.xml中进行配置

在struts.xml中需要配置一个<constant>元素,设置resourceBase属性为需要访问的WEB资源的路径。

示例代码:

<constant name="struts.convention.result.path" value="/WEB-INF/views/" />
<constant name="struts.convention.default.parent.package" value="convention-default" />
<constant name="struts.convention.package.locators" value="struts.convention.package.locators.PackageLocators" />

<constant name="struts.resources.dir" value="/resources" />
<constant name="struts.resources.static.path" value="/resources" />
<constant name="struts.resources.allow.all" value="true" />
<constant name="struts.devMode" value="true" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.custom.i18n.resources" value="i18n" />
<constant name="struts.configuration.xml.reload" value="false" />

<constant name="struts.mapper.action.prefix.enabled" value="true"/>
<constant name="struts.action.extension" value="do,," />
<constant name="struts.action.excludePackagePrefixes" value="org.apache.struts.*,com.opensymphony.*,com.sun.*,javax.servlet.*,javax.swing.*" />

<constant name="struts.excludedPackageNamePatterns" value="com\\.sun\\..*,javax\\.swing\\..*" />
<constant name="struts.excludedSubpackageNames" value="example" />
<constant name="struts.convention.action.suffix" value="Action" />
<constant name="struts.convention.action.mapAllMatches" value="false" />
<constant name="struts.convention.action.packages" value="com.example.action" />
<constant name="struts.convention.default.parent.package" value="struts-default" />

<!-- 设置资源的路径 -->
<constant name="struts.convention.resource.path" value="/public-resources/" />

2. 编写Action类

编写一个Action类,并在其中使用资源路径访问WEB资源。

示例代码:

import com.opensymphony.xwork2.ActionSupport;

public class ResourceAction extends ActionSupport {

    private static final long serialVersionUID = -1185303825847418018L;

    public String execute() throws Exception {
        // 访问resources文件夹下的image.png图片
        String imagePath = "/resources/image.png";
        InputStream in = ServletActionContext.getServletContext().getResourceAsStream(imagePath);

        return SUCCESS;
    }
}

在execute方法中,通过访问ServletContext中的getResourceAsStream方法,获取需要访问的WEB资源的输入流。

3. 使用访问到的WEB资源

在execute方法中访问到的WEB资源可以使用Java的IO流进行读取,可以存储到本地,也可以动态返回给客户端。

下面是一个示例代码,将访问到的图片输出到浏览器上:

import com.opensymphony.xwork2.ActionSupport;

import org.apache.struts2.ServletActionContext;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;

public class ResourceAction extends ActionSupport {

    private static final long serialVersionUID = -1185303825847418018L;

    public String execute() throws Exception {
        // 访问resources文件夹下的image.png图片
        String imagePath = "/resources/image.png";
        InputStream in = ServletActionContext.getServletContext().getResourceAsStream(imagePath);
        // 获取response
        HttpServletResponse response = ServletActionContext.getResponse();
        ServletOutputStream out = response.getOutputStream();

        byte[] buffer = new byte[1024 * 4];
        int length;
        while ((length = in.read(buffer)) != -1) {
            out.write(buffer, 0, length);
        }
        in.close();
        out.flush();
        return SUCCESS;
    }
}

在该示例代码中,获取到了HttpServletResponse,通过ServletOutputStream将访问到的WEB资源输出到浏览器上。

以上是Action类如何访问WEB资源的完整攻略,以上的示例代码中都是为了访问/resources文件夹下的资源。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Struts2学习教程之Action类如何访问WEB资源 - Python技术站

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

相关文章

  • Java函数式编程(三):列表的转化

    Java函数式编程(三):列表的转化指的是如何使用函数式编程的思想来对列表进行转化操作。常见的列表转化操作有过滤、映射、归约等。下面是本文的完整攻略。 1. 列表的创建 在进行列表转化之前,我们首先需要了解如何创建一个Java列表。Java中列表的创建可以使用Java集合框架中的ArrayList类。可以通过以下方法进行创建: List<Integer…

    Java 2023年5月26日
    00
  • MVC文件上传支持批量上传拖拽及预览文件内容校验功能

    下面我将详细讲解“MVC文件上传支持批量上传拖拽及预览文件内容校验功能”的完整攻略: 环境搭建 为了完成文件上传的功能,我们需要在项目中引入一些必要的依赖项。在ASP.NET Core MVC项目中,我们可以通过NuGet管理器安装以下几个依赖项: Microsoft.AspNetCore.Http Microsoft.AspNetCore.Mvc Micr…

    Java 2023年5月19日
    00
  • jsp编程获取当前目录下的文件和目录及windows盘符的方法

    获取当前目录下的文件和目录方法一般分为两步: 获取当前目录的绝对路径。 遍历当前目录,获取其中所有的文件和目录。 具体的步骤如下: 1. 获取当前目录的绝对路径 在 JSP 中,可以通过 pageContext 对象的 getServletContext() 方法获取 ServletContext 对象,然后通过 getRealPath() 方法获取当前应用…

    Java 2023年6月15日
    00
  • mysql-connector-java与mysql版本的对应关系说明

    MySQL Connector/J 是MySQL提供的一个JDBC驱动程序,可以用来连接Java程序和MySQL数据库。不同版本的MySQL Connector/J与不同版本的MySQL数据库具有不同的兼容性,下面是针对不同版本的mysql-connector-java和MySQL数据库兼容性的说明。 MySQL Connector/J 8.0与MySQL版…

    Java 2023年5月20日
    00
  • Java中的ClassNotFoundException是什么?

    ClassNotFoundException是Java中的一种异常类型,表示虚拟机在试图加载类时无法找到指定的类。 当Java虚拟机无法找到某个类时,会抛出ClassNotFoundException异常。通常情况下,这种情况发生在以下几种情形中: 使用Class.forName()方法加载类时,指定的类不存在; 使用ClassLoader.loadClas…

    Java 2023年4月27日
    00
  • SpringBoot集成WebSocket实现前后端消息互传的方法

    下面是 SpringBoot 集成 WebSocket 实现前后端消息互传的完整攻略。 简介 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得浏览器和服务器之间的实时通信变得更加容易。Spring Boot 提供了一个强大的 WebSocket 模块,可以轻松实现 WebSocket 的集…

    Java 2023年5月19日
    00
  • Java中替换HTML标签的方法代码

    下面是详细讲解Java中替换HTML标签的方法代码的完整攻略: 问题描述 在开发过程中,我们有时需要替换一段字符串中的HTML标签,比如获取网页文本内容时,需要将HTML标签去掉,只留下纯文本内容。那么Java中该如何实现呢? 解决方案 Java中可以使用正则表达式提取和替换HTML标签的方法,具体步骤如下: 1. 获取文本内容 首先我们需要获取包含HTML…

    Java 2023年5月27日
    00
  • Arthas排查Kubernetes中应用频繁挂掉重启异常

    以下是 Arthas 排查 Kubernetes 中应用频繁挂掉重启异常的完整攻略。 确认场景 首先,需要确认场景。用户反馈应用经常挂掉重启,需要排查问题。该应用运行在 Kubernetes 集群中。需要确定:是所有的节点都有相同的问题,还是只有某个节点有问题。同时,需要定位是否是应用级别的问题。 安装 Arthas 因为需要使用到 Arthas 工具,所以…

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