Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
在 Spring Boot 中使用 JSP 的正确姿势_创想鸟

在 Spring Boot 中使用 JSP 的正确姿势

在 spring boot 中使用 jsp 的正确姿势

正如摘要所述,本教程旨在帮助开发者在 Spring Boot 项目中正确配置和使用 JSP 视图技术。由于 Spring Boot 对 JSP 的支持存在一些限制,尤其是在使用嵌入式 Servlet 容器并打包为可执行 JAR 文件时,本文将详细介绍如何通过 WAR 打包方式来规避这些限制,并提供必要的配置步骤和注意事项,确保 JSP 能够正常工作。同时,也建议开发者在条件允许的情况下,考虑使用更现代化的模板引擎。

前提条件

在开始之前,请确保你已经安装了以下软件:

JDK (Java Development Kit) 8 或更高版本Maven 或 Gradle 构建工具一个 IDE,例如 IntelliJ IDEA 或 Eclipse

Spring Boot 中 JSP 的限制

Spring Boot 官方文档明确指出,在使用嵌入式 Servlet 容器(如 Tomcat 或 Jetty)并将应用程序打包为可执行 JAR 文件时,JSP 的支持存在一些限制。具体来说:

WAR 打包是关键: 如果使用 Jetty 或 Tomcat,只有使用 war 打包方式才能保证 JSP 的正常工作。可执行的 WAR 文件可以通过 java -jar 命令启动,也可以部署到任何标准的 Servlet 容器中。JAR 包不支持 JSP: 当使用可执行 JAR 文件时,JSP 不被支持。Undertow 不支持 JSP: Undertow 嵌入式 Servlet 容器不支持 JSP。自定义错误页面: 创建自定义的 error.jsp 页面并不能覆盖默认的错误处理视图。应使用自定义的错误页面配置来处理错误。

配置步骤

为了在 Spring Boot 中使用 JSP,你需要执行以下步骤:

修改 pom.xml 或 build.gradle 文件:

Maven (pom.xml):

   ...   war   ...                     org.apache.tomcat.embed           tomcat-embed-jasper           provided                         javax.servlet           jstl             ...

Gradle (build.gradle):

plugins {   ...   id 'war'   ...}dependencies {    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'    implementation 'javax.servlet:jstl'}

将 packaging 设置为 war,并将 spring-boot-starter-tomcat 的 scope 设置为 provided,这意味着 Tomcat 容器将由外部提供,而不是打包到应用程序中。同时,添加 jstl 依赖,以便在 JSP 中使用 JSTL 标签库。

配置视图解析器:

在 application.properties 或 application.yml 文件中,配置视图解析器的前缀和后缀。这告诉 Spring Boot 在哪里查找 JSP 文件。

AVCLabs AVCLabs

AI移除视频背景,100%自动和免费

AVCLabs 268 查看详情 AVCLabs

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

这表示 JSP 文件应该位于 src/main/webapp/WEB-INF/jsp/ 目录下,并且文件扩展名为 .jsp。

创建 JSP 目录:

在 src/main/webapp/ 目录下创建 WEB-INF/jsp/ 目录。这是存放 JSP 文件的默认位置。

创建 Controller:

创建一个 Spring MVC Controller 来处理请求并返回 JSP 视图的名称。

@Controllerpublic class FirstController {    @GetMapping("/")    public String sayHello() {        return "hello"; // 返回 JSP 视图的名称    }}

创建 JSP 文件:

在 src/main/webapp/WEB-INF/jsp/ 目录下创建一个名为 hello.jsp 的文件。

    Hello

Hello, World!

示例代码

以下是一个完整的 Spring Boot 项目结构示例:

MyLibrary/├── src/│   ├── main/│   │   ├── java/│   │   │   └── com/│   │   │       └── lib/│   │   │           └── secondtry/│   │   │               ├── MyLibraryApplication.java│   │   │               └── FirstController.java│   │   ├── resources/│   │   │   └── application.properties│   │   └── webapp/│   │       └── WEB-INF/│   │           └── jsp/│   │               └── hello.jsp│   └── test/│       └── java/│           └── com/│               └── lib/│                   └── secondtry/│                       └── MyLibraryApplicationTests.java├── pom.xml

注意事项

确保你的 JSP 文件位于正确的目录下 (src/main/webapp/WEB-INF/jsp/)。使用 WAR 打包方式。检查 application.properties 或 application.yml 文件中的视图解析器配置是否正确。如果遇到 404 错误,请检查你的 Controller 是否正确映射了请求路径。尽量避免使用 JSP,可以考虑使用 Thymeleaf 或 FreeMarker 等更现代化的模板引擎。

总结

虽然 Spring Boot 对 JSP 的支持存在一些限制,但通过使用 WAR 打包方式,你可以成功地在 Spring Boot 项目中使用 JSP。 然而,考虑到 JSP 的局限性,建议在条件允许的情况下,选择更现代化的模板引擎,以便获得更好的开发体验和更高的性能。

以上就是在 Spring Boot 中使用 JSP 的正确姿势的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/737059.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
windows系统文件损坏如何修复_系统文件损坏问题检测与修复命令
上一篇 2025年11月25日 13:31:12
《羊蹄山之魂》10分钟风景宣传片 探索日本北境
下一篇 2025年11月25日 13:31:13

相关推荐

发表回复

登录后才能评论
关注微信