gpt4 book ai didi

java - Spring MVC 如何决定 homecontroller 和 jsp 之间的冲突?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:40 27 4
gpt4 key购买 nike

我正在转换 Spring MVC app到 Spring Boot。Spring 应用程序有一个 Home Controller :

@RestController
public class HomeController {...
...
@RequestMapping("/login")
public String login(Principal p) {
return "login";
}
}

应该只显示“登录”一词。然而,这似乎被忽略了,因为它在 src/webapp/WEB-INF/views 下还有一个 login.jsp,它做的更多,这就是它运行时显示的内容。

当我将 simple-web-app 剪切并粘贴到 Boot 应用程序时,我只看到“登录”一词。

对于更复杂的 jsp 输出,Spring 如何神奇地忽略“登录”一词?我如何在 Boot 中模仿它?

PS 我试过添加:

<dependency> 
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>

spring.mvc.view.prefix=/views/
spring.mvc.view.suffix=.jsp

最佳答案

@RestController 不用于返回呈现的 JSP。这就是 Spring Boot 只响应字符串 login 的原因。尝试将其更改为以下内容:

@Controller
public class HomeController {

@RequestMapping("/login")
public String login(Principal p) {
//do something with your Principal if you want...
return "login";
}
}

如果您正确配置了其他所有内容,Spring 将寻找一个名为 login 的模板(您的 JSP)并将其用作 View 。

@RestController 是用于构建 RESTful Web Service 的 Spring 注释(在 Controller 中定义的 Rest-API 端点)。

顺便说一下,here您可以找到更多关于如何进行的信息,不幸的是,还有一些原因不将 JSP 与 Spring Boot 和嵌入式容器一起使用,而是使用不同的模板引擎。

希望这对您有所帮助!

编辑:这个问题的另一个答案提到了 View 解析器——这确实不重要!但这是 Spring Boot 和 JSP 的特例。为了正确,this article我刚刚发现可能有帮助!

关于java - Spring MVC 如何决定 homecontroller 和 jsp 之间的冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54405244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com