我正在为一个在线健康杂志开发一个简单的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来获取DB的名称或slug的ID?
有人知道怎么做或以前做过吗?
答案 0 :(得分:1)
我已经完成了一个带有帖子和类别自定义URL的JavaServer Faces CMS。我基本上使用了javax.servlet.Filter
和javax.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()
{
}
}
答案 1 :(得分:0)