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字符串正则表达式详解”的攻略吧。 Java字符串 正则表达式详解 什么是正则表达式? 正则表达式是一种通用的文本处理语言,它是用一种描述性的语言来描述一组字符串的集合,这个集合通常是某种字符序列。正则表达式用于快速地检索、替换那些符合某个模式的文本。其应用范围相当广泛,如文本编辑器、命令行工具、服务器端脚本等,也是Java中常用的操作字符…

    Java 2023年5月26日
    00
  • java-jsp springmvc-controller 传值到页面的方法

    下面是完整的攻略: Java JSP SpringMVC Controller传值到页面的方法 在Java Web开发中,SpringMVC是一种常用的框架。在开发过程中,我们经常需要在Controller中处理数据,然后将处理后的数据传递到页面中进行渲染。本文将介绍SpringMVC Controller传值到页面的几种方法。 1. Model和Model…

    Java 2023年6月15日
    00
  • Java客户端服务端上传接收文件实现详解

    Java客户端服务端上传接收文件实现详解 本文针对Java客户端与服务端之间的文件上传与接收过程进行详细讲解,包括服务端搭建、客户端实现、文件上传与接收等方面。 服务端搭建 服务端主要负责接收文件并进行处理。以下是搭建服务端的步骤: 创建一个Java项目 引入spring-boot-starter-web依赖(以Spring Boot为例) 创建文件上传接口…

    Java 2023年5月20日
    00
  • java中建立0-10m的消息(字符串)实现方法

    当需要在Java应用程序中建立0-10m的消息时,可以考虑使用下面三个步骤: 定义并使用字符串类 在Java中,我们可以使用String类来定义、操作和处理字符串。使用String类,我们可以通过构造函数、字符串字面值或者选择合适的字符串方法来创建、处理和操作字符串。如果需要连接两个字符串,可以使用+号操作符;如果要将字符串转换为整数、浮点数,可以使用各种强…

    Java 2023年5月27日
    00
  • Servlet实现共享数据JavaWeb组件的几种方法

    让我们来详细讲解一下“Servlet实现共享数据JavaWeb组件的几种方法”。 1. 什么是JavaWeb组件 JavaWeb组件是指在JavaWeb开发中,可以复用的独立模块。主要包括以下几种组件: Servlet:处理HTTP请求和响应的Java类。 JSP:以HTML页面为基础,嵌入Java代码实现动态网页。 Filter:在请求和响应之间对数据进行…

    Java 2023年5月20日
    00
  • mybatis-plus 如何操作json字段

    mybatis-plus 支持操作 JSON 数据类型,官方文档也提供了详细的使用说明,下面我来具体讲解如何操作 JSON 字段的完整攻略,包括如何插入、修改、查询和删除 JSON 数据。 1. 插入 JSON 数据 插入 JSON 数据可以使用 MyBatis-Plus 提供的 com.baomidou.mybatisplus.extension.hand…

    Java 2023年5月26日
    00
  • Tomcat网站发布配置方案详细说明

    Tomcat网站发布配置方案详细说明 简介 Tomcat是一个开源的、轻量级的、需要Java环境的Web服务器,被广泛应用于Java Web开发领域。本文将介绍如何在Tomcat上发布网站并进行配置。 步骤 1. 下载安装Tomcat 将安装包下载到本地,解压到指定目录。例如解压到目录/opt/tomcat。 2. 配置Tomcat 2.1 修改Tomcat…

    Java 2023年6月15日
    00
  • Java垃圾回收器的作用是什么?

    下面是详细讲解Java垃圾回收器的作用的完整使用攻略: 1. 垃圾回收器的作用 Java垃圾回收器的主要作用就是自动管理Java程序运行时的内存空间,在程序运行过程中及时释放不再使用的内存空间,提高程序的运行效率和稳定性。 当Java程序在运行时需要占用一定内存空间,当内存空间不够时,Java虚拟机就会启动垃圾回收器,自动回收无用的内存,以便腾出更多的空间给…

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