Struts2中Action方法默认返回一个String,改字符串会匹配struts.xml中的result去找对应的jsp页面,也就是说Action最终返回的是一个jsp页面。但是很多时候我们也需要用Struts2去返回一个普通的String(不是jsonString),那么有如下两种方法实现,这两种方法同适用于Android客户端请求后返回String的响应。
方法一:Action.java中的代码如下。struts.xml中配置不变
public String execute() throws Exception { //注意:加上这句就必须设置响应的编码格式,否则会出现乱码 HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String dbusername = "Charles"; if (username.equals(dbusername)) { out.println("seccess");//返回的字符串数据 return null; } return null; }
方法二:
TextStringAction.java
public class TextStringAction extends ActionSupport{ // input属性 private String username; private String password; // output属性 private InputStream inputStream; //这个名字和struts.xml中对应,不能写错 public InputStream getInputStream() { return inputStream; } public void setInputStream(InputStream inputStream) { this.inputStream = inputStream; } public String execute() throws Exception { String dbusername = "Charles"; if (username.equals(dbusername)) { inputStream = new ByteArrayInputStream("success成功" .getBytes("UTF-8")); return "success"; } return null; } // ------------省略getter/setter--------- }
struts.xml中设置resultType为stream.
<action name="testString" class="com.tarena.web.TextStringAction"> <result type="stream"> <param name="contentType">text/html</param> <param name="inputName">inputStream</param> </result> </action>