<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看起來更美觀,簡(jiǎn)單

    最令人興奮的是它一下解決了一值在尋找的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è)通用請(qǐng)求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á)式用小括號(hào)括起來,在正則表達(dá)式中叫分組
    不然會(huì)報(bào)異常:
    java.lang.IndexOutOfBoundsException: No group 2
    哈哈,前幾日還費(fèi)勁的自己寫Servlet重寫url呢,原來這有現(xiàn)成的,更加覺得自己現(xiàn)在的水平遇到的問題網(wǎng)上的前輩們?cè)缍加龅竭^了,一定要站在巨人的肩膀上,少走彎路啊。


    把我的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) 評(píng)論(4)  編輯  收藏 所屬分類: 學(xué)習(xí)java

    評(píng)論

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

    恩  回復(fù)  更多評(píng)論   

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

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

    # 為什么我的用不成啊 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ù)  更多評(píng)論   

    # 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ù)  更多評(píng)論   

    公告

    希望有一天

    我能用鼠標(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ò)

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 高清在线亚洲精品国产二区| 无码国产精品一区二区免费式直播| 成人国产mv免费视频| 亚洲日本成本人观看| 在线观看免费宅男视频| 亚洲成AV人影片在线观看| 国产高清免费在线| 深夜免费在线视频| 最新精品亚洲成a人在线观看| 亚美影视免费在线观看 | 日本免费xxxx色视频| 亚洲成a人不卡在线观看| 大学生一级毛片免费看| 亚洲男同gay片| 亚洲伊人久久综合影院| 亚洲免费精彩视频在线观看| 久久亚洲精品无码AV红樱桃| 久草免费在线观看视频| 亚洲爆乳大丰满无码专区| 亚洲综合精品网站在线观看| 另类免费视频一区二区在线观看| 亚洲福利视频网址| 在线观看国产情趣免费视频| 成人久久久观看免费毛片| 久久久无码精品亚洲日韩蜜桃| 亚洲一区在线免费观看| 亚洲AV无码男人的天堂| 亚洲精品无码午夜福利中文字幕| 3d成人免费动漫在线观看| 国产精品无码亚洲精品2021| 亚洲女久久久噜噜噜熟女| 很黄很黄的网站免费的| 免费无码国产在线观国内自拍中文字幕 | 亚洲av成人中文无码专区| 国产亚洲精品激情都市| 国产精品久久免费| 一级女性全黄久久生活片免费 | 亚洲 欧洲 视频 伦小说| 亚洲免费在线观看| 在线精品一卡乱码免费| 亚洲国产免费综合|