gpt4 book ai didi

java - Spring Boot 无法正确渲染 View

转载 作者:太空宇宙 更新时间:2023-11-04 10:28:04 25 4
gpt4 key购买 nike

我总是自己构建 Spring MVC Web 应用程序并配置它们,直到有人告诉我这个 Spring Boot 可以帮助您配置/初始化应用程序。所以我决定尝试一下,并使用 Spring Boot 创建了一个新项目。我遵循了所有步骤,以便使其与主类、 Controller 和所有必需的依赖项一起工作。当我运行应用程序时,它会启动并响应 HTTP 请求。当我尝试返回 View 时出现问题。它只是将 View 作为普通 html 文件返回,而不渲染所有 Spring 标签。让我向您展示我所做的事情:

这是项目的目录树:

enter image description here

我创建了一个目录webapp/WEB-INF/view,其中放置了与 View 相对应的jsp文件。到目前为止,我只有一个 helloWord.jsp,它非常简单:

<!DOCTYPE html>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html lang="en">
<body>
<div>
<div>
<h2>Hello ${name}</h2>
</div>
</div>
</body>
</html>

SpringBootHelloWorldApplication是主类,包含以下代码:

@SpringBootApplication
@ComponentScan(basePackages={"com.example.springboothelloworld"})
public class SpringBootHelloWorldApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootHelloWorldApplication.class, args);
}
}

ApplicationCofigurerAdapter以这种方式配置InternalResourceViewResolver:

@Configuration
@EnableWebMvc
public class ApplicationConfigurerAdapter extends WebMvcConfigurerAdapter{

@Bean
public ViewResolver internalResourceViewResolver() {
InternalResourceViewResolver bean = new InternalResourceViewResolver();
bean.setViewClass(JstlView.class);
bean.setPrefix("/WEB-INF/view/");
bean.setSuffix(".jsp");
return bean;
}

@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}

HelloWorldController是处理所有HTTP请求的 Controller

@Controller
@RequestMapping("/home")
public class HelloWorldController {

@RequestMapping("/hello")
@ResponseBody
public String hello(){
return "hello";
}

@RequestMapping("/hello/{name}")
public String helloView(@PathVariable("name") String name, Model model){
model.addAttribute("name", name);
return "helloWorld";
}
}

application.properties 中,我放置了这些行,但我不知道我是否真的需要它们,因为它们已经存在于 ApplicationConfigurerAdapter 中。

spring.mvc.view.prefix= /WEB-INF/view/
spring.mvc.view.suffix= .jsp

当我发送此 HTTP GET 请求时: http://localhost:8080/home/hello/Stefano

它返回:

enter image description here

这当然是一个意想不到的结果。

最佳答案

我想出了如何让它发挥作用。我必须在 macOS 上安装 maven,然后运行以下命令才能删除 target 文件夹、编译代码并将其打包(在我的例子中为 JAR 格式)。

mvn clean package spring-boot:repackage

之后我可以使用以下命令执行 JAR 文件:

java -jar target/file_name.jar

此时(如果一切顺利)我的 Web 应用程序现在正在 localhost:8080 上运行。我仍然不知道如何让它在 IntelliJ 上工作,因为这样我不知道如何调试它。

关于java - Spring Boot 无法正确渲染 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50318119/

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