`

Struts2 直接输出字符 type="stream"

 
阅读更多

1. 用json 不能解决的问题

 

有时我们用java 把json 对象用字符串拼接好后

1) 定义一个inputstream 

2)定义Action

 

 

package com.bs023.msvs.action;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

/**
 * 测试Action
 * @author liuqing
 * @version 1.0
 */
public class TestAction {
	
	private String username;
	
	private String password;
	
	//写一个输出流
	private InputStream json;
	
	public String add() {
		try {
		    //中文转码问题
			this.username = "username _=======222==刘庆==qing";
			this.json = new ByteArrayInputStream(this.username.getBytes());
		} 
		catch (Exception e) {
			e.printStackTrace();
		}
		return "add";
	}
	
	public OutputStream output() throws IOException {
		return ServletActionContext.getResponse().getOutputStream();
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public InputStream getJson() {
		return json;
	}

	public void setJson(InputStream json) {
		this.json = json;
	}

}

 

2.配置文件

 

 <action name="test" class="testAction" method="add">
       		<result name="add" type="stream">
       		    <param name="contentType">text/html;charset=UTF-8</param>
       			<param name="inputName">json</param>
       		</result>
       </action>

 

 

3. 运行结果

 

http://127.0.0.1:8080/upsn/usermanager/test.action

 

 

username _=======222==刘庆==qing

 

 

4.方法二使用ServletActionContext

 

 

package com.bs023.msvs.action;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

/**
 * 测试Action
 * @author liuqing
 * @version 1.0
 */
public class TestAction {
	
	private String username;
	
	private String password;
	
	//写一个输出流
	private InputStream json;
	
	public String add() {
		try {
			
			PrintWriter out = new PrintWriter(this.output());
			out.println("我是中国人");
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public OutputStream output() throws IOException {
		//通过struts2 调用Response
		HttpServletResponse reponse = ServletActionContext.getResponse();
		reponse.setContentType("text/html;charset=UTF-8");
		return reponse.getOutputStream();
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public InputStream getJson() {
		return json;
	}

	public void setJson(InputStream json) {
		this.json = json;
	}

}
 

 

 

 

 

 

分享到:
评论

相关推荐

    struts2 生成验证码

    ### Struts2 生成验证码知识点解析 #### 一、引言 在Web应用程序开发中,验证码是一种常见的安全机制,用于防止自动化的恶意攻击,如垃圾邮件发送或非法登录尝试等。Struts2作为一款流行的Java Web应用框架,支持...

    struts2 中文文件名文件下载

    在“struts2 中文文件名文件下载”的场景中,我们需要关注的是如何在Struts2框架下正确处理包含中文字符的文件名。首先,我们要理解文件名编码ISO8859-1,这是一个西欧字符编码标准,不支持中文字符。在处理中文...

    Struts2中实现文件下载(修正中文问题).pdf

    然而,对于包含中文字符的文件名,直接使用会导致乱码问题。为了解决这个问题,我们需要对文件名进行编码转换。 在Struts2中,可以通过`FileDownloadAction2`类和对应的配置来处理中文文件名。类中需要有一个`...

    Struts2--result配置的各种视图转发类型

    Struts2是一个强大的MVC框架,它为Java Web应用程序提供了结构和控制机制。在Struts2中,结果(Result)是Action执行后控制流程的重要部分,它负责将处理后的数据或者控制逻辑转向合适的视图。这篇博文将深入探讨...

    Struts2 result和type

    ### Struts2中的Result与Type详解 #### 一、引言 在Struts2框架中,`Result`和`Type`是两个非常重要的概念。它们主要用于控制Action执行完毕后页面的跳转方式以及如何处理Action返回的结果。通过合理配置`Result`与...

    Struts2文件上传和下载教程

    - **原理**: Struts2自身不直接处理`multipart/form-data`请求,而是调用第三方组件(如Commons-FileUpload)来解析文件上传数据。 - **配置**: 默认使用Commons-FileUpload框架,需要在项目中引入两个JAR文件:...

    struts2实现文件下载

    Struts2的文件下载主要通过`&lt;result type="stream"&gt;`元素来配置,该元素允许将一个输入流转化为HTTP响应流,从而实现文件的下载。在配置文件`struts.xml`中,我们需要定义一个Action,指定其类型为`stream`,并通过...

    struts2视频自学总结

    对于文件下载,Struts2也提供了便捷的支持,通常通过`&lt;result type="stream"&gt;`元素指定文件的下载方式。 #### 结论 通过本文的介绍,我们深入了解了Struts2框架的关键特性和配置方法,包括环境搭建、动态方法调用...

    struts2 教程 讲义.(pdf)

    Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、结构清晰的MVC(Model-View-Controller)架构的Web应用。本教程讲义深入浅出地介绍了Struts2的核心概念和技术,旨在帮助开发者快速掌握这个框架的...

    Struts2_JSON_Demo

    - **Result类型**:Struts2支持多种Result类型,如`dispatcher`(默认),`stream`,`freemarker`等,JSON结果类型允许将数据以JSON格式返回给客户端。 - **配置文件**:`struts.xml`是Struts2的核心配置文件,...

    Struts2_入门篇_基本配置_通配符_参数注入_内置对象获取等。。。

    6. **结果类型(Result Type)**:Struts2提供了多种Result类型,如`dispatcher`(默认类型,用于转发到JSP页面)、`stream`(用于处理文件下载)、`redirect`(重定向)等。通过Result类型的配置,我们可以灵活地...

    ueditor struts2图片上传问题解决办法

    在Struts2中,可以通过Action配置文件设定上传后文件的保存路径,如使用`&lt;result type="stream"&gt;`结果类型,并指定`contentType`、`inputName`、`fileName`等属性。 6. **Struts2 Action配置**: 创建一个专门处理...

    struts2+poi实现导出Excel文件

    然后,将这个输出流作为输入流提供给 Struts2 的结果配置,通过 `HttpServletRequest` 获取请求响应对象,设置响应头(如 Content-Type 和 Content-Disposition),最后将输出流写入响应输出流,完成文件下载。...

    struts2文件下载

    在Struts2中,Action是处理业务逻辑的组件,它可以响应用户的请求,并返回一个表示操作结果的字符串,Struts2会根据这个结果决定下一步的操作。 在`result.jsp`页面中,我们看到上传成功后的文件名被列出,每个...

    struts中文乱码问题解决详细步骤

    3. **配置Struts2**:在Struts2的配置文件`struts-default.xml`或自定义的配置文件中,设置全局结果类型`stream`的编码: ```xml &lt;constant name="struts.i18n.encoding" value="UTF-8"/&gt; ``` **方法二:配置...

    基于Struts2.3的多文件批量上传/下载

    Struts2是一个强大的MVC(模型-视图-控制器)框架,用于构建Java Web应用程序。在Struts2.3版本中,它提供了丰富的功能来处理文件上传和下载,这在Web开发中是常见的需求。本篇文章将深入探讨如何在Struts2.3环境下...

    struts2学习笔记三

    - COS(CometD Object Stream):Struts2曾经支持,但现在已停止更新。 -pell:另一个Struts2支持的上传组件,但其活跃度可能不如其他组件。 2. Struts2中的fileUpload拦截器: fileUpload拦截器是Struts2处理...

    struts2.1.3 简单下载文件

    &lt;result type="stream"&gt; &lt;param name="contentType"&gt;application/octet-stream &lt;param name="inputName"&gt;filePath &lt;param name="contentDisposition"&gt;attachment;filename="yourfile.ext" &lt;param name="buffer...

Global site tag (gtag.js) - Google Analytics