0

というわけでブログをやっているのですが、明確なURLパスでコンテンツを整理するのに困っています。基本的に、作成されるすべての投稿には、「http://www.site.com/article/article_name」のような一意の URL パスが必要です。この時点で、URL は " http://www.site.com/article.jsp?article=article_name " のようになり、article.jsp は次の方法でさまざまなコンテンツを生成します。

request.getParameter("requestedArticleName");

URL パターンに基づいてサーブレットを呼び出すためのサーブレット マッピングについては認識していますが、それがどのように機能するのか、また必要なのかどうかについてはよくわかりません。

4

1 に答える 1

0

これを達成するために使用できる方法の 1 つは、 http:Filter //www.site.com/article/ *からすべてのリクエストを受信し、article.jsp?name=* にリダイレクトする独自の方法を作成することです。

例 :

public class URLFilter implements Filter
{
    @Override
    public void  init(FilterConfig config) throws ServletException
    {

    }

    @Override
    public void doFilter(ServletRequest p_oRequest, ServletResponse p_oResponse, FilterChain p_oChain) throws IOException, ServletException
    {
        String sName = oRequest.getRequestURI();

        if(sName.lastIndexOf('/') != -1)
        {
            sName = sName.substring(sName.lastIndexOf('/') + 1);
        }
        else
        {
            // You could trap that in your article.jsp to show error message
            sName = "404";
        }

        p_oRequest.getRequestDispatcher("/article.jsp?name=" + sName).forward(p_oRequest,p_oResponse);
    }
}

もちろん、それを改善し、いくつかの検証を行う必要があります。また、このコードはテストされていませんが、私の JSF CMS URLFilter に基づいています。

web.xmlこれを!に含めることを忘れないでください。

<filter>
    <filter-name>URLFilter</filter-name>
    <filter-class>path.to.your.URLFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>URLFilter</filter-name>
    <url-pattern>/article/*</url-pattern>
</filter-mapping>
于 2013-05-26T20:03:23.660 に答える