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

JSF如何使用ExternalContext

開發(fā) 后端
本文介紹JSF如何使用ExternalContext,使用ExternalContext類提供的方法可以獲取ServletContext、ServletRequest和ServletResponse對(duì)象,構(gòu)造FacesContext實(shí)例時(shí)需要這些對(duì)象。

使用ExternalContext類提供的方法可以獲取ServletContext、ServletRequest和ServletResponse 對(duì)象,構(gòu)造FacesContext實(shí)例時(shí)需要這些對(duì)象。除此之外,ExternalContext實(shí)例提供了包裝器方法,可以使用這些方法獲得原來需要從ServletContext、ServletRequest及ServletResponse對(duì)象上調(diào)用一些方法獲得的信息。

獲取ServletContext、ServletRequest和ServletResponse對(duì)象可使用下列方法獲取servlet信息:
◆getContext 此方法可獲取Web應(yīng)用中與當(dāng)前請(qǐng)求相關(guān)聯(lián)的ServletContext對(duì)象。其簽名如下:public abstract Object getContext()
◆getRequest 此方法可獲取代表當(dāng)前正在處理的請(qǐng)求的ServletRequest對(duì)象。其簽名如下:public abstract Object getRequest()
◆getResponse 此方法可獲取代表當(dāng)前正在呈現(xiàn)的響應(yīng)的ServletResponse對(duì)象。其簽名如下:public abstract Object getResponse()這些方法都是返回一個(gè)java.lang.Object對(duì)象,不是servlet特有的類型,這樣就可以使JSF實(shí)現(xiàn)獨(dú)立于其運(yùn)行的環(huán)境。比如,JSF既可用于Web容器,也可以用于其他容器,如portlet等。

獲取ServletContext特性getApplicationMap方法返回一個(gè)包含ServletContext對(duì)象里全部特性名/值對(duì)的Map 對(duì)象。下面是此方法的簽名:public abstract java.util.Map getApplication()作為一個(gè)例子,下面的代碼可獲取一個(gè)名叫databaseUtility的特性:

  1. Object contextAttribute = null;    
  2. FacesContext facesContext = FacesContext.getCurrentInstance();    
  3. ExternalContext externalContext = facesContext.getExternalContext();    
  4. Map contextMap = externalContext.getApplicationMap();    
  5. if (contextMap!=null)contextAttribute = contextMap.get("databaseUtility");   

獲取Session對(duì)象及其特性通過ExternalContext對(duì)象可訪問與當(dāng)前請(qǐng)求相關(guān)聯(lián)的Session對(duì)象。getSession方法可取回當(dāng)前用戶的javax.servlet.http.HttpSession對(duì)象,如果當(dāng)前用戶沒有相應(yīng)的Session對(duì)象,此方法的行為由傳入的參數(shù)決定:如果為該方法傳入了一個(gè)true值,它會(huì)創(chuàng)建一個(gè)Session對(duì)象;否則,它會(huì)返回null。下面是getSession方法的簽名:public abstract Object getSession(boolean create)此方法其實(shí)是javax.servlet.http.HttpServletRequest接口中g(shù)etSession方法的包裝器。 getSessionMap方法返回一個(gè)包含與當(dāng)前請(qǐng)求相關(guān)聯(lián)的Session對(duì)象里所有特性名/值對(duì)的Map對(duì)象。下面是它的方法簽名:public abstract java.util.getSessionMap()要獲取Session對(duì)象里的特性,可調(diào)用Map類的get方法,傳入要獲取的特性名即可。文檔中沒有指明在當(dāng)前請(qǐng)求沒有相應(yīng)Session對(duì)象的情況下,此方法是返回null還是一個(gè)空的Map對(duì)象。所以在調(diào)用Map的get方法之前,需要先檢查 Map是否為null。下面的代碼是獲取Session特性的例子:
◆Object sessionAttribute = null;
◆FacesContext facesContext = FacesContext.getCurrentInstance();
◆ExternalContext externalContext = facesContext.getExternalContext();
◆Map sessionMap = externalContext.getSessionMap();
◆if (sessionMap!=null)sessionAttribute = sessionMap.get(key);
***一行的key是一個(gè)包含特性名的字符串。

獲取ServletContext對(duì)象的初始參數(shù)getInitParameter方法是ServletContext對(duì)象的 getInitParameter方法的包裝器,用這個(gè)方法可以提取在部署描述符(web.xml文件)里用context-init元素指定的初始參數(shù)值。此方法的簽名如下:public abstract String getInitParameter(String parameterName)舉例來說,如果在部署描述符聲明了如下context-init元素:<context- param><param-name>contactPerson</param-name><param-value>Scott Jobim</param-value></context-param>下面代碼中的字符串變量initParam的值會(huì)是
◆Scott Jobim。FacesContext facesContext = FacesContext.getCurrentInstance();
◆ExternalContext externalContext = facesContext.getExternalContext();
◆String initParam = externalContext.getInitParameter("contactPerson");
◆getInitParameterMap方法返回一個(gè)包含ServletContext對(duì)象中全部初始參數(shù)的Map對(duì)象。

 

其簽名如下:public abstract java.util.Map getInitParameterMap()為了獲取一個(gè)初始參數(shù)的值,使用Map對(duì)象的get方法,同時(shí)傳遞初始參數(shù)的名稱。比如,下面的代碼把初始參數(shù)databaseName的值輸出到控制臺(tái)。
◆FacesContext facesContext = FacesContext.getCurrentInstance();
◆ExternalContext externalContext = facesContext.getExternalContext();
◆Map paramMap = externalContext.getInitParameterMap();
◆if (paramMap!=null) {System.out.println(paramMap.get"databaseName"));}

獲取Request對(duì)象的特性getRequestMap方法返回一個(gè)包含當(dāng)前Request對(duì)象中全部特性名/值對(duì)的Map對(duì)象。其方法簽名如下:public abstract java.util.Map getRequestMap()作為一個(gè)例子,下面的代碼可用來提取Request對(duì)象里的特性:
◆Object requestAttribute = null;FacesContext facesContext = FacesContext.getCurrentInstance();
◆ExternalContext externalContext = facesContext.getExternalContext();
◆Map requestMap = externalContext.getRequestMap();if (requestMap!=null)requestAttribute = requestMap.get(key);

***一行里的Key是一個(gè)包含要提取的屬性名的字符串。

訪問Request對(duì)象里的參數(shù)名和值getRequestParameterMap、getRequestParameterNames和 getRequestParameterValuesMap方法可用來訪問Request對(duì)象里的參數(shù)名和值。 getRequestParameterMap返回一個(gè)包含Request對(duì)象里全部參數(shù)名/值對(duì)的Map對(duì)象。其簽名如下:public abstract java.util.Map getRequestParameterMap()作為一個(gè)例子,下面的代碼可用來提取名為id的請(qǐng)求參數(shù)的值:

  1. String id = null;    
  2. FacesContext facesContext = FacesContext.getCurrentInstance();    
  3. ExternalContext externalContext = facesContext.getExternalContext();    
  4. Map requestParameterMap = externalContext.getRequestParameterMap();    
  5. if (requestParameterMap!=null)    
  6. id = (String) requestParameterMap.get("id");  

getRequestParameterNames方法返回一個(gè)包含全部請(qǐng)求參數(shù)名的Iterator。此方法其實(shí)是 ServletRequest.getParameterNames方法的包裝器。不同的是,ExternalContext類的 getRequestParameterNames返回一個(gè)Iterator,而不是java.util.Enumeration。此方法的簽名如下:
public abstract java.util.Iterator getRequestParameterNames()
作為一個(gè)例子,下面的代碼把所有的請(qǐng)求參數(shù)名/值對(duì)輸出到控制臺(tái)。

  1. FacesContext facesContext = FacesContext.getCurrentInstance();    
  2. ExternalContext externalContext = facesContext.getExternalContext();    
  3. Map requestParameterMap = externalContext.getRequestParameterMap();    
  4. Iterator parameterNames = externalContext.getRequestParameterNames();    
  5.  while (parameterNames.hasNext()) {    
  6.     String parameterName = (String) parameterNames.next();    
  7.     String parameterValue =(String) requestParameterMap.get(parameterName);    
  8.     System.out.println(parameterName + " : " + parameterValue);    
  9.  }   

getRequestParameterValuesMap方法返回一個(gè)包含Request對(duì)象里全部參數(shù)名/值對(duì)的Map對(duì)象。此方法與 getRequestParameterMap方法很相似,但getRequestParameterValuesMap可返回全部相同參數(shù)名的值。在此方法返回的Map對(duì)象上調(diào)用get(key)方法,這一點(diǎn)等同于獲取當(dāng)前請(qǐng)求的ServletRequest并在其上調(diào)用 getParameterValues(key)。也就是說,Map對(duì)象返回的是一個(gè)字符串?dāng)?shù)組。 GetRequestParameterValuesMap方法的簽名如下:public abstract java.util.Map getRequestParameterValuesMap()下面例子中的代碼把請(qǐng)求參數(shù)id的全部值輸出到控制臺(tái)。

  1. String[] id = null;    
  2. FacesContext facesContext = FacesContext.getCurrentInstance();    
  3. ExternalContext externalContext = facesContext.getExternalContext();    
  4. Map requestParameterValuesMap = externalContext.getRequestParameterValuesMap();    
  5. if (requestParameterValuesMap!=null) {    
  6.     id = (String[]) requestParameterValuesMap.get("id");// print all values of id    
  7.     for (int i=0; i<id.length; i++) {    
  8.        System.out.println(id[i]);    
  9.     }    
  10. }   

獲取請(qǐng)求頭的名和值getRequestHeaderMap方法返回一個(gè)包含當(dāng)前請(qǐng)求中全部頭名/值對(duì)的Map對(duì)象。其方法簽名如下:
public abstract java.util.Map getRequestHeaderMap()
舉個(gè)例子來說,下面的代碼提取host頭的值:

  1. String host = null;    
  2. FacesContext facesContext = FacesContext.getCurrentInstance();    
  3. ExternalContext externalContext = facesContext.getExternalContext();    
  4.  Map headerMap = externalContext.getRequestHeaderMap();    
  5. if (headerMap!=null) {    
  6.      host = (String) headerMap.get("host");    
  7.      System.out.println(host);    
  8. }   

注意:報(bào)頭的名稱是不區(qū)分大小寫的。比如,對(duì)getRequestHeaderMap返回的Map對(duì)象分別用host、Host和Host作為參數(shù)來調(diào)用 get方法,其結(jié)果是一樣的。getRequestHeaderValuesMap方法與getRequestHeaderMap方法相似。但在 getRequestHeader
ValuesMap方法返回的Map對(duì)象上調(diào)用get方法會(huì)得到一個(gè)字符串的數(shù)組。getRequestHeaderValuesMap方法的簽名如下:
public abstract java.util.Map getRequestHeaderValuesMap()
在getRequestHeaderValuesMap方法返回的Map對(duì)象上調(diào)用get方法會(huì)返回一個(gè) java.util.Enumeration值。下面的代碼使用getRequestHeaderValuesMap方法來獲取一個(gè)包含全部頭名/值對(duì)的 Map對(duì)象,然后在此Map對(duì)象上調(diào)用get方法以獲取全部Accept-Encoding頭的值,并將結(jié)果輸出到控制臺(tái)。

  1. FacesContext facesContext = FacesContext.getCurrentInstance();    
  2. ExternalContext externalContext = facesContext.getExternalContext();    
  3. Map headerValuesMap = externalContext.getRequestHeaderValuesMap();    
  4. if (headerValuesMap!=null) {    
  5.      Enumeration headers =(Enumeration) headerValuesMap.get("Accept-Encoding");    
  6.      while (headers.hasMoreElements()) {    
  7.         String value = (String) headers.nextElement();    
  8.         System.out.println(value);    
  9.     }    
  10. }   

 

【編輯推薦】

  1. 使JSF支持帶有HTMLMessage
  2. 利用JSF和Hibernate構(gòu)建Web應(yīng)用
  3. 比較JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket
  4. JSF能否拯救WEB
  5. 各種JSF框架比較
責(zé)任編輯:佚名 來源: JavaEye
相關(guān)推薦

2009-06-26 13:48:57

G4JSFGWTJSF

2009-06-24 13:06:41

JSF組件Facelets

2012-02-24 15:25:45

ibmdw

2009-06-29 14:19:50

2009-09-23 17:56:45

JSF入門

2009-06-23 11:35:44

JSF的Naviati

2009-06-24 17:34:58

使用JSF的經(jīng)驗(yàn)

2009-06-24 09:19:56

JSF標(biāo)記JSTL標(biāo)記

2009-06-25 11:11:25

控制JSF切入點(diǎn)

2009-06-22 16:24:33

JSF框架中使用的設(shè)計(jì)

2009-06-24 17:21:23

JSF框架設(shè)計(jì)模式

2009-06-26 14:06:08

JSF基礎(chǔ)框架

2009-06-12 18:35:33

JSF f:loadB

2009-06-23 16:22:23

JSF能否

2009-06-22 14:13:08

JSF入門

2009-06-23 13:01:04

JSF應(yīng)用

2009-06-23 13:55:17

JSF標(biāo)簽

2009-06-24 14:25:13

JSF整體架構(gòu)

2009-06-26 10:54:24

JSF技術(shù)

2009-06-29 14:30:27

JSF技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 超黄视频网站 | 久久蜜桃资源一区二区老牛 | 日韩中文字幕视频在线观看 | 中文字幕一区二区三区在线观看 | 久久麻豆精品 | 国产一区二区视频免费在线观看 | 色综合久久88色综合天天 | 欧美中文字幕 | 玖玖国产精品视频 | 亚洲国产精品久久久 | cao视频 | 成人午夜免费福利视频 | 天堂视频中文在线 | av高清 | 黄色综合 | 国产丝袜一区二区三区免费视频 | 成人国产精品色哟哟 | 爱爱视频在线观看 | 国产美女自拍视频 | 中文成人在线 | 久久久久九九九九 | 一区二区三区精品在线视频 | 91精品国产91久久久久福利 | 黄色一级视频免费 | 亚洲精品一 | 日本不卡免费新一二三区 | 国产成人精品网站 | 免费网站在线 | 91精品国产综合久久久久 | 国产精品一区二区三区在线 | 日韩一区二 | 欧美乱淫视频 | 日韩在线视频一区 | 可以免费观看的av | 国产欧美精品区一区二区三区 | 亚洲视频免费 | 欧美一区二区三区视频 | 亚洲成av人片在线观看无码 | 一级视频在线免费观看 | 中文字幕第一页在线 | 欧日韩在线观看 |