在java開發中,有時在Struts2的action方法中僅須要直接輸出一些文本信息,好比ajax請求,返回僅僅須要一些文本信息便可,Struts2一樣支持,首先編寫action類,在action類的方法中獲得輸出流而後進行文本輸出,而後在struts2的配置文件中配置action,[後面步驟其實可不用]若有result則設置其type屬性設置爲plainText,即html
- <result name="xName" type="plainText">...</result>
同時在result元素中給action設置一些參數便可完成,具體步驟分下面兩種方案以下:java
方案一:[常見,不推薦使用]ajax
1,在Struts配置文件中配置action
便於理解,首先看struts2的配置文件(實際配置文件應該是最後一步完成的), 其中僅僅定義一個action,注意result元素的各個屬性和內部的param元素;apache
- <?xml version="1.0" encoding="UTF-8" ?>
- <!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="testAction" class="com.xxxName.actions.TestAction" method="myExecute">
- <result name="success" type="plainText">
-
- <param name="charSet">UTF-8</param>
-
- <param name="location">/testout.jsp</param>
-
- </result>
- </action>
- </package>
- </struts>
2,創建本地依附文件服務器
在合適路徑下建立一個JSP文件,提供action進行依附,該文件內容能夠爲空,也可含HTML元素等,但實際都不用到,僅僅提供action進行本地依附做用,可多個action共享該文件;
3,Action類文件編寫jsp
- 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 TestAction extends ActionSupport{
- private String contentType = "text/html;charset=utf-8";
- public String myExecute() throws ServletException, IOException{
-
- 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());
- }
- return "success";
- }
- }
方案二,[ 簡潔,推薦使用 ]函數
方案二其實跟上面的的原理類似,具體不一樣緣由分析,由於是直接輸出文本信息,即action的方法中沒有必要進行返回操做,故函數返回值類型可爲void,再看action僅僅在Struts2的配置文件中進行配置,僅讓Struts2找到action,再也不須要任何的result元素;整個流程即:讓Struts2找到action,而後在action方法中直接進行輸出文本信息便可,具體以下:編碼
1,在Struts配置文件中配置actionspa
便於理解,首先看struts2的配置文件(實際配置文件應該是最後一步完成的),其中僅僅在Struts2中配置action;.net
- <!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">
-
- </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";
- public void myExecute() throws ServletException, IOException{
-
- 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());
- }
-
- }
- }
方案二中省去了本地文件的創建,同時配置文件也變得至關簡單,只須要在action的方法中獲取輸出流,設置輸出類型和編碼,而後便可直接進行文本輸出操做,推薦使用方案二;
固然這裏僅僅涉及到於此標題有關呢的關鍵步驟,整個項目要運行起來還須要其它創建,最後若是項目創建完成了,配置到服務器(如Tomcat中),
假設Tomcat端口爲8080,項目名爲J2EE001,action匹配的後綴爲.action,那麼訪問以下URL:
http:localhost:8080/J2EE001/test2Action.action 便可看到直接輸出地文本,而不是轉到別的頁面。