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 生成验证码知识点解析 #### 一、引言 在Web应用程序开发中,验证码是一种常见的安全机制,用于防止自动化的恶意攻击,如垃圾邮件发送或非法登录尝试等。Struts2作为一款流行的Java Web应用框架,支持...
在“struts2 中文文件名文件下载”的场景中,我们需要关注的是如何在Struts2框架下正确处理包含中文字符的文件名。首先,我们要理解文件名编码ISO8859-1,这是一个西欧字符编码标准,不支持中文字符。在处理中文...
然而,对于包含中文字符的文件名,直接使用会导致乱码问题。为了解决这个问题,我们需要对文件名进行编码转换。 在Struts2中,可以通过`FileDownloadAction2`类和对应的配置来处理中文文件名。类中需要有一个`...
Struts2是一个强大的MVC框架,它为Java Web应用程序提供了结构和控制机制。在Struts2中,结果(Result)是Action执行后控制流程的重要部分,它负责将处理后的数据或者控制逻辑转向合适的视图。这篇博文将深入探讨...
### Struts2中的Result与Type详解 #### 一、引言 在Struts2框架中,`Result`和`Type`是两个非常重要的概念。它们主要用于控制Action执行完毕后页面的跳转方式以及如何处理Action返回的结果。通过合理配置`Result`与...
- **原理**: Struts2自身不直接处理`multipart/form-data`请求,而是调用第三方组件(如Commons-FileUpload)来解析文件上传数据。 - **配置**: 默认使用Commons-FileUpload框架,需要在项目中引入两个JAR文件:...
Struts2的文件下载主要通过`<result type="stream">`元素来配置,该元素允许将一个输入流转化为HTTP响应流,从而实现文件的下载。在配置文件`struts.xml`中,我们需要定义一个Action,指定其类型为`stream`,并通过...
对于文件下载,Struts2也提供了便捷的支持,通常通过`<result type="stream">`元素指定文件的下载方式。 #### 结论 通过本文的介绍,我们深入了解了Struts2框架的关键特性和配置方法,包括环境搭建、动态方法调用...
Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、结构清晰的MVC(Model-View-Controller)架构的Web应用。本教程讲义深入浅出地介绍了Struts2的核心概念和技术,旨在帮助开发者快速掌握这个框架的...
- **Result类型**:Struts2支持多种Result类型,如`dispatcher`(默认),`stream`,`freemarker`等,JSON结果类型允许将数据以JSON格式返回给客户端。 - **配置文件**:`struts.xml`是Struts2的核心配置文件,...
6. **结果类型(Result Type)**:Struts2提供了多种Result类型,如`dispatcher`(默认类型,用于转发到JSP页面)、`stream`(用于处理文件下载)、`redirect`(重定向)等。通过Result类型的配置,我们可以灵活地...
在Struts2中,可以通过Action配置文件设定上传后文件的保存路径,如使用`<result type="stream">`结果类型,并指定`contentType`、`inputName`、`fileName`等属性。 6. **Struts2 Action配置**: 创建一个专门处理...
然后,将这个输出流作为输入流提供给 Struts2 的结果配置,通过 `HttpServletRequest` 获取请求响应对象,设置响应头(如 Content-Type 和 Content-Disposition),最后将输出流写入响应输出流,完成文件下载。...
在Struts2中,Action是处理业务逻辑的组件,它可以响应用户的请求,并返回一个表示操作结果的字符串,Struts2会根据这个结果决定下一步的操作。 在`result.jsp`页面中,我们看到上传成功后的文件名被列出,每个...
3. **配置Struts2**:在Struts2的配置文件`struts-default.xml`或自定义的配置文件中,设置全局结果类型`stream`的编码: ```xml <constant name="struts.i18n.encoding" value="UTF-8"/> ``` **方法二:配置...
Struts2是一个强大的MVC(模型-视图-控制器)框架,用于构建Java Web应用程序。在Struts2.3版本中,它提供了丰富的功能来处理文件上传和下载,这在Web开发中是常见的需求。本篇文章将深入探讨如何在Struts2.3环境下...
- COS(CometD Object Stream):Struts2曾经支持,但现在已停止更新。 -pell:另一个Struts2支持的上传组件,但其活跃度可能不如其他组件。 2. Struts2中的fileUpload拦截器: fileUpload拦截器是Struts2处理...
<result type="stream"> <param name="contentType">application/octet-stream <param name="inputName">filePath <param name="contentDisposition">attachment;filename="yourfile.ext" <param name="buffer...