<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

    今天發現一個好東西

    Url Rewrite Filter

    它可以實現url重寫,從而隱藏實際的url,同時使url看起來更美觀,簡單

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

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

    1、下載Url Rewrite Filter

    2、在項目的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語言: 臨時自用代碼@代碼發芽網
    <?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> 這是一個通用請求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匹配使用正則表達式的規則,
    實驗中發現一個問題,就是必須把里面的正則表達式用小括號括起來,在正則表達式中叫分組
    不然會報異常:
    java.lang.IndexOutOfBoundsException: No group 2
    哈哈,前幾日還費勁的自己寫Servlet重寫url呢,原來這有現成的,更加覺得自己現在的水平遇到的問題網上的前輩們早都遇到過了,一定要站在巨人的肩膀上,少走彎路啊。


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

    Java語言: 臨時自用代碼@代碼發芽網
    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)  編輯  收藏 所屬分類: 學習java

    評論

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

    恩  回復  更多評論   

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

    這幾天也看了看UrlRewrite,很不錯的。  回復  更多評論   

    # 為什么我的用不成啊 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頁面放了一個鏈接
    <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)

    應該是部署成功了啊  回復  更多評論   

    # 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>   回復  更多評論   

    公告

    希望有一天

    我能用鼠標雙擊我的錢包

    然后選中一張100元

    按住“ctrl+c”

    接著不停的“ctrl+v”

    嘻嘻~~~笑醒~~~



    導航

    <2008年10月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(102)

    隨筆檔案(398)

    文章分類

    文章檔案(10)

    有趣網絡

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久亚洲精品无码网址色欲 | 成人超污免费网站在线看| 亚洲免费视频网站| 亚洲精品免费在线| 亚洲国产精品日韩av不卡在线| 三级网站免费观看| 亚洲黄色一级毛片| 日韩免费视频一区| 永久免费不卡在线观看黄网站| 国产一级高清免费观看| 男女一边摸一边做爽的免费视频| 免费看男女下面日出水视频| 久久免费看黄a级毛片| 日韩精品无码免费专区网站| 免费无码国产V片在线观看| 亚洲av无码国产精品色午夜字幕| 三年片免费观看大全国语| 亚洲日韩中文字幕| 亚洲欧洲日本在线| 9久9久女女免费精品视频在线观看 | 中文字幕永久免费| 中文字幕亚洲第一| 老妇激情毛片免费| 日韩精品无码人妻免费视频| 亚洲第一第二第三第四第五第六| 99久久人妻精品免费一区| 国产成人亚洲精品狼色在线| 亚洲av片在线观看| 亚洲av永久无码精品天堂久久| 亚欧免费视频一区二区三区| 精品一区二区三区无码免费直播| 久久精品亚洲一区二区| 亚洲成AV人片在线观看ww| 日本一道一区二区免费看| 永久免费bbbbbb视频| 最近中文字幕完整版免费高清| 亚洲AV无码乱码在线观看代蜜桃 | 亚洲视频免费观看| 精品亚洲成AV人在线观看| 亚洲?V无码成人精品区日韩| 九九精品免费视频|