url-pattern在spring mvc应用程序中无效

时间:2013-02-22 07:13:37

标签: spring-mvc web.xml url-pattern

我在spring mvc框架上做了一个基本的应用程序。

当我在web.xml上写下面的url模式时:

<servlet-mapping>
        <servlet-name>springxml</servlet-name>
        <url-pattern>*.jsp</url-pattern>
  </servlet-mapping>

并运行应用程序(使用../SpringMVCXML/welcome.jsp),它显示HTTP状态404错误。

当我更改.jsp以外的url模式时,应用程序运行正常。

为什么应用程序没有在 .jsp url模式上运行?

我曾使用以下java类作为控制器。

@Controller
@RequestMapping(value="/welcome",method=RequestMethod.GET)
public class ControllerHello {
    @RequestMapping(method=RequestMethod.GET)
    public String printHello(ModelMap map) {
        map.addAttribute("message", "Hello Spring MVC Framework");
        return "hello";
    }
}

另外,我的springxml-servlet.xml有以下代码:

<bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

2 个答案:

答案 0 :(得分:1)

假设你还有springxml servlet也提供除* .jsp之外的其他视图(你的web.xml中可能有其他的servlet映射),情况如下:

您为路径/ welcome注册了一个控制器,而不是/welcome.jsp。因此,/ welcome.jsp未映射到Spring mvc控制器。 / welcome HelloController将为您提供String输出hello。

/welcome.jsp将给出错误404,因为它在WEB-INF中并且没有针对该URL的Spring MVC控制器。

org.springframework.web.servlet.view.InternalResourceViewResolver用于将您的jsp文件放在/ WEB-INF中。查看http://www.mkyong.com/spring-mvc/spring-mvc-internalresourceviewresolver-example/,了解InternalResourceResolver的功能。基本上,它使Spring MVC能够使用不在您的公共资源中的jsp作为视图。 它不是将这些jsps注册为有效URL的机制。

网址在请求图中确定。

答案 1 :(得分:0)

您可能没有任何弹簧控制器映射到此URL /welcome.jsp 你正在使用什么版本的弹簧?如果您使用的是2.5或更高版本的弹簧,请尝试以下代码

@RequestMapping(value = "welcome.jsp")
public String welcomeJSP(){
    return "welcome";
}