在java开发中,有时在Struts2的action方法中仅需要直接输出一些文本信息,比如ajax请求,返回仅仅需要一些文本信息即可,Struts2同样支持,首先编写action类,在action类的方法中得到输出流然后进行文本输出,然后在struts2的配置文件中配置action,[后面步骤其实可不用]如有result则设置其type属性设置为plainText,即
- <result name="xName" type="plainText">...</result>
方案二,[ 简洁,推荐使用 ]
方案二其实跟上面的的原理相似,具体不同原因分析,因为是直接输出文本信息,即action的方法中没有必要进行返回操作,故函数返回值类型可为void,再看action仅仅在Struts2的配置文件中进行配置,仅让Struts2找到action,不再需要任何的result元素;整个流程即:让Struts2找到action,然后在action方法中直接进行输出文本信息即可,具体如下:
1,在Struts配置文件中配置action
便于理解,首先看struts2的配置文件(实际配置文件应该是最后一步完成的),其中仅仅在Struts2中配置action;
- <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
- "http://struts.apache.org/dtds/struts-2.1.dtd">
- <struts>
- <package name="myStruts2" extends="struts-default" namespace="/">
- <action name="test2Action" class="com.xxxName.actions.Test2Action" method="myExecute">
- <!-- 仅仅在Struts2中配置该action,目的是让Struts2认识/找到该action,不需要任何result,因返回为void -->
- </action>
- </package>
- </struts>
2,Action类文件编写
- package com.xxxName.actions;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.Date;
- import javax.servlet.ServletException;
- import org.apache.struts2.ServletActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class Test2Action extends ActionSupport{
- private String contentType = "text/html;charset=utf-8"; //text/plain
- public void myExecute() throws ServletException, IOException{ //返回类型为void
- //指定输出内容类型和编码
- ServletActionContext.getResponse().setContentType(contentType);
- //获取输出流,然后使用
- PrintWriter out = ServletActionContext.getResponse().getWriter();
- try{
- //直接进行文本操作
- out.print("Hello java, 这里是struts2, 在action方法中直接输出文本信息.");
- out.print("Time: " + (new Date()).getTime());
- out.flush();
- out.close();
- }catch(Exception ex){
- out.println(ex.toString());
- }
- //说明:因函数返回类型为void类型,即可不用返回,直接输出;
- }
- }
当然这里仅仅涉及到于此标题有关呢的关键步骤,整个项目要运行起来还需要其它建立,最后如果项目建立完成了,配置到服务器(如Tomcat中),
假设Tomcat端口为8080,项目名为J2EE001,action匹配的后缀为.action,那么访问如下URL:
即可看到直接输出地文本,而不是转到别的页面。