Struts Action例項化,從原始碼上分析
* Load Action class for mapping and invoke the appropriate Action method, or go directly to the Result.
* <p/>
* This method first creates the action context from the given parameters,
* and then loads an <tt>ActionProxy</tt> from the given action name and namespace.
* After that, the Action method is executed and output channels through the response object.
* Actions not found are sent back to the user via the {@link Dispatcher#sendError} method,
* using the 404 return code.
* All other errors are reported by throwing a ServletException.
*
* @param request the HttpServletRequest object
* @param response the HttpServletResponse object
* @param mapping the action mapping object
* @throws ServletException when an unknown error occurs (not a 404, but typically something that
* would end up as a 5xx by the servlet container)
* @param context Our ServletContext object
*/
public void serviceAction(HttpServletRequest request, HttpServletResponse response, ServletContext context,
ActionMapping mapping) throws ServletException {
Map<String, Object> extraContext = createContextMap(request, response, mapping, context);
// If there was a previous value stack, then create a new copy and pass it in to be used by the new Action
ValueStack stack = (ValueStack) request.getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);
boolean nullStack = stack == null;
if (nullStack) {
ActionContext ctx = ActionContext.getContext();
if (ctx != null) {
stack = ctx.getValueStack();
}
}
if (stack != null) {
extraContext.put(ActionContext.VALUE_STACK, valueStackFactory.createValueStack(stack));
}
String timerKey = "Handling request from Dispatcher";
try {
UtilTimerStack.push(timerKey);
String namespace = mapping.getNamespace();
String name = mapping.getName();
String method = mapping.getMethod();
Configuration config = configurationManager.getConfiguration();
ActionProxy proxy = config.getContainer().getInstance(ActionProxyFactory.class).createActionProxy(
namespace, name, method, extraContext, true, false);
request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, proxy.getInvocation().getStack());
// if the ActionMapping says to go straight to a result, do it!
if (mapping.getResult() != null) {
Result result = mapping.getResult();
result.execute(proxy.getInvocation());
} else {
proxy.execute();
}
// If there was a previous value stack then set it back onto the request
if (!nullStack) {
request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, stack);
}
} catch (ConfigurationException e) {
// WW-2874 Only log error if in devMode
if(devMode) {
String reqStr = request.getRequestURI();
if (request.getQueryString() != null) {
reqStr = reqStr + "?" + request.getQueryString();
}
LOG.error("Could not find action or result\n" + reqStr, e);
}
else {
if (LOG.isWarnEnabled()) {
LOG.warn("Could not find action or result", e);
}
}
sendError(request, response, context, HttpServletResponse.SC_NOT_FOUND, e);
} catch (Exception e) {
sendError(request, response, context, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
} finally {
UtilTimerStack.pop(timerKey);
}
}
相關推薦
Struts Action例項化,從原始碼上分析
/** * Load Action class for mapping and invoke the appropriate Action method, or go directly to the Result. * <p/> * This method first
資料視覺化,在地圖上分析供應鏈/銷售/物流網路
這是一位圖表仿會員諮詢我的問題。 她在一家著名的跨國集團公司從事Supply Network方面的工作,其中一項任務是每月要繪製一種銷售網路圖,見下圖示意。她們使用大海報紙畫或visio畫,每個產品組為單位繪製一張圖,每個產品組內一般有10-40對發運關係,也就是箭頭
從原始碼上分析ListView的addHeaderView和setAdapter的呼叫順序
ListView想要新增headerview的話,就要通過addHeaderView這個方法,然後想要為ListView設定資料的話,就要呼叫setAdapter方法了。但是,在呼叫addHeaderView和setAdapter的順序上,有時會爆出java.lang.Il
硬核乾貨:4W字從原始碼上分析JUC執行緒池ThreadPoolExecutor的實現原理
![](https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202008/j-u-c-t-p-e-logo.png) ## 前提 很早之前就打算看一次JUC執行緒池`ThreadPoolExecutor`的原始碼實現,由於近段時間
Fragment例項化,Fragment生命週期原始碼分析
Fragment的例項化,Fragment的生命週期 android.support.v4.app.FragmentActivity#onCreate @Override protected void onCreate(Bundle savedI
struts action例項原始碼
struts-config.xml配置actionJava action類package com.anlai.ticket.action;import java.io.IOException;import java.util.ArrayList;import java.uti
VEFX維億:全新限價止盈損系統,從根源上杜絕滑點
成本 選擇 log ffffff 靈活 競爭 客戶服務 機制 行業 如今市場經濟發展迅速,人們已經把生活重心放在了資金的保值增值方面。股指投資作為一種比較新型的投資方式,在投資人中廣受好評。股指行業中的優質平臺VEFX維億,因其全方位保障用戶利益而獲得了眾多投資者的青睞。
Java 抽象類可以間接實現例項化,無法直接例項化
抽象類無法直接例項化, 它的例項化方式並不是通過普通的new方式來建立物件,而是通過父類的應用來指向子類的例項間接地實現父類的例項化,因為子類在例項化之前,一定會先例項化它的父類。這樣建立了繼承抽象類的子類物件,也就把其父類(抽象類)給例項化了。 注意:介面與抽象類非常類似,但是它不可以被例項化
JAVA中建立HTTP通訊,從伺服器上獲取HTML程式碼,通過HTTP請求來下載圖片或其他二進位制檔案的程式,下載結果要按下載到的檔案型別進行存檔中。
通過HTTP請求來下載圖片或其他二進位制檔案的程式,下載結果要按下載到的檔案型別進行存檔 將程式碼從伺服器的中獲取下來的程式碼,在我之前已經講過了這裡寫連結內容 這裡我們就直接將原始碼稍加改動,加入一個檔案並請將builder 寫入即可。 import
一文讀懂PID控制演算法(拋棄公式,從原理上真正理解PID控制)
PID控制演算法的C語言實現一 PID演算法原理 最近兩天在考慮一般控制演算法的C語言實現問題,發現網路上尚沒有一套完整的比較體系的講解。於是總結了幾天,整理一套思路分享給大家。 在工業應用中PID及其衍生演算法是應用最廣泛的演算法之一,是當之無愧的萬能演算法
圖片或檔案上傳到伺服器或從伺服器上讀取(圖片可根據路徑src回顯展示,從伺服器上讀出來)
不需要配置虛擬路徑,存的時候資料庫裡只存了圖片的名稱(隨機重新命名的形式),存在指定伺服器上,取的時候也是根據圖片名稱從伺服器上找到,並用OutputStream 讀出來 前臺頁面(用的bootstrap): html程式碼(可回顯,回顯的時候也是去後臺根據路徑查詢到圖片):
ios通過圖片的URL地址,從網路上獲取圖片(UIImage型別)
-(UIImage *) getImageFromURL:(NSString *)fileURL { UIImage * result; NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithSt
讓員工、使用者粉絲化,從選好社群軟體開始
在粉絲經濟大熱的今天,很多企業都想依靠搭建粉絲社群來讓自己的使用者、員工粉絲化,讓自己的產品、品牌和企業被粉絲所熱愛,因此需要一個社群讓粉絲們互動成長。或者讓自己的員工有一個互相交流的平臺,不管是吐槽煩心事,還是分享喜悅,都能有的放矢。亦或是讓自己的客戶們有一個互相溝通業務的社群,為企業間的互利共贏群策群力。
2、編寫程式,從鍵盤上輸入兩個電阻的值,求它們並聯和串連的電阻值,輸出結果保留兩位小數。
#include <stdio.h> int main() { float R1,R2,Rc,Rb; printf("please input R1 R2\n");
hashMap的執行緒不安全,從原始碼談起
HashMap的原理以及如何實現,之前在JDK7與JDK8中HashMap的實現中已經說明了。 那麼,為什麼說HashMap是執行緒不安全的呢?它在多執行緒環境下,會發生什麼情況呢? resize死迴圈 我們都知道HashMap初始容量大小為16,一般來說,當有資料要插入時,
前臺資料json序列化,從post或get中取py資料型別:QueryDict轉字典dict
前端 $.ajax({ url:"/count_home/", type:"GET", data:JSON.stringify({ first_num:$("
面向物件程式設計(一)建立類,例項化,屬性引用
在python中,用變量表示特徵,用函式表示技能,因而類是變數與函式的結合體,物件是變數與方法(指向類的函式)的結合體。 class 類名:#定義一個類 類體 類有兩種作用:屬性引用和例項化 t=類名()#例項化 類名加括號就是例項化,會自動觸發__in
Opengl-例項化(不知道為啥叫例項化,感覺應該叫一次批量渲染)
核心:glDrawArraysInstanced 和以往的不同就是這句Draw的時候改成這個API 補充:glVertexAttribDivisor 這個函式告訴了OpenGL該什麼時候更新頂點屬性的內容至新一組資料。它的第一個引數是需要的頂點屬性
百度編輯器例項化,相當於from表單中的內容,直接post到後臺
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> &
mybatis與spring整合是對映器介面無法例項化,空指標異常
問題: DeBug執行 mabite中Mapper介面的例項化物件找不到,顯示為NULL解決:問題一:我一直是以為Mapper的注入出了問題,,結果恰恰不是,問題出在了service ,因為在service裡面是通過注入的方式獲得Mapper的例項化物件的,所以servi