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后端接口进行交互,包括前后端分离、接口设计、数据传输格式、跨域问题解决、以及接口测试等方面。 前后端分离 前后端分离是指将前端界面和后端数据接口分离开来,前端与后端之间通过HTTP/HTTPS协议进行通信,并通过JSON等数据传输格式进行数据交互。这样可以使前后端职责分离,提高代码复用性和可维护性。 接口设计 在进行…

    Java 2023年5月23日
    00
  • Android个人手机通讯录开发详解

    Android个人手机通讯录开发详解 概述 通讯录是手机操作系统中非常重要的一项功能,大多数APP,尤其是社交类APP都需要使用到该功能。本文将详细讲解如何在Android平台上开发个人手机通讯录,并提供两个示例。通讯录主要分为分组和联系人两个部分,下面将对这两部分进行详细介绍。 分组 分组主要用来对联系人进行分类,让用户能够更加方便地查找和编辑联系人信息。…

    Java 2023年5月20日
    00
  • JS文本框不能输入空格验证方法

    确保JS文本框输入内容不包含空格可以通过验证输入内容的方法来实现。以下是实现JS文本框不能输入空格的完整步骤: 第一步:获取文本框中用户输入的内容 使用 JavaScript 获取该文本框中用户输入的内容,可以使用 document.getElementById() 方法或其他选择器。 let userInput = document.getElementB…

    Java 2023年6月15日
    00
  • Java Base64解码错误及解决方法

    Java Base64解码错误及解决方法 背景 Base64是一种将二进制数据编码成ASCII字符可读格式的编码方式,常用于网络传输、数据存储等场景。Java提供了丰富的Base64编解码类库,如java.util.Base64或apache.commons.codec.binary.Base64等。 但在实际应用中,我们可能会遇到Base64解码错误的问题…

    Java 2023年5月20日
    00
  • java+SQL server2008学生信息管理系统源码

    下面是详细的攻略讲解: 1. 下载源码并导入到IDE中 首先,你需要从网站下载Java + SQL Server 2008学生信息管理系统的源码。该源码通常是一个压缩包。下载完成后,你需要解压该压缩包。解压完成后,你会看到一个文件夹,文件夹中包含了一些Java源代码和配置文件。 接下来,你需要将该源码导入到你的IDE中,比如Eclipse等IDE。具体的导入…

    Java 2023年5月20日
    00
  • Sprint Boot @Configuration使用方法详解

    @Configuration是Spring Boot中的一个注解,它用于标记一个类为配置类。配置类是一种特殊的类,它用于定义应用程序的配置信息,例如数据源、缓存、消息队列等。在Spring Boot中,我们可以使用@Configuration注解来定义配置类,并使用其他注解来定义配置信息。 @Configuration的作用 @Configuration注解…

    Java 2023年5月5日
    00
  • springboot的四种启动方式

    下面是关于Spring Boot的四种启动方式的详细攻略: 1. 命令行启动方式 在命令行中直接输入”java -jar”命令启动Spring Boot应用。在执行该命令时需要指定Jar包路径,例如: java -jar springboot-demo.jar 如果应用需要指定参数,可以在命令行中传入。 2. Maven插件启动方式 使用Spring Boo…

    Java 2023年5月15日
    00
  • Eclipse中配置Maven build打包的方法步骤

    下面是详细的攻略过程。 Eclipse中配置Maven Build打包的方法步骤 1. 配置Maven环境变量 在Windows系统中,需要将Maven安装路径中的bin目录添加到系统的Path环境变量中。打开控制面板,搜索“环境变量”,点击“编辑系统环境变量”,找到“Path”变量,点击“编辑”,在弹出的窗口中添加Maven的bin目录路径。Mac和Lin…

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