4

我正在为在线健康杂志开发一个简单的 cms,使用 JSP、Tomcat 和 urlrewritefilter 进行 url 重写。我正在从 wordpress 迁移内容,应该保留网站上的永久链接。永久链接如下所示,只有字母和数字。

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

我想在我的 jsp 应用程序中重写我的 url,这样我就可以拥有像上面这样的 url。重写规则应该如下工作。

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 来从数据库中获取名称或 slug 的 id?

有人知道如何做到这一点或以前做过吗?

4

2 回答 2

1

我已经为帖子和类别制作了一个带有自定义 URL 的 JavaServer Faces CMS。我基本都用过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()
    {

    }
}
于 2012-12-04T14:05:13.363 回答
0

我认为您的答案在于: 如何在 Tomcat 6 中重写 URL

是否有 Tomcat/Java 的 url 重写引擎?

于 2012-12-04T11:56:47.463 回答