欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
jeecms的自定義的偽靜態(tài)的實(shí)現分析(二)

jeecms的自定義的偽靜態(tài)的實(shí)現分析(二)

 

  由于是用的別名,在查到這個(gè)action后發(fā)現這個(gè)類(lèi)實(shí)現了urlAware,如下, 這樣它還會(huì )被一個(gè)UrlInterceptor的攔截器攔截,這個(gè)攔截器被設成struts2的default攔截器了, 在攔截器上打出了這個(gè)url請求的namespace 與action,確實(shí)附合動(dòng)態(tài)系統action的條件, 通過(guò)UrlAware這個(gè)接口定義的方法,攔截器將一些url上的參數信息傳給了action以進(jìn)行動(dòng)態(tài)處理,同時(shí)我也打出了DynamicSystemAct中生成的一些動(dòng)態(tài)信息,如namespace與action.

 

 

Java代碼  

 

  1. package com.jeecms.common.struts2.interceptor;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4.   
  5. import org.apache.commons.lang.StringUtils;  
  6. import org.apache.commons.lang.math.NumberUtils;  
  7. import org.apache.struts2.StrutsStatics;  
  8. import com.opensymphony.xwork2.ActionContext;  
  9. import com.opensymphony.xwork2.ActionInvocation;  
  10. import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;  
  11.   
  12. /** 
  13.  * URL地址攔截器 
  14.  *  
  15.  * 針對頁(yè)面偽靜態(tài)地址,需要傳入多個(gè)參數 
  16.  *  
  17.  * @author liufang 
  18.  *  
  19.  */  
  20. public class UrlInterceptor extends MethodFilterInterceptor {  
  21.     private static final long serialVersionUID = 1L;  
  22.   
  23.     @Override  
  24.     protected String doIntercept(ActionInvocation invocation) throws Exception {  
  25.         Object action = invocation.getAction();  
  26.         //check the name space.  
  27.         String namespace = invocation.getProxy().getNamespace();   
  28.         String actionname =invocation.getProxy().getActionName();  
  29.         if (!StringUtils.isBlank(namespace)) {   
  30.             if ("/".equals(namespace.trim())) {   
  31.                  
  32.             } else {   
  33.                 namespace += "/";   
  34.             }   
  35.         }   
  36.         System.out.println("namespace is "+namespace+"\n actionname is"+actionname);  
  37.         //=============  
  38.           
  39.         ActionContext ctx = invocation.getInvocationContext();  
  40.         HttpServletRequest req = (HttpServletRequest) ctx  
  41.                 .get(StrutsStatics.HTTP_REQUEST);  
  42.         if (action instanceof UrlAware) {  
  43.               
  44.             System.out.println("UrlInterceptor active..");  
  45.             UrlAware aware = (UrlAware) action;  
  46.             String url = req.getRequestURL().toString();  
  47.             System.out.println("request url is:"+url);  
  48.             int pointIndex = url.indexOf('.', url.lastIndexOf('/'));  
  49.             if (pointIndex == -1) {  
  50.                 url += "index.do";  
  51.                 pointIndex = url.indexOf('.', url.lastIndexOf('/'));  
  52.             }  
  53.             String paramStr = req.getQueryString();  
  54.             if (paramStr != null && !paramStr.trim().equals("")) {  
  55.                 url += "?" + paramStr;  
  56.             }  
  57.             aware.setWholeUrl(url);  
  58.               
  59.             int lineIndex = url.indexOf('_', url.lastIndexOf('/'));  
  60.             int mlineIndex = url.indexOf('-', url.lastIndexOf('/'));  
  61.             // 前路徑結束點(diǎn)  
  62.             int preIndex = 0;  
  63.             if (lineIndex != -1) {  
  64.                 // 有下劃線(xiàn)(有分頁(yè))  
  65.                 preIndex = lineIndex;  
  66.             } else if (mlineIndex != -1) {  
  67.                 // 有中劃線(xiàn)(有定制參數)  
  68.                 preIndex = mlineIndex;  
  69.             } else {  
  70.                 // 什么都沒(méi)有  
  71.                 preIndex = pointIndex;  
  72.             }  
  73.             aware.setPageLink(url.substring(0, preIndex));  
  74.             // 后路徑開(kāi)始點(diǎn)  
  75.             int suffixIndex = 0;  
  76.             if (mlineIndex != -1) {  
  77.                 // 有中劃線(xiàn)  
  78.                 suffixIndex = mlineIndex;  
  79.             } else {  
  80.                 suffixIndex = pointIndex;  
  81.             }  
  82.             aware.setPageSuffix(url.substring(suffixIndex));  
  83.             // 取頁(yè)數和附加參數  
  84.             if (preIndex == suffixIndex) {  
  85.                 // 沒(méi)有分頁(yè),為第一頁(yè)。  
  86.                 aware.setPageNo(1);  
  87.             } else {  
  88.                 // 去掉下劃線(xiàn)"_"。  
  89.                 String page = url.substring(preIndex + 1, suffixIndex);  
  90.                 aware.setPageNo(NumberUtils.toInt(page, 1));  
  91.             }  
  92.             // 路徑參數  
  93.             String pathParm = ctx.getName();  
  94.             lineIndex = pathParm.indexOf("_");  
  95.             mlineIndex = pathParm.indexOf("-");  
  96.             if (lineIndex != -1) {  
  97.                 pathParm = pathParm.substring(0, lineIndex);  
  98.             } else if (mlineIndex != -1) {  
  99.                 pathParm = pathParm.substring(0, mlineIndex);  
  100.             }  
  101.             aware.setPathParams(pathParm.split("/"));  
  102.             // 附加參數  
  103.             if (mlineIndex != -1) {  
  104.                 String otherParam = ctx.getName().substring(mlineIndex + 1);  
  105.                 aware.setOtherParams(otherParam.split("-"));  
  106.             }  
  107.             //System.out.println(TypeUtil.typeToString("UrlAware--:\n",aware));  
  108.         }  
  109.         //----------test the url interceptor------//  
  110.         else  
  111.         {  
  112.             System.out.println("UrlInterceptor ignored..");  
  113.               
  114.         }  
  115.         return invocation.invoke();  
  116.     }  
  117. }  

 

 

 

   

 

 

 

 

Java代碼  

 

  1. package com.jeecms.cms.action;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4. import org.springframework.context.annotation.Scope;  
  5. import org.springframework.stereotype.Controller;  
  6.   
  7. import com.jeecms.common.struts2.interceptor.DomainNameAware;  
  8. import com.jeecms.common.struts2.interceptor.UrlAware;  
  9. import com.jeecms.core.Constants;  
  10. import com.jeecms.core.entity.Website;  
  11. import com.jeecms.core.manager.WebsiteMng;  
  12. import com.opensymphony.xwork2.Action;  
  13.   
  14. @Scope("prototype")  
  15. @Controller("core.dynamicSystemAct")  
  16. public class DynamicSystemAct implements Action, DomainNameAware, UrlAware {  
  17.     public String execute() {  
  18.         System.out.println("comming into DynamicSystemAct");  
  19.         Website web = websiteMng.getWebsite(domainName);  
  20.         if (web == null) {  
  21.             // 檢查別名  
  22.             web = websiteMng.getByAlias(domainName);  
  23.             if (web != null) {  
  24.                 redirectUrl = web.getWebUrl();  
  25.                 return Constants.REDIRECT;  
  26.             } else {  
  27.                 return Constants.WEBSITE_NOT_FOUND;  
  28.             }  
  29.         }  
  30.         String sys = web.getCurrentSystem();  
  31.         namespace = "/jeedynamic/" + sys;  
  32.         actionName = "Page";  
  33.         System.out.println("DynamicSystemAct namespace is "+namespace+"\n actionname is"+actionName);  
  34.         return SUCCESS;  
  35.     }  
  36.   
  37.     private String namespace;  
  38.     private String actionName;  
  39.     private String pageName;  
  40.     private String pathName;  
  41.     private String domainName;  
  42.   
  43.     private String[] pathParams;  
  44.     private String[] otherParams;  
  45.     private String wholeUrl;  
  46.     private String pageLink;  
  47.     private String pageSuffix;  
  48.     private int pageNo = 1;  
  49.   
  50.     private String redirectUrl;  
  51.     @Autowired  
  52.     private WebsiteMng websiteMng;  
  53.   
  54.     public void setDomainName(String domainName) {  
  55.         this.domainName = domainName;  
  56.     }  
  57.   
  58.     public void setPathParams(String[] pathParams) {  
  59.         this.pathParams = pathParams;  
  60.     }  
  61.   
  62.     public void setPageNo(int pageNo) {  
  63.         this.pageNo = pageNo;  
  64.     }  
  65.   
  66.     public void setPageLink(String pageLink) {  
  67.         this.pageLink = pageLink;  
  68.     }  
  69.   
  70.     public void setPageSuffix(String pageSuffix) {  
  71.         this.pageSuffix = pageSuffix;  
  72.     }  
  73.   
  74.     public void setWholeUrl(String wholeUrl) {  
  75.         this.wholeUrl = wholeUrl;  
  76.     }  
  77.   
  78.     public String getNamespace() {  
  79.         return namespace;  
  80.     }  
  81.   
  82.     public void setNamespace(String namespace) {  
  83.         this.namespace = namespace;  
  84.     }  
  85.   
  86.     public String getActionName() {  
  87.         return actionName;  
  88.     }  
  89.   
  90.     public void setActionName(String actionName) {  
  91.         this.actionName = actionName;  
  92.     }  
  93.   
  94.     public String getPageName() {  
  95.         return pageName;  
  96.     }  
  97.   
  98.     public void setPageName(String pageName) {  
  99.         this.pageName = pageName;  
  100.     }  
  101.   
  102.     public String getPathName() {  
  103.         return pathName;  
  104.     }  
  105.   
  106.     public void setPathName(String pathName) {  
  107.         this.pathName = pathName;  
  108.     }  
  109.   
  110.     public String getDomainName() {  
  111.         return domainName;  
  112.     }  
  113.   
  114.     public String[] getPathParams() {  
  115.         return pathParams;  
  116.     }  
  117.   
  118.     public String getWholeUrl() {  
  119.         return wholeUrl;  
  120.     }  
  121.   
  122.     public String getPageLink() {  
  123.         return pageLink;  
  124.     }  
  125.   
  126.     public String getPageSuffix() {  
  127.         return pageSuffix;  
  128.     }  
  129.   
  130.     public int getPageNo() {  
  131.         return pageNo;  
  132.     }  
  133.   
  134.     public String getRedirectUrl() {  
  135.         return redirectUrl;  
  136.     }  
  137.   
  138.     public void setRedirectUrl(String redirectUrl) {  
  139.         this.redirectUrl = redirectUrl;  
  140.     }  
  141.   
  142.     public String[] getOtherParams() {  
  143.         return otherParams;  
  144.     }  
  145.   
  146.     public void setOtherParams(String[] otherParams) {  
  147.         this.otherParams = otherParams;  
  148.     }  
  149. }  

 

 
綜合上面的信息,再查page這個(gè)action,在發(fā)現com.jeecms.cms.struts-font.xml中發(fā)現了它的定義.

 

 

 

Xml代碼  

 

  1. <package name="cms.front.page" namespace="/jeedynamic/jeecms" extends="empty-default">          
  2.         <action name="Page" class="cms.cmsPageAct">  
  3.             <result>${tplPath}</result>  
  4.             <result name="pageCache" type="pageCache">${tplPath}</result>  
  5.             <interceptor-ref name="exception"/>  
  6.             <interceptor-ref name="chain"/>  
  7.         </action>  
  8.     </package>  

 

  由此最終指向了一個(gè)模板.真是山路十八彎啊.

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
struts2 package 屬性說(shuō)明
LightURL——打造零配置的Struts2開(kāi)發(fā)方式
struts2 處理請求流程分析(結合源碼)2
[ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)
自己動(dòng)手寫(xiě)一個(gè)Struts2 - superleo - JavaEye技術(shù)網(wǎng)站
struts2學(xué)習
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久