亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

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

2020-07-27 21:20:37
字體:
來源:轉載
供稿:網友

Struts1之url截取

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


 

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

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

        我們進入這個方法:

    

       再繼續進入:



      我們赫然發現了這樣一個方法就是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); 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区在线直播| 黑人极品videos精品欧美裸| 精品视频在线播放免| 亚洲free嫩bbb| 国产精品视频中文字幕91| 国产精品精品久久久| 久久亚洲私人国产精品va| 日韩精品极品视频免费观看| 成人欧美在线视频| 91精品国产综合久久香蕉最新版| 欧美激情亚洲精品| 日韩在线观看高清| 欧美大码xxxx| 日韩av手机在线看| 亚洲乱码一区av黑人高潮| 性欧美视频videos6一9| 欧美成人在线影院| 日韩美女写真福利在线观看| 亚洲男人天堂网站| 91九色国产社区在线观看| 日韩在线观看免费全集电视剧网站| 亚洲精品www久久久久久广东| 欧美一级淫片播放口| 久久资源免费视频| 久久久av免费| 日韩欧美一区二区在线| 26uuu亚洲伊人春色| 亚洲有声小说3d| 国产精品视频最多的网站| 国产成人涩涩涩视频在线观看| 欧美激情一级二级| 欧美性黄网官网| 欧美亚州一区二区三区| 亚洲色图25p| 日韩中文娱乐网| 97国产一区二区精品久久呦| 国产成人a亚洲精品| 日本欧美国产在线| 日韩欧美精品网站| 亚洲电影天堂av| 欧美电影免费在线观看| 亚洲欧美变态国产另类| 久久免费视频网| 97色在线视频观看| 欧美—级高清免费播放| 国产精品久久一区主播| 51午夜精品视频| 6080yy精品一区二区三区| 日韩av免费看| 中文字幕在线视频日韩| 亚洲成人精品久久久| 欧日韩在线观看| 亚洲欧美www| 亚洲精品久久在线| 中文字幕欧美在线| 国产欧美精品xxxx另类| 国产精品午夜一区二区欲梦| 亚洲国产成人久久| 91精品一区二区| 在线视频欧美性高潮| 日韩在线播放视频| 97视频色精品| 97久久精品人人澡人人爽缅北| 在线精品国产成人综合| 亚洲国产欧美日韩精品| 91亚洲国产成人精品性色| 一区二区三欧美| 国产欧美在线观看| 日韩在线视频免费观看高清中文| 欧美乱大交xxxxx| 中文字幕日韩有码| 91麻豆国产语对白在线观看| 日韩av综合网| 成人在线播放av| 日韩在线中文字幕| 麻豆国产精品va在线观看不卡| xxxx性欧美| 成人黄色片在线| 日本三级久久久| 色偷偷9999www| 国产精品露脸av在线| 国产视频在线观看一区二区| 日韩欧美国产免费播放| 国产日本欧美一区二区三区| 国产在线精品播放| 久久久国产一区二区三区| 国产亚洲欧美日韩精品| 欧美日韩亚洲精品一区二区三区| 日韩电影中文字幕一区| 日韩经典一区二区三区| 日本午夜人人精品| 97在线视频免费播放| 国产精品成人一区| 国产剧情久久久久久| 国产精品一区二区三区久久| 中文综合在线观看| 日韩女优人人人人射在线视频| 91亚洲永久免费精品| 国产91精品高潮白浆喷水| 高清欧美性猛交xxxx黑人猛交| 91久久久久久国产精品| 久久男人资源视频| 国产精品久久77777| 国产亚洲精品激情久久| 日本亚洲欧洲色| 亚洲最大av网站| 国产日韩欧美日韩| 久久成人亚洲精品| 国产91色在线| 国产福利精品视频| 亚洲黄色av女优在线观看| 日本高清不卡在线| 亚洲**2019国产| 国产精品福利久久久| 国产成人精品视频在线观看| 亚洲a∨日韩av高清在线观看| 日韩中文字幕在线看| 国产日韩精品在线播放| 欧美激情极品视频| 中文字幕在线精品| 欧美色播在线播放| 97色在线视频观看| 91国产精品电影| 欧美日韩国产成人在线观看| 国产中文字幕亚洲| 欧美日韩在线视频一区| 国产美女久久精品| 日韩av大片免费看| 91高潮精品免费porn| 亚洲国产天堂久久综合| 久久久久久久国产精品| 4438全国亚洲精品在线观看视频| 日韩一中文字幕| 欧美精品精品精品精品免费| 亚洲欧美日韩网| 日韩在线视频免费观看| 亚洲小视频在线| 欧美一区二区影院| 亚洲国产成人爱av在线播放| 狠狠久久五月精品中文字幕| 最近2019免费中文字幕视频三| 中文字幕亚洲欧美在线| 亚洲欧美激情精品一区二区| 亚洲国产精品中文| 97视频在线观看免费高清完整版在线观看| 欧美性xxxx极品高清hd直播| 一区二区福利视频| 欧美视频不卡中文| 久久久久中文字幕2018| 这里只有精品丝袜| 日本亚洲欧美三级| 国内揄拍国内精品少妇国语| 日韩亚洲一区二区| 久久亚洲一区二区三区四区五区高| 高潮白浆女日韩av免费看| 久久99国产精品久久久久久久久| 九九九热精品免费视频观看网站| 好吊成人免视频| 欧美性猛交xxxxx免费看| 亚洲欧洲在线视频| 国产午夜精品全部视频在线播放| 欧美激情精品久久久久久变态| 国产伊人精品在线| 精品久久久久久久久久久久久久|