freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

struts2的工作機制原理分析及實例(專業(yè)版)

2025-08-10 10:30上一頁面

下一頁面
  

【正文】 ,在struts2中實現(xiàn)action的統(tǒng)一操作也很簡單。接上例:namespce的作用除了在前面提到的避免協(xié)同開發(fā)名字沖突外,還為認證提供一個條件。比如:package name=tt3 extends=strutsdefault action name=test3/test3 class= result name=success/forward//result /action/package然后輸入a href=%=path%/test3/test3/abr鏈接地址就可以訪問了強調:namespace默認值“”,即不配置namespace屬性。 } } public User getModel() { return user。解決此bug的方法是配置一個filter,并在doFilter方法中增加如下代碼:(“UTF8”)。 } }}說明:實現(xiàn)了Action接口,主要是為了保證execute的正確定義,其實我們也可以不實現(xiàn)此接口,只要能保證execute方法書寫的正確書寫(方法名,返回值)。這也是我們要配置的主要文件。Struts2+xwork一共有700余類,除了為讀者做到現(xiàn)在的這些,已無法再做更多的事情。 sendError(request, response, context, , e)。 } public void serviceAction(HttpServletRequest request, HttpServletResponse response, ServletContext context, 剛才使用了一段插述,我們繼續(xù)回到ActionProxy類。 } catch (NoSuchMethodException e1) { method = getAction().getClass().getMethod(altMethodName, new Class[0])。 Override 配置信息加載完成后,創(chuàng)建一個Action的代理對象——ActionProxy引用,實際上對Action的調用正是通過ActionProxy實現(xiàn)的,而ActionProxy又由ActionProxyFactory創(chuàng)建,ActionProxyFactory是創(chuàng)建ActionProxy的工廠。 loadDefaultInterceptorRef(newPackage, packageElement)。 } if (serveStatic amp。amp。//重新設置內容類型 } //下面處理形如testAction!method格式的請求路徑 } String message = Could not wrap servlet request with MultipartRequestWrapper!。 ()。 protected Dispatcher createDispatcher(FilterConfig filterConfig) { * Constant for the JSP page context}.一旦Action執(zhí)行完畢。三、 生產(chǎn)ActionProxy的工廠。 執(zhí)行ActionStruts2的核心包,最重要的類都放在該包中。,里面的目錄和文件非常多,\\src\core\src\main\java目錄下查看Struts2的源文件,如圖14所示。另外,Struts2可視化視圖組件開始支持主題(theme),缺省情況下,使用自帶的缺省主題,如果要自定義頁面效果,需要將組件的theme屬性設置為simple。 從圖15可以看出,一個請求在Struts2框架中的處理大概分為以下幾個步驟: filternamestruts2/filtername /**}代碼清單10:()方法包裝請求對象如代碼清單11所示: request = (request, getServletContext())。下面是ActionMapping接口的實現(xiàn)類DefaultActionMapper的getMapping()方法的源代碼: String name = ()。 (圖16)其內容為“中華人民共和國”,訪問://localhost:8081/Struts2Demo/struts/:(圖17)查找靜態(tài)資源的源代碼如清單14: for (String pathPrefix : pathPrefixes) {//讀取請求文件流 ()。 如果用戶請求的資源不是以/struts開頭——,則通過過濾器鏈繼續(xù)往下傳送,直到到達請求的資源為止。 mapping = (request, ())。 return。 (timerKey)。 ()方法中,先加載Struts2的配置文件,如果沒有人為配置,、。 loadGlobalExceptionMappings(newPackage, packageElement)。 addAction(actionElement, newPackage)。 活動圖如圖19所示:(圖19)其中,遞歸調用截攔器的代碼如清單17所示:代碼清單17:調用截攔器,()方法的部分代碼 代碼清單19:public class CustomIntercepter extends AbstractInterceptor { //獲取Action中定義的execute()方法名稱,實際上該方法是可以隨便定義的 ActionMapping mapping) throws ServletException {// If there was a previous value stack, then create a new copy and pass it in to be used by the new Action 總體來講,但我們不得不佩服Struts和WebWork開發(fā)小組的功底,代碼如此優(yōu)雅,甚至能夠感受看到兩個開發(fā)小組心神相通的默契。本章目的就是希望能幫助讀者理清一條思路,在必要的地方作出簡單的解釋,達到事半功倍的效果。除了StrutsPrepareAndExecuteFilter外,Struts還提供了一個ActionContexCleanUp類,它的主要任務是當有其它一些過濾器要訪問一個初始化好了的struts框架的時候,負責處理一些特殊的清除任務。 private String password。在以前的開發(fā)中,當修改一些配置時總是不能及時地更新到服務器,我們總會重新部署或重啟來更新改變的內容,在struts2中可以通過一個常量來達到此目的。public class LoginAction implements Action, ModelDrivenUser { private User user = new User()。下面重點來看這個package元素的namespace屬性及action的name屬性,它們共同定義了action所映射到的實質文件。還可以參head下的base href=%=basePath% 來完成絕對路徑的書寫。補充:由于上面的package繼承于strutsdefault,而我們這里所用到的timer和params都是在strutsdefalut中定義過,所以即使我們在interceptors中沒有定義過這兩個攔截器,也可以直接在action中引用。import 。步驟一,:?xml version=39。另外,namespace也可以配置成namespace=/。說明:此方式一般不會使用,在此略作了解。作如下修改:在LoginAction中有兩個字段:username,password。主要代碼如下:?xml version= encoding=UTF8 ?!DOCTYPE struts PUBLIC //Apache Software Foundation//DTD Struts Configuration struts package name=myFirst namespace=/ extends=strutsdefault action name=login class= result name=loginSuccess//result result name=loginFailure//result /action /package/struts說明:package后面會有詳細說明。屬性文件可以放在任何一個包含在classpath中的路徑上,但是通常我們都把它放在/WEBINF/classes目錄下面。本章并不適合java語言初學者或者對java博大精深的思想理解不深的讀者閱讀,這其中涉及到太多的術語和類的使用,特別不要去鉆牛角尖,容易使自信心受損。throw new ServletException(e)。 // throw the original one return 李贊紅。 public String intercept(ActionInvocation actionInvocation) throws Exception return newPackage。 loadDefaultActionRef(newPackage, packageElement)。而上面的方法最終會被addPackage()方法調用,將所讀取到的數(shù)據(jù)匯集到PackageConfig對象中,細節(jié)請參考代碼清單16。 } try { //如果請求的資源是Action,則調用serviceAction方法。上述過程的源代碼如清單15所示。 } }//將請求參數(shù)中的重復項去掉 ActionMapping mapping = new ActionMapping()。 return new Dispatcher((), params)。 ()。 然后得到參數(shù)packages,值得注意的是,還有另外三個固定的包和該參數(shù)進行拼接,、template、中間用空格隔開,經(jīng)過解析將包名變成路徑后存儲到一個名叫pathPrefixes的數(shù)組中,這些目錄中的文件會被自動搜尋。 * Constant for the HTTP response object. * Constant for the HTTP request object. /filterclass filterclass:在這個過程中需要涉及到ActionMapper。. ActionProxy實用包。但因為Struts2的核心設計完全改變,從思想到設計到工作流程,都有了很大的不同。 調用指定的Action的execute()方法。 該類有四個作用:. ctionProxyFactoryStruts2對常用的接口進行了重新封裝,比如HttpServletRequest、HttpServletResponse、HttpServletContext等。 public static final String HTTP_REQUEST = 。 public static final String HTTP_RESPONSE = 。 HttpServletResponse response) throws ServletException {//從uri變量中解析出Action的name和namespace //如果Action的name沒有解析出來,直接返回 //!是Action名稱和方法名的分隔符 (timerKey)。 } // load the interceptors and interceptor stacks for this package (interce
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1