4

我正在爲使用JSP,Tomcat和urlrewritefilter進行URL重寫的在線健康雜誌開發一個簡單的cms。 我正在從wordpress遷移內容,並應在網站上保留固定鏈接。 永久鏈接如下所示,只有字母和數字。JSP中的WordPress壓縮Urlrewriting,Urlrewritefilter中的Tomcat

http://www.example.com/post-or-category-name-with-letters-or-1234/ 

我想重寫我的網址在我的jsp應用程序,以便我可以有像上面的網址。 重寫規則應該如下工作。

http://www.example.com/post/?pid=1234&name=post-name 
http://www.example.com/category/?cid=1234&slug=category-slug 

http://www.example.com/post-name/ 
http://www.example.com/category-slug/ 

,當然反之亦然。

如何使用urlrewritefilter使用類似wordpress的永久鏈接結構?我是否需要編寫一個Servlet來從DB獲取名稱或slug的id?

任何人都有一個想法如何做到這一點或之前做過?

回答

1

我已經做了一個JavaServer Faces CMS與職位和類別的自定義URL。我基本上使用了javax.servlet.Filterjavax.faces.application.ViewHandler。由於您使用的是直接JSP,因此您不需要javax.faces.application.ViewHandler

我如何申報我的過濾器:

<filter> 
    <filter-name>URLFilter</filter-name> 
    <filter-class>com.spectotechnologies.jsf.filters.URLFilter</filter-class> 
    <async-supported>true</async-supported> 
</filter> 

<filter-mapping> 
    <filter-name>URLFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
    <dispatcher>ERROR</dispatcher> 
</filter-mapping> 

基本濾波器的實現:

/** 
* 
* @author Alexandre Lavoie 
*/ 
public class URLFilter implements Filter 
{ 
    @Override 
    public void doFilter(ServletRequest p_oRequest, ServletResponse p_oResponse, FilterChain p_oChain) throws IOException, ServletException 
    { 
     // Determining new url, get parameters, etc 
     p_oRequest.getRequestDispatcher("newurl").forward(p_oRequest,p_oResponse); 
    } 

    @Override 
    public void init(FilterConfig p_oConfiguration) throws ServletException 
    { 

    } 

    @Override 
    public void destroy() 
    { 

    } 
} 
+0

我已經實現了類似的東西,但是我使用了tomcat的404代碼錯誤頁面轉發(例如error.jsp)並且調用了DBWorker調用,獲得了id並在此error.jsp中加載了實際的頁面內容。我也會嘗試你的實現。 – mutoprak