【问题标题】:Spring Controller Request Mapping Does Not Work CorrectlySpring Controller 请求映射无法正常工作
【发布时间】:2017-05-11 13:55:54
【问题描述】:

我有一个简单的请求映射,可以打开一个位于静态文件夹中的 html 文件。当请求映射是像 '/town' 这样的单部分请求但在像 '/visual/town' 这样的 url 上不起作用(返回 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>

【问题讨论】:

  • 信息太少。
  • 我添加了 servlet 映射信息
  • 如果控件进入正确的方法,那么@RequestMapping 正在工作。没有问题。之后发生的任何事情都取决于您的代码。 RequestMapping 有什么问题
  • 因为这两个请求映射都进入了正确的方法,所以其他所有内容都相同,但后一个代码不起作用。正如我在问题中指出的那样,不同的是网址。所以servlet映射或其他与spring的后台任务相关的东西一定有问题。

标签: java spring web-applications


【解决方案1】:

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

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

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

然后它起作用了。因此,无论何时您想要获得像 /.../new_page 这样的请求,您都需要将 ... 定义为 servlet 映射。请注意,将主 servlet 映射更改为 /* 是不够的。

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

【讨论】:

    猜你喜欢
    • 2020-01-22
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2014-11-03
    • 2014-04-21
    • 1970-01-01
    相关资源
    最近更新 更多