【发布时间】:2017-12-22 08:43:33
【问题描述】:
我的控制器被@Controller注解了,无法调用
- 浏览器显示
出现意外错误(类型=未找到,状态=404)。
但是,如果它用@RestController 注释,那么它就可以工作。我的SpringBoot版本:1.5.3.RELEASE
我的控制器:(在 com.sbootsecurityjsp.controller 中)
@Controller
public class LoginController {
@RequestMapping(value = "/login", method= RequestMethod.GET )
public String login() {
return "Login Controller";
}
}
主类:(在 com.sbootsecurityjsp 中)
@SpringBootApplication(scanBasePackages = {"com.sbootsecurityjsp"})
public class SbootSecurityJspApplication {
public static void main(String[] args) {
SpringApplication.run(SbootSecurityJspApplication.class, args);
}
}
我很好奇如果 @RestController 注释有效,为什么 @Controller 不能工作。如果组件扫描不起作用,@RestController 也不应该起作用。我也添加了scanbasePackages。即使没有scanbasePackages,它也不起作用。
顺便说一句,当应用程序启动时,日志也显示如下一行:
INFO 532 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/login],methods=[GET]}" onto public java.lang.String com.sbootsecurityjsp.controller.LoginController.login()
为什么使用@Controller 是为了区分对页面的请求和休息调用。如果我错了,请纠正我。我的想法是使用 @RestController 来处理 REST 请求,另一方面,@Controller 用于与页面相关的请求——重定向到 JSP 或与视图相关的任何逻辑。这是一个不好的做法吗?
【问题讨论】:
-
“无法调用”是什么意思?因为它被忽略了?
-
@Synch。感谢您的关注。如果 localhost:8080/login 被调用,它返回 404
标签: spring spring-boot