开发者

Hide .jsp extension in JSP project using servlet mapping

I am writing an application in JSP, and I need to remove the ".jsp" extension from the URL. For example, I need:

http://example.com/search.jsp?q=stackoverflow

To be:

http://example.com/search?q=stackoverflow

I know that this can be done using the ".htaccess" file, but I need some other way. I have tried the following code:

<servlet-mapping>
   <servlet-name>jsp</servlet-name>
   <ur开发者_如何学Gol-pattern>*.</url-pattern>
</servlet-mapping>

However, this did not work. Does anyone have some suggestions for ways to accomplish this? Thanks in advance for any help.


With a servlet mapping you need to specify each JSP individually like follows:

<servlet>
    <servlet-name>search</servlet-name>
    <jsp-file>/search.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>search</servlet-name>
    <url-pattern>/search</url-pattern>
</servlet-mapping>

It's easier if all those JSPs are in a common path. E.g. /app/*.

<servlet>
    <servlet-name>app</servlet-name>
    <servlet-class>com.example.FriendlyURLServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/app/*</url-pattern>
</servlet-mapping>

with

request.getRequestDispatcher("/WEB-INF" + request.getPathInfo() + ".jsp").forward(request, response);

This assumes the JSPs to be in /WEB-INF folder so that they cannot be requested directly. This will show /WEB-INF/search.jsp on http://example.com/app/search.

Alternatively, you can use Tuckey's URLRewriteFilter. It's much similar to Apache HTTPD's mod_rewrite.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜