使用springMVC删除浏览器URL文件扩展名

时间:2014-03-28 07:24:48

标签: spring jsp web.xml

我正在使用Spring开发一个应用程序。我通过应用程序导航到不同的页面。我的问题是, 如果我导航到ABC.jsp页面。在浏览器中,它应显示为IP:port/ABC,而不是IP:port/ABC.jsp

春天有没有机制在浏览器中隐藏文件扩展名?

2 个答案:

答案 0 :(得分:1)

使用servlet映射,您需要单独指定每个JSP,如下所示:

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

如果所有这些JSP都在一个共同的路径中,那就更容易了。例如。 /应用/*.

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

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

这假设JSP位于/ WEB-INF文件夹中,因此无法直接请求它们。这将在http://example.com/app/search上显示/WEB-INF/search.jsp。

答案 1 :(得分:1)

如果我没错,你正在使用sping。如此简单,在控制器请求映射中做一件事就是将扩展名和控制器设置视图页面中的一部分放到模型中,同时删除扩展名。喜欢

@RequestMapping(value="/login")
    public ModelAndView login() {
        return new ModelAndView("login");
    }

在上面的方法中我通过删除扩展名将控制器映射为登录名,并且在转发模型时我将丢弃扩展名。在这种情况下,您可以转发到控制器,而不在URL中显示扩展名。