成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Struts2教程:在Action類中獲得HttpServletResponse對象

開發 后端
本文為Struts2教程,本部分教你如何在Action類中獲得HttpServletResponse對象。Struts2雖然在大版本號上是第二個版本,但基本上在配置和使用上已經完全顛覆了Struts1.x的方式。

在struts1.x Action類的execute方法中,有四個參數,其中兩個就是response和request。而在Struts2中,并沒有任何參數,因此,就不能簡單地從execute方法獲得HttpServletResponse或HttpServletRequest對象了。

但在Struts2 Action類中仍然有很多方法可以獲得這些對象。下面就列出四種獲得這些對象的方法。

【方法1】使用Struts2 Aware攔截器

這種方法需要Action類實現相應的攔截器接口。如我們要獲得HttpServletResponse對象,需要實現org.apache.struts2.interceptor.ServletResponseAware接口,代碼如下:

  1. package action;  
  2.  
  3. import com.opensymphony.xwork2.ActionSupport;  
  4. import javax.servlet.http.*;  
  5. import org.apache.struts2.interceptor.*;  
  6.  
  7. public class MyAction extends ActionSupport implements ServletResponseAware  
  8. {  
  9.     private javax.servlet.http.HttpServletResponse response;  
  10.     // 獲得HttpServletResponse對象  
  11.     public void setServletResponse(HttpServletResponse response)  
  12.     {  
  13.         this.response = response;  
  14.     }      
  15.     public String execute() throws Exception  
  16.     {      
  17.         response.getWriter().write("實現ServletResponseAware接口");  
  18.     }  
  19. }  

在上面的代碼中,MyAction實現了一個ServletResponseAware接口,并且實現了setServletResponse方法。如果一個動作類實現了ServletResponseAware接口,Struts2在調用execute方法之前,就會先調用setServletResponse方法,并將response參數傳入這個方法。如果想獲得HttpServletRequest、HttpSession和Cookie等對象,動作類可以分別實現ServletRequestAware、SessionAware和CookiesAware等接口。這些接口都在org.apache.struts2.interceptor包中。

如果要獲得請求參數,動作類可以實現org.apache.struts2.interceptor. ParameterAware接口,但如果只想判斷某個參數是否存在,也可以實現com.opensymphony.xwork2.interceptor. ParameterNameAware接口。這個接口有一個acceptableParameterName方法,當Struts2獲得一個請求參數時,就會調用一次。讀者可以在這個方法中將所有的請求參數記錄下來,以便以后使用。這個方法的定義如下:

boolean acceptableParameterName(String parameterName);

【方法2】使用RequestAware攔截器

這種方法和第1種方法類似。動作類需要實現一個org.apache.struts2.interceptor.RequestAware接口。所不同的是RequestAware將獲得一個com.opensymphony.xwork2.util.OgnlValueStack對象,這個對象可以獲得response、request及其他的一些信息。代碼如下所示:

  1. package action;  
  2.  
  3. import java.util.Map;  
  4. import org.apache.struts2.*;  
  5. import com.opensymphony.xwork2.ActionSupport;  
  6. import javax.servlet.http.*;  
  7. import com.opensymphony.xwork2.util.*;  
  8. import org.apache.struts2.interceptor.*;  
  9.  
  10. public class FirstAction extends ActionSupport implements RequestAware  
  11. {  
  12.     private Map request;  
  13. private HttpServletResponse response;  
  14.       
  15.     public void setRequest(Map request)  
  16.     {  
  17.         this.request = request;          
  18.     }      
  19.     public String execute() throws Exception  
  20.     {      
  21.         java.util.Set< String> keys = request.keySet();  
  22.         // 枚舉所有的key值。實際上只有一個key:struts.valueStack  
  23.         for(String key: keys)  
  24.             System.out.println(key);  
  25.         // 獲得OgnlValueStack 對象  
  26.         OgnlValueStack stack = (OgnlValueStack)request.get("struts.valueStack");  
  27.         // 獲得HttpServletResponse對象  
  28.         response = (HttpServletResponse)stack.getContext().get(StrutsStatics.HTTP_RESPONSE);  
  29.         response.getWriter().write("實現RequestAware 接口");  
  30.     }  
  31. }  

我們也可以使用StrutsStatics.HTTP_REQUEST、StrutsStatics.PAGE_CONTEXT來獲得HttpServletRequest和PageContext對象。這種方法有些麻煩,一般很少用,讀者可以作為一個參考。

【方法3】使用ActionContext類

這種方法比較簡單,我們可以通過org.apache.struts2.ActionContext類的get方法獲得相應的對象。代碼如下:

HttpServletResponse response = (HttpServletResponse)

ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);

HttpServletRequest request = (HttpServletRequest)

ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);

【方法4】使用ServletActionContext類

Struts2為我們提供了一種最簡單的方法獲得HttpServletResponse及其他對象。這就是org.apache.struts2.ServletActionContext類。我們可以直接使用ServletActionContext類的getRequest、getResponse方法來獲得HttpServletRequest、HttpServletResponse對象。代碼如下:

HttpServletResponse response = ServletActionContext.getResponse()

response.getWriter().write("hello world");

從這四種方法來看,***一種是最簡單的,讀者可以根據自己的需要和要求來選擇使用哪一種方法來獲得這些對象。

【編輯推薦】

  1. Struts2教程:使用Validation框架驗證數據
  2. Struts2教程:使用validate方法驗證數據
  3. Struts2教程:struts.xml常用配置解析
  4. Struts2教程:處理一個form多個submit
  5. Struts2教程:***個Struts2程序
責任編輯:yangsai 來源: JavaEye
相關推薦

2009-02-01 10:05:00

2009-06-25 15:11:28

Struts2教程Struts2程序

2009-02-04 10:51:07

2009-06-25 16:04:30

2009-06-03 14:19:34

Struts2Guice

2011-08-11 13:02:43

Struts2Junit

2009-06-25 15:26:25

Struts2教程struts.xml常

2009-02-04 15:04:13

2009-06-25 15:50:03

Struts2教程上傳任意多個文件

2009-06-25 15:54:42

Struts2教程攔截器

2009-02-04 11:37:15

2009-07-29 09:54:34

struts2和str

2009-06-25 15:33:12

Struts2教程使用validate驗證數據

2009-02-04 14:19:38

2009-06-25 15:37:12

Struts2教程Validation框

2009-02-04 14:00:59

2009-09-14 19:31:36

Struts1和Str

2009-02-04 12:00:08

2009-06-25 15:59:21

Struts2教程攔截器

2009-06-04 08:53:57

struts2視頻教程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品小视频 | 国内精品一区二区三区 | 国产一区二区三区在线看 | 9191在线观看 | 免费亚洲网站 | 日韩一级免费看 | 青草青草久热精品视频在线观看 | 欧美日韩中文字幕 | 国产精品久久久久久久久久免费看 | 欧美性视频在线播放 | 成人在线免费视频观看 | av在线免费观看网址 | av永久免费| 国产精品电影在线观看 | 在线免费黄色小视频 | 日韩精品一区二区三区中文字幕 | 韩日av片 | 日本手机看片 | 午夜精品一区二区三区在线观看 | 伊人网站 | 久久综合九色综合欧美狠狠 | 成人亚洲视频 | 在线观看欧美一区 | 亚洲黄色视屏 | 午夜伦4480yy私人影院 | 国产乱码精品一区二区三区中文 | 一级黄大片 | 99久久精品国产一区二区三区 | 97精品视频在线观看 | 国产美女高潮 | 国产成人综合av | 1级毛片| 国产在线观看免费 | 99精品欧美一区二区三区 | 亚洲欧美国产视频 | 亚洲激精日韩激精欧美精品 | 国产午夜精品视频 | 亚卅毛片 | 欧美久久国产精品 | 伊人超碰在线 | 国产不卡一 |