Spring Controller Request Mapping无法正常工作

时间:2017-05-11 13:55:54

标签: java spring web-applications

我有一个简单的请求映射,它打开了一个驻留在静态文件夹中的html文件。当请求映射是像'/town'这样的单件请求但在'/visual/town'等网址上不起作用(返回404)时,它可以正常工作。当我调试时,程序会落到所需的位置。当映射由两个或多个部分组成时,它无法识别它指向的文件。这对我来说根本没有意义。

这个有效:

@Controller("VisualHomeController")
public class HomeController {

    @RequestMapping(value = "/town")
    public String emergentTown() {
        return "static/visual/emergent_town.html";
    }
}

这个没有:

@Controller("VisualHomeController")
public class HomeController {

    @RequestMapping(value = "/visual/town")
    public String emergentTown() {
        return "static/visual/emergent_town.html";
    }
}

这是我的servlet映射,似乎问题出现在这里:

<servlet-mapping>
    <servlet-name>main</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

1 个答案:

答案 0 :(得分:1)

所以,我发现问题在于servlet映射。

我需要为我的附加控制器的第一部分添加另一个servlet映射,/visual为:

<servlet-mapping>
    <servlet-name>main</servlet-name>
    <url-pattern>/visual/*</url-pattern>
</servlet-mapping>

然后它奏效了。因此,只要您想要/.../new_page之类的请求,就需要将...定义为servlet映射。请注意,将主servlet映射更改为/*是不够的。

注意:在调试时程序落入return ...的原因仍然没有意义。我的意思是,如果需要一个servlet映射,前端控制器如何将请求路由到该方法?虽然这样做,为什么它无法解决视图?