SpringBoot如何访问jsp页面

发布时间:2022-09-26 11:16:52 作者:iii
来源:亿速云 阅读:547
# SpringBoot如何访问JSP页面

## 一、前言

在SpringBoot项目中,虽然官方推荐使用Thymeleaf、FreeMarker等模板引擎,但仍有不少传统项目需要集成JSP(JavaServer Pages)。本文将详细介绍如何在SpringBoot 2.x/3.x中配置和访问JSP页面,并解决常见问题。

## 二、环境准备

### 1. 创建SpringBoot项目
通过Spring Initializr创建项目时需注意:
```xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 必须添加tomcat-embed-jasper -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

2. 项目结构要求

src/
├── main/
│   ├── java/
│   ├── resources/
│   └── webapp/       # 必须使用此目录名
│       └── WEB-INF/
│           └── views/ # JSP存放目录

三、核心配置步骤

1. 配置文件设置

application.properties中添加:

# JSP配置
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
# 开发时关闭缓存
spring.mvc.servlet.load-on-startup=1
server.servlet.jsp.init-parameters.development=true

2. 配置视图解析器

若需要自定义配置,可创建配置类:

@Configuration
public class JspConfig implements WebMvcConfigurer {
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

四、控制器开发示例

1. 基础控制器

@Controller
public class HomeController {
    
    @GetMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello JSP!");
        return "hello"; // 对应/WEB-INF/views/hello.jsp
    }
}

2. 传递复杂对象

@GetMapping("/user")
public String userInfo(Model model) {
    User user = new User("张三", 25);
    model.addAttribute("user", user);
    return "user";
}

五、JSP页面开发

1. 基础JSP示例

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>SpringBoot JSP</title>
</head>
<body>
    <h1>${message}</h1>
    <p>当前时间:<%= new java.util.Date() %></p>
</body>
</html>

2. 使用JSTL标签

需额外添加依赖:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

示例JSP:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:forEach items="${users}" var="user">
    <p>${user.name} - ${user.age}</p>
</c:forEach>

六、常见问题解决

1. 404错误排查

2. JSP未被编译

# 添加编译配置
server.tomcat.additional-tld-skip-patterns=*.jar

3. SpringBoot 3.x特殊配置

需要额外添加依赖:

<dependency>
    <groupId>jakarta.servlet.jsp.jstl</groupId>
    <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
    <version>2.0.0</version>
</dependency>

七、性能优化建议

  1. 预编译JSP:在生产环境中预编译JSP
mvn tomcat7:jspc
  1. 缓存控制:生产环境开启缓存
spring.mvc.servlet.load-on-startup=0
server.servlet.jsp.init-parameters.development=false
  1. 资源压缩:配置Tomcat压缩
server.compression.enabled=true
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript

八、总结

虽然SpringBoot官方不推荐使用JSP,但在迁移传统项目时仍是必要技术。关键点包括: 1. 正确的依赖配置(tomcat-embed-jasper) 2. 严格的目录结构(webapp/WEB-INF) 3. 完善的视图解析配置 4. 针对不同SpringBoot版本的适配

建议新项目优先考虑Thymeleaf等现代模板引擎,但掌握JSP集成方案对于维护老系统至关重要。

注意:SpringBoot 3.x需使用Jakarta EE 9+的命名空间(jakarta.servlet代替javax.servlet) “`

推荐阅读:
  1. IDEA 中运行SpringBoot JSP项目,JSP页面404问题
  2. springboot 2.0.8 跳转jsp页面的示例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot jsp

上一篇:SpringBoot项目如何整合JSP

下一篇:JSP怎么连接Mysql数据库

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》