【问题标题】:Spring MVC 4.3 404 error. Path mapping issue. Servlet Mapping and Configuration looks fineSpring MVC 4.3 404 错误。路径映射问题。 Servlet 映射和配置看起来不错
【发布时间】:2016-06-24 19:01:57
【问题描述】:

AppInitializer.java

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{

@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class[]{AppConfig.class};
}

@Override
protected Class<?>[] getServletConfigClasses() {
    return null;
}

@Override
protected String[] getServletMappings() {
    return new String[]{"/api/*"};
}

}

AppConfig.java

@Configuration
@ComponentScan
@EnableWebMvc
public class AppConfig {

}

UserController.java

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;


    @RequestMapping(method = RequestMethod.GET)
    public List<User> getUsers(){
        List<User> users = userService.findAll();
        return users;
    }

当我尝试触发 http://localhost:8080/practise/api/users 时,它会导致“HTTP 状态 404” - /practice/api/users(其中 practice 是项目名称)。在 getServletMappings() 中,我将路径指定为 /api/*,而 UserController 类的请求映射为 /users。我不知道我哪里错了。当我访问 index.xml 时,它工作正常。

错误截图:

Error on the browser when I try to access the api of application

【问题讨论】:

  • 当我触发 URL 时,tomcat 日志中没有错误说,给定 URL 没有映射。我试图打印一条语句getRootConfigClasses()、getServletMappings()。日志中也缺少打印语句。所以我假设,spring mvc 的配置可能是错误的。但是我怎么能弄明白呢?

标签: spring-mvc http-status-code-404 request-mapping


【解决方案1】:

你应该在 Requestmapping 中使用 value 属性,比如 @RequestMapping(value="users",method = RequestMethod.GET)

【讨论】:

  • -> 我把 @RequestMapping("/users") 给了 UserController 类。由于 RequestMapping 是分层的,它适用于函数 getUsers()。如果我错了,请纠正我。
  • 是的,你是对的,但要区分处理请求的方法,你应该给 @RequestMapping(value="something") 并且你必须通过完整的 URL 路径调用,比如 yourpath/users/something .i认为它会为你工作
猜你喜欢
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多