Struts2獲取Servlet API的兩種方式
一、IoC方式
在Struts2中,所有請求都會被StrutsPrepareAndExecuteFilter攔截,然後去struts.xml尋找相印的action,在action執行前,會執行一些interceptor。在 struts-default.xml中,有個攔截器為
<interceptor name="servletConfig" class="org.apache.struts2.interceptor.ServletConfigInterceptor"/>
一部分原始碼
public String intercept (ActionInvocation invocation) throws Exception {
final Object action = invocation.getAction();
final ActionContext context = invocation.getInvocationContext();
if (action instanceof ServletRequestAware) {
HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
((ServletRequestAware) action).setServletRequest(request);
}
if (action instanceof ServletResponseAware) {
HttpServletResponse response = (HttpServletResponse) context.get(HTTP_RESPONSE);
((ServletResponseAware) action).setServletResponse(response);
}
if (action instanceof ServletContextAware) {
ServletContext servletContext = (ServletContext) context.get(SERVLET_CONTEXT);
((ServletContextAware) action).setServletContext(servletContext);
}
return invocation.invoke();
於是我們可以通過IoC的方式,將Servlet物件注入Action中。
package action;
/**
* @author ZZ
* ****/
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
public class Struts2Action implements ServletRequestAware,ServletResponseAware,ServletContextAware{
@Override
public void setServletContext(ServletContext context) {
}
@Override
public void setServletResponse(HttpServletResponse response) {
}
@Override
public void setServletRequest(HttpServletRequest request) {
}
}
通過實現ServletRequestAware 獲得HttpServletRequest,
實現 ServletResponseAware 獲得HttpServletResponse,
實現 ServletContextAware來獲得HttpServletContext。
SessionAware之類的就不寫了。
二、非IoC方式
通過ServletActionContext的靜態方法獲取。
package action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
/**
* @author ZZ
* ****/
public class Struts2Action {
public void test(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
ServletContext servletContext = ServletActionContext.getServletContext();
}
}
相關推薦
Struts2獲取Servlet API的兩種方式
一、IoC方式 在Struts2中,所有請求都會被StrutsPrepareAndExecuteFilter攔截,然後去struts.xml尋找相印的action,在action執行前
struts2獲取Servlet API的兩種方法
1.通過ServletActionContext獲取 在Action中呼叫ServletActionContext的靜態方法來獲取: HttpServletRequest request = ServletActionContext.getRequest
文字框自動獲取焦點的兩種方式
文字框自動獲取焦點的兩種方式 1、html5的autofocus屬性 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>
Java獲取年月日的兩種方式
方式一: Calendar calendar = Calendar.getInstance(); System.out.println(calendar.get(Calendar.YEAR)); Sy
HttpClient獲取Cookie的兩種方式
一、舊版本的HttpClient獲取Cookies p.s. 該方式官方已不推薦使用 使用DefaultHttpClient類例項化httpClient物件: public static String dooPost_deprecated(String
RabbitMQ Consumer獲取訊息的兩種方式(poll,subscribe)解析
http://blog.csdn.net/yangbutao/article/details/10395599 rabbitMQ中consumer通過建立到queue的連線,建立channel物件,通過channel通道獲取message, Consumer可以宣告式的
Struts2整合Spring的兩種方式(最新)
方式一隻需要在專案中引入struts2-spring-plugin-2.2.1.1.jar這個Jar包就可以了。這個Jar包引入之後確保web.xml中載入了spring配置,否則會報空指標異常(原因是方式一會自動在spring配置檔案中找action依賴的service,
struts2 接受引數的兩種方式(屬性驅動和模型驅動)
定義: 在struts2中,頁面的資料和action(控制層)傳輸基本上有兩種方式,一個是屬性驅動、另一個是模型驅動。 屬性驅動 基本資料型別的屬性對應: 就是Web頁面上html標籤
Java反射機制及其獲取InputStream的兩種方式
圖一: java.lang.Class:是反射的源頭。 我們建立了一個類,通過編譯(javac.exe),生成對應的.class檔案。之後我們使用java.exe載入(JVM的類載入器完成的) 此.class檔案,此.class檔案載入到記憶體以後
【Angular2】CheckBox獲取值的兩種方式
前言 因為專案中需要用到CheckBox向後臺提交資料 最開始設定的是學生選擇什麼就直接把答案合成一個字串傳到後端 但是需要回顯學生答案,後端返回的json資料中答案是一個處理後的字串,無法進行判
Struts2訪問Servlet的三種方式
思維導圖 實現特定介面訪問 package com.pc.web.action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Http
Struts2獲取Session的三種方式
1、Map<String,Object> map = ActionContext.getContext().getSession();2、HttpSession session = ServletActionContext.getRequest().getSes
瀏覽器獲取cookie的兩種方式
1 使用者登入成功後在放入session後,向用戶的瀏覽器cookie中插入使用者資料 //將使用者資訊放入session中session.setAttribute("user", select_user);//將使用者資訊通過response寫入cookie//cook
java動態獲取WebService的兩種方式(復雜參數類型)
args oid 類型 ade poi 參數類型 pid eth lse java動態獲取WebService的兩種方式(復雜參數類型) 第一種: @Override public OrderSearchListRes searchOrderList(Order_Fligh
微信公眾號開發之網頁授權(獲取使用者資訊兩種方式)
這次暑假留在學校參與工作室的專案,對微信公眾號比較感興趣,所以參與這方面的學習研究。昨天完成了關於網頁授權,獲取使用者資訊方面的功能,所以乘熱打鐵,寫上一篇。實現本篇涉及的功能,還需要完成一些基礎。在寫完這篇部落格後,我會盡快補上。-------------------------廢話不多說直入正題需要的
VS2010-VB.NET中從DataSet獲取資料的兩種方式
SQL 如下 " SELECT " & vbCrLf & _ " ID_NO, " & vbCrLf & _ " AA, " & vbCrLf & _ " BB, " & vbCrLf
Request獲取Session的兩種方式
1、無請求引數 public HttpSession getSession() 獲取當前request關聯的session,如果當前request沒有session,建立一個session. 2、有請求引數 public HttpSession
Struts2後臺校驗兩種方式
HTTP Status 404 - No result defined for action cn.itcast.a_validation.RegisterAction and result input
java如何獲取隨機數(兩種方式)
在小的知識,都有深挖之價值。 很久沒有生產隨機數,竟然忘了!我明明記得我做過關於隨機數產生的總結,but,我翻遍了整個筆記本,就是沒找到。即便我知道筆記就在某一個角落;我還是放棄了查詢筆記,跑去Google了,所以我決定建立電子筆記,記錄那些小知識點。 //獲取100以內
SpringBoot整合Servlet的兩種方式
dem javax boot 註解 auth get extend exce col SpringBoot整合Servlet有兩種方式: 1.通過註解掃描完成Servlet組件的註冊; 2.通過方法完成Servlet組件的註冊; 現在簡單記錄一下兩種方式的實現