4

Je développe un simple cms pour un magazine de santé en ligne en utilisant JSP, Tomcat et urlrewritefilter pour url réécriture. Je migre le contenu de Wordpress et devrait garder les permaliens sur le site. Permaliens ressemble à ci-dessous avec seulement des lettres et des chiffres.Urlrewriting Wordpress-like dans JSP, Tomcat avec Urlrewritefilter

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

Je veux réécrire mon url dans mon application jsp pour que je puisse avoir urls comme ci-dessus. La règle de réécriture devrait fonctionner comme suit.

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

dans

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

Et bien sûr, vice-versa.

Comment puis-je avoir une structure permalink de type wordpress en utilisant urlrewritefilter? Ai-je besoin d'écrire une servlet pour obtenir l'identifiant du nom ou du slug de DB?

Quelqu'un at-il une idée sur la façon de le faire ou de le faire avant?

Répondre

1

Je l'ai déjà fait un JavaServer Faces CMS avec l'URL personnalisé pour les postes et les catégories. J'ai utilisé essentiellement javax.servlet.Filter et javax.faces.application.ViewHandler. Puisque vous êtes en JSP, vous n'avez pas besoin de javax.faces.application.ViewHandler.

Comment je déclarais mon filtre:

<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> 

mise en œuvre du filtre de base:

/** 
* 
* @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

J'ai implémenté quelque chose de similaire, mais j'ai utilisé la redirection de page d'erreur de tomcat pour le code 404 (par exemple error.jsp) et fait des appels DBWorker, j'ai obtenu l'ID et chargé le contenu de la page dans cette error.jsp. Je vais essayer votre implémentation aussi. – mutoprak