<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Loading...

    java .net

    用Url Rewrite Filter重寫url

    今天發(fā)現(xiàn)一個(gè)好東西

    Url Rewrite Filter

    它可以實(shí)現(xiàn)url重寫,從而隱藏實(shí)際的url,同時(shí)使url看起來更美觀,簡單

    最令人興奮的是它一下解決了一值在尋找的blog用戶訪問自己的空間的問題

    比如http://hi.baidu.com/liuspring 就顯示我的空間

    1、下載Url Rewrite Filter

    2、在項(xiàng)目的web.xml配置過濾器

    XML語言:
    <filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
    <param-name>logLevel</param-name>
    <param-value>debug</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>


    3、將urlrewrite-2.6.0.jar放入lib文件夾
    4、新建urlrewrite.xml文件置于WEB-INF目錄
    5、配置urlrewrite.xml

    XML語言: 臨時(shí)自用代碼@代碼發(fā)芽網(wǎng)
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
    "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">

    <!--

    Configuration file for UrlRewriteFilter
    http://tuckey.org/urlrewrite/

    -->
    <urlrewrite>
    <rule>
    <from>^/([a-z]+)/?$</from>
    <to type= "forward" >/blogView.do?go=$1</to>
    </rule>

    <rule>
    <note> 這是一個(gè)通用請求url rewrite</note>
    <from>^/([a-z0-9A-Z_]+)/([a-z0-9A-Z_]+)/?$</from>
    <to type= "forward" >/$2.do?go=$1</to>
    </rule>


    <outbound-rule>
    <note>
    The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url)
    the url /rewrite-status will be rewritten to /test/status/.

    The above rule and this outbound-rule means that end users should never see the
    url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks
    in your pages.
    </note>
    <from>/rewrite-status</from>
    <to>/test/status/</to>
    </outbound-rule>

    </urlrewrite>




    url匹配使用正則表達(dá)式的規(guī)則,
    實(shí)驗(yàn)中發(fā)現(xiàn)一個(gè)問題,就是必須把里面的正則表達(dá)式用小括號括起來,在正則表達(dá)式中叫分組
    不然會(huì)報(bào)異常:
    java.lang.IndexOutOfBoundsException: No group 2
    哈哈,前幾日還費(fèi)勁的自己寫Servlet重寫url呢,原來這有現(xiàn)成的,更加覺得自己現(xiàn)在的水平遇到的問題網(wǎng)上的前輩們早都遇到過了,一定要站在巨人的肩膀上,少走彎路啊。


    把我的servlet貼在這,呵呵,參考自blojsom

    Java語言: 臨時(shí)自用代碼@代碼發(fā)芽網(wǎng)
    package com.capinfo.servlet;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;

    import com.capinfo.util.PageConstraint;
    import com.capinfo.util.PigBlogUtil;


    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;


    /**
    *
    * @author Administrator
    *
    */
    public class PigBlogServlet extends HttpServlet {

    protected Log _logger = LogFactory.getLog(PigBlogServlet.class);



    /**
    * Initialize
    *
    * @param servletConfig {@link ServletConfig}
    * @throws ServletException If there is an error initializing
    */
    public void init(ServletConfig servletConfig) throws ServletException {
    super.init(servletConfig);
    }

    /**
    * Handle requests made to
    *
    * @param httpServletRequest {@link HttpServletRequest} request
    * @param httpServletResponse {@link HttpServletResponse} response
    * @throws ServletException If there is an error serving the request
    * @throws IOException If there is an error serving the request
    */
    protected void service(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {


    // Make sure that we have a request URI ending with a / otherwise we need to
    // redirect so that the browser can handle relative link generation
    // if (!httpServletRequest.getRequestURI().endsWith("/")) {
    // StringBuffer redirectURL = new StringBuffer();
    // redirectURL.append(httpServletRequest.getRequestURI());
    // redirectURL.append("/");
    // if (httpServletRequest.getParameterMap().size() > 0) {
    // redirectURL.append("?");
    // redirectURL.append(PigBlogUtil.convertRequestParams(httpServletRequest));
    // }
    //
    // if (_logger.isDebugEnabled()) {
    // _logger.debug("Redirecting the user to: " + redirectURL.toString());
    // }
    //
    // httpServletResponse.sendRedirect(redirectURL.toString());
    //
    // return;
    // }



    // Check for an overriding id
    String blogId = httpServletRequest.getParameter(PageConstraint.GO);
    if (PigBlogUtil.checkNullOrBlank(blogId)) {
    String blogIdFromPath = PigBlogUtil.getBlogFromPath(httpServletRequest.getPathInfo());
    if (blogIdFromPath == null) {
    blogId = PageConstraint.GO1;
    } else {
    blogId = blogIdFromPath;
    }
    }

    if (PigBlogUtil.checkNullOrBlank(blogId)) {
    httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND, "Blog ID not specified");

    return;
    }
    StringBuffer redirectURL = new StringBuffer();

    //redirectURL.append(httpServletRequest.getContextPath());
    System.out.println(httpServletRequest.getRequestURI());
    if(httpServletRequest.getRequestURI().indexOf("/blog/") > -1 && httpServletRequest.getRequestURI().indexOf(".jsp") == -1 ){
    if(!httpServletRequest.getRequestURI().endsWith("/") && httpServletRequest.getRequestURI().indexOf(".do") > -1){
    redirectURL.append(httpServletRequest.getRequestURI().substring(httpServletRequest.getRequestURI().lastIndexOf("/"), httpServletRequest.getRequestURI().length()));

    }else if(httpServletRequest.getRequestURI().indexOf("/blog/") == -1){

    }else{
    redirectURL.append("/blogView.do");

    }
    redirectURL.append("?go=");
    redirectURL.append(blogId);

    httpServletRequest.getRequestDispatcher(redirectURL.toString())
    .forward((ServletRequest)httpServletRequest, (ServletResponse)httpServletResponse);
    //httpServletResponse.sendRedirect(redirectURL.toString());
    }else{
    httpServletRequest.getRequestDispatcher(httpServletRequest.getRequestURI())
    .forward((ServletRequest)httpServletRequest, (ServletResponse)httpServletResponse);
    //httpServletResponse.sendRedirect(httpServletRequest.getRequestURI());
    }
    System.out.println(redirectURL.toString());
    return;


    }

    /**
    * Take out of service
    */
    public void destroy() {
    super.destroy();

    if (_logger.isDebugEnabled()) {
    _logger.debug(" destroyed");
    }
    }
    }






     

    posted on 2008-09-24 18:04 閱讀(4760) 評論(4)  編輯  收藏 所屬分類: 學(xué)習(xí)java

    評論

    # re: 用Url Rewrite Filter重寫url 2008-09-25 08:37 淘聲依舊

    恩  回復(fù)  更多評論   

    # re: 用Url Rewrite Filter重寫url 2008-09-25 09:18 rubyol

    這幾天也看了看UrlRewrite,很不錯(cuò)的。  回復(fù)  更多評論   

    # 為什么我的用不成啊 2008-10-06 21:38 zhjdenis

    <rule>
    <from>^/([a-z0-9A-Z_]+)/([a-z0-9A-Z_]+)/?$</from>
    <to type="forward">>/$2.jsp?go=$1</to>
    </rule>

    index.jsp頁面放了一個(gè)鏈接
    <a href="result.jsp?go=3">turn to </a><br>

    但是鏈接過去還是失敗了,沒有重寫啊。

    我部署后的log是
    信息: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter INFO: destroy called
    2008-10-6 21:37:10 org.apache.catalina.core.ApplicationContext log
    信息: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter INFO: loaded (conf ok)

    應(yīng)該是部署成功了啊  回復(fù)  更多評論   

    # re: 用Url Rewrite Filter重寫url 2008-10-07 09:11

    看看是不是寫反了?

    <a href="result.jsp?go=3">turn to </a><br>
    改成
    <a href="/3/result">turn to </a><br>   回復(fù)  更多評論   

    公告

    希望有一天

    我能用鼠標(biāo)雙擊我的錢包

    然后選中一張100元

    按住“ctrl+c”

    接著不停的“ctrl+v”

    嘻嘻~~~笑醒~~~



    導(dǎo)航

    <2008年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    統(tǒng)計(jì)

    常用鏈接

    留言簿(6)

    隨筆分類(102)

    隨筆檔案(398)

    文章分類

    文章檔案(10)

    有趣網(wǎng)絡(luò)

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品无码久久久久A片苍井空| 一级毛片在线完整免费观看| 嫩草影院免费观看| 免费大片黄在线观看| 亚洲国产精品乱码一区二区| 51在线视频免费观看视频| 亚洲综合无码一区二区痴汉 | 免费看美女让人桶尿口| 人禽伦免费交视频播放| 亚洲免费在线播放| 在线观看亚洲免费| 91老湿机福利免费体验| 黄色网址大全免费| 亚洲国产午夜电影在线入口| 亚洲?v无码国产在丝袜线观看| 免费无码毛片一区二区APP| 国产AV无码专区亚洲AV蜜芽| 亚洲av午夜成人片精品网站| 永久黄网站色视频免费| 无码人妻一区二区三区免费看| 亚洲精品国产av成拍色拍| 亚洲av中文无码乱人伦在线r▽ | 亚洲毛片免费观看| 久久久青草青青国产亚洲免观 | 亚洲av永久无码精品秋霞电影秋 | 国产中文字幕在线免费观看| 亚洲AV无码男人的天堂| 久久亚洲精品国产精品| 在线A亚洲老鸭窝天堂| 免费无码又爽又刺激高潮的视频| 四虎国产成人永久精品免费| 免费VA在线观看无码| 亚洲欧洲日产国码久在线| 亚洲黄网站wwwwww| 精品久久香蕉国产线看观看亚洲| 国产成人精品123区免费视频| 免费H网站在线观看的| 99热在线观看免费| 大地资源在线资源免费观看| 一级毛片在线免费播放| 污污的视频在线免费观看|