麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JSP > 正文

Struts1之url截取_動力節點Java學院整理

2024-09-05 00:23:22
字體:
來源:轉載
供稿:網友

Struts1之url截取

先我們來對ActionServlet深層次進行分析。我們用斷點的調試的方式來看底層源碼。因為這個實例是post方式提交,所以將斷點設置到doPost方法上。


 url截取,Struct

      我們debug運行程序,進入doPost里面的方法: 

url截取,Struct

        這個方法非常重要是ActionServlet運行的核心方法。

        我們進入這個方法:

    url截取,Struct

       再繼續進入:


url截取,Struct

      我們赫然發現了這樣一個方法就是processPath方法,這個方法就是截取字符串的方法。這個方法的源代碼如下:

/**   * <p>Identify and return the path component(from the request URI) that   * we will use to select an <code>ActionMapping</code> with which todispatch.   * If no such path can be identified,create an error response and return   * <code>null</code>.</p>   *   * @param request The servlet request weare processing   * @param response The servlet response weare creating   *   * @exception IOException if an input/outputerror occurs   */  protectedString processPath(HttpServletRequest request,         HttpServletResponse response)   throws IOException {    String path = null;    // For prefix matching, match on the path info (if any)   path = (String) request.getAttribute(INCLUDE_PATH_INFO);   if (path == null) {    path = request.getPathInfo();   }   if ((path != null) && (path.length() > 0)) {    return (path);   }    // For extension matching, strip the module prefix and extension   path = (String) request.getAttribute(INCLUDE_SERVLET_PATH);   if (path == null) {    path = request.getServletPath();   }   String prefix = moduleConfig.getPrefix();   if (!path.startsWith(prefix)) {    String msg =getInternal().getMessage("processPath");        log.error(msg + " " + request.getRequestURI());    response.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);     return null;   }      path = path.substring(prefix.length());   int slash = path.lastIndexOf("/");   int period = path.lastIndexOf(".");   if ((period >= 0) && (period >slash)) {    path = path.substring(0, period);   }   return (path);  } 

分析一下這段代碼: 

path = (String)request.getAttribute(INCLUDE_PATH_INFO);   if (path == null) {    path = request.getPathInfo();   }   if ((path != null) && (path.length() > 0)) {    return (path);   } 

這段代碼首先判斷一下javax.servlet.include.path_info是否存在路徑信息,這里要知道當當一個頁面是以RequestDispatcher.include方式顯示的話,這個屬性值才存在。所以這里沒有值,就會進入path=request.getPathInfo()程序中,這里的getPathInfo獲取的值是相對servlet的路徑信息。

// For extension matching, stripthe module prefix and extension   path = (String) request.getAttribute(INCLUDE_SERVLET_PATH);   if (path == null) {    path = request.getServletPath();   }   String prefix = moduleConfig.getPrefix();   if (!path.startsWith(prefix)) {    String msg =getInternal().getMessage("processPath");        log.error(msg + " " + request.getRequestURI());    response.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);     return null;   } 

        這一段代碼是判斷javax.servlet.include.servlet_path是否存在值,這個也是當一個頁面是以equestDispatcher.include方式顯示的話,這個屬性值才存在,所以這里的值沒有。之后進入path = request.getServletPath();這個方法是獲得返回請求URI上下文后的子串,所以這里的返回值就是“/”和訪問頁面名稱和后綴(這里和我的mvc實例截取的是不是一樣的道理)。隨后進入下面代碼:

path = path.substring(prefix.length());   intslash = path.lastIndexOf("/");   intperiod = path.lastIndexOf(".");   if((period >= 0) && (period > slash)) {    path = path.substring(0, period);   }   return (path); 

       這里的方法主要和我的上面的那里是一樣的,主要就是去掉后綴。


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91九色视频在线观看 | 91短视频在线观看视频 | 国产精品久久久久久久久久久久午夜 | 中文日韩在线视频 | 久久国产精品久久久久久久久久 | 撅高 自己扒开 调教 | 日日夜av| 深夜影院一级毛片 | 天天看夜夜爽 | 最新一区二区三区 | 91网站永久免费看 | 国产小视频一区 | 久久久久久久久成人 | 亚洲一级片免费观看 | 国产精品亚洲精品日韩已方 | 亚洲一区在线免费视频 | a免费毛片 | 久草干| 亚洲精品一区中文字幕 | av中文一区 | 性欧美在线视频 | 国产精品视频免费在线观看 | 欧美大穴| 欧美激情首页 | 成人免费入口 | 国产精品久久久久久久久久10秀 | 深夜福利久久久 | 人人舔人人舔 | 国产视频在线观看一区二区三区 | 黄色网址免费在线 | 91国内精品久久久久免费影院 | 久久性生活免费视频 | 免费黄色入口 | 国产亚洲精品综合一区 | 中文字幕一区二区三区四区 | 亚洲va久久久噜噜噜久久男同 | 韩国三级日本三级香港三级黄 | 孕妇体内谢精满日本电影 | 午夜色视频在线观看 | 欧洲黄色一级视频 | 国产欧美一区二区三区免费看 |