在Idea中使springboot支持jsp页面

本文详细介绍如何在SpringBoot项目中集成JSP页面,包括配置依赖、设置视图解析器及创建JSP页面等步骤。

在idea 上springboot集成jsp页面

第一步:新建一个项目

推荐使用这个,默认下一步就好,

填写自己的信息,next,

选择使用的功能,也可以新建好之后再pom.xml里手动添加,

选择项目存放地址,一个springboot的项目就建好了。下边需要导入相应的依赖包,pom.xml如下:

复制代码
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.clark</groupId>
  <artifactId>spring-boot-web</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
    </parent>

  <name>spring-boot-web</name>
  <url>http://maven.apache.org</url>

  <properties>
   <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

        

  <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- servlet 依赖包 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- JSTL (JSP standard Tag Library) JSP 标准标签库 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!-- Tomcat的支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
          <!--  <scope>provided</scope>-->
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
           <!-- <scope>provided</scope>-->
        </dependency>
  
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
    <build>
     
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
复制代码

下一步是配置application.properties中,只需要添加这2个就可以了

#页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
#页面默认后缀目录
spring.mvc.view.suffix=.jsp

application.yml中:spring节点下面

mvc:
  view:
    prefix: /WEB-INF/jsp/
    suffix: .jsp

接下来需要新建一个文件,在src\mian\webapp,在下边新建一个WEB-INF/jsp文件,在这个下边新建一个jsp页面,

不用去管那个web.xml.,一会在其他地方配置的时候会自动出现,hello.jsp,最好将编码改为UTF-8,


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>My first Spring boot web demo</title>
</head>
<body>
<h2>Hello ${name}</h2>
</body>
</html>
HelloController代码
package sprintboot;

import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

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

    @RequestMapping("/name")
    public String name(Map<String, Object> map) {
        map.put("name", "Clark");

        System.out.println("============================================");
        return "hello";
    }

}

输出一句,看看是否进入到这个方法,算是代替日志的作用吧 。注意一定要将这个Controller放在启动类的同包或者子包下,否则扫描不到。现在可以启动项目去试试,但是访问页面的时候会报404错误,控制到会打印============,说明已经进入方法,在跳转的时候出错。下边要配置idea的东西,

选到这个,

选择modules,点击+号,添加

然后就是这个样子,下边就是要更改这些信息,

更改这2处地方,默认的是web,要更改为src\main\webapp,配置好之后,上文提到的web.xml就自动出现了,不需要去更改。然后去重启项目,在页面就能正常访问了,这个是springboot1.5.6和1.5.7都可以使用。如果是springboot1.4.4的话不需要配置最后一步也能访问,但是1.5.*不配置就会出错,

 昨天晚上测试看一下,打成war可以访问,打成jar会出现404,如果要打包的话,最后设置为war包

<think>我们被要求使用中文回答,并且按照给定的格式要求。用户的问题是关于在IntelliJ IDEA中配置并运行Spring Boot与JSP整合项目。 根据提供的引用信息,我们可以整合出一个步骤指南。注意,引用中提到了两种方式(jar和war),但这里我们以常见的war方式为例(因为JSP在jar包中运行有局限性,通常推荐war包部署),但也会提到jar包方式的关键点。 同时,我们需要注意,在Spring Boot中整合JSP需要一些特定的配置。 步骤: 1. 创建项目时选择打包方式为war(虽然jar也可以,但war更常见于JSP项目,且引用[2]提到有人认为JSP支持jar包,但实际上jar包也可以运行,只是需要额外处理)。 2. 添加必要的依赖(包括Spring Boot Web依赖和JSP相关的依赖)。 3. 配置项目结构(创建webapp目录,并设置为Web资源根目录)。 4. 创建JSP文件存放目录(例如在webapp下创建jsp目录)。 5. 配置视图解析器(告诉Spring Boot在哪里查找JSP文件)。 6. 编写控制器和JSP页面。 7. 运行项目。 详细步骤: 1. 创建项目: 使用Spring Initializr创建项目,选择打包方式为War(在创建项目时选择Packaging为War)。同时添加Web依赖(Spring Web)。 2. 添加JSP相关依赖: 在pom.xml中添加以下依赖(注意:这些依赖在Spring Initializr中可能没有直接选项,需要手动添加): ```xml <!-- JSP依赖 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <!-- JSTL标签库依赖(可选,如果使用JSTL) --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> ``` 3. 配置项目结构(在IntelliJ IDEA中): - 在main目录下创建webapp目录(如果没有的话)。 - 右键点击项目 -> Open Module Settings (F4) -> 选择Modules -> 选择Web -> 在右侧的Web Resource Directories中,点击+号添加刚才创建的webapp目录,并设置路径(例如:src/main/webapp)。 - 在webapp目录下创建jsp目录(用于存放jsp文件)。 4. 配置视图解析器: 创建一个配置类,实现WebMvcConfigurer接口,并重写configureViewResolvers方法: ```java @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void configureViewResolvers(ViewResolverRegistry registry) { // 配置jsp文件查找路径:前缀为 /jsp/(即webapp下的jsp目录),后缀为 .jsp registry.jsp("/jsp/", ".jsp"); } } ``` 5. 编写控制器: ```java @Controller public class HelloController { @GetMapping("/hello") public String hello(Model model, String name) { model.addAttribute("name", name); return "hello"; // 这里返回的字符串对应jsp文件的名称(不需要后缀),视图解析器会加上前缀和后缀 } } ``` 6. 编写JSP页面: 在webapp/jsp目录下创建hello.jsp: ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>Hello ${name}</h1> </body> </html> ``` 7. 运行项目: 直接运行主启动类(带有@SpringBootApplication注解的类)即可。 注意:如果使用jar包方式,需要将JSP文件放在META-INF/resources目录下,但这样在开发时不如放在webapp目录下方便。而且,在Spring Boot官方文档中,对于JSP支持也是有限制的,特别是在使用jar包时,一些内嵌容器不支持JSP。因此,推荐使用war包方式,并部署到外部Tomcat中,但开发时可以直接运行。 另外,如果使用war包方式,需要修改主启动类,使其继承SpringBootServletInitializer并重写configure方法: ```java @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 但是,在开发过程中,我们仍然可以直接在IDE中运行主方法启动,而不需要部署到外部Tomcat。 问题解决:如果遇到404错误,请检查: - 是否添加了必要的依赖(tomcat-embed-jasper和jstl)。 - 是否配置了视图解析器,并且路径正确(前缀是否对应jsp目录的路径)。 - JSP文件是否放在webapp/jsp目录下(注意:在IDEA中,webapp目录需要设置为Web资源根目录)。 根据引用[3]中的配置,我们还需要注意application.properties中是否配置了spring.mvc.view.prefix和spring.mvc.view.suffix,但上面的配置类已经配置了视图解析器,所以不需要在application.properties中配置。如果同时配置,以最后配置的为准。 因此,我们可以在IntelliJ IDEA中按照上述步骤配置并运行项目。 生成相关问题: 1. 如何在Spring Boot项目中配置多个视图解析器? 2. Spring Boot中使用JSP有什么限制? 3. 如何将Spring Boot项目打包成war文件并部署到外部Tomcat? 4. 在Spring Boot中除了JSP,还有哪些常用的模板引擎? 5. 为什么在Spring Boot中使用JSP不被推荐?</think>### 在IntelliJ IDEA中配置并运行Spring Boot与JSP整合项目 以下是详细步骤(基于Spring Boot 2.x/3.x): #### 1. **创建项目并添加依赖** - 使用[Spring Initializr](https://start.spring.io/)创建项目: - 打包方式选择 **WAR**(JSP需依赖Servlet容器,推荐WAR包) - 添加依赖:`Spring Web`、`Apache Tomcat`(内嵌) - 手动添加JSP依赖到`pom.xml`: ```xml <!-- JSP支持 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <!-- JSTL标签库(可选) --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> ``` #### 2. **配置项目结构** - 在`main`目录下创建: ``` src/main/webapp/jsp/ 👈 JSP存放目录 ``` - 在IDEA中配置Web资源目录: 1. 右键项目 → **Open Module Settings** (F4) 2. 选择 **Modules** → **Web** 3. 添加 **Web Resource Directory**:`src/main/webapp` 4. 设置 **Deployment Descriptor**:`src/main/webapp/WEB-INF/web.xml`(可选) #### 3. **配置视图解析器** 创建配置类`WebMvcConfig.java`: ```java @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.jsp("/jsp/", ".jsp"); // 前缀: /jsp/, 后缀: .jsp } } ``` #### 4. **创建Controller和JSP** - 控制器示例: ```java @Controller public class HelloController { @GetMapping("/hello") public String hello(Model model, @RequestParam String name) { model.addAttribute("name", name); return "hello"; // 对应/src/main/webapp/jsp/hello.jsp } } ``` - JSP文件位置:`src/main/webapp/jsp/hello.jsp` ```jsp <%@ page contentType="text/html;charset=UTF-8" %> <html> <head><title>Spring Boot + JSP</title></head> <body> <h1>Hello ${name}!</h1> <p>当前时间: <%= new java.util.Date() %></p> </body> </html> ``` #### 5. **配置应用属性(可选)** 在`application.properties`中添加: ```properties # 关闭Thymeleaf缓存(开发环境) spring.thymeleaf.cache=false # 设置JSP模式(Spring Boot 3+可能需要) spring.mvc.view.prefix=/jsp/ spring.mvc.view.suffix=.jsp ``` #### 6. **运行项目** - 直接运行主启动类(带`@SpringBootApplication`的类) - 访问测试:`http://localhost:8080/hello?name=Spring` #### ⚠️ 常见问题解决 1. **JSP页面404错误**: - 检查`webapp/jsp`目录位置是否正确 - 确认视图解析器配置的前缀/后缀匹配 - WAR包部署需确保JSP在`src/main/webapp`下[^3] 2. **JAR包运行问题**: - 若需打包为JAR,需将JSP放在`META-INF/resources/`目录 - 推荐使用WAR包部署到外部Tomcat[^2] 3. **Spring Boot 3注意事项**: - 需使用Jakarta EE依赖(替换`javax.servlet`为`jakarta.servlet`) - 添加依赖: ```xml <dependency> <groupId>org.glassfish.web</groupId> <artifactId>jakarta.servlet.jsp.jstl</artifactId> <version>2.0.0</version> </dependency> ``` > **关键点**:JSP在Spring Boot中是非官方推荐方案,建议新项目使用Thymeleaf或FreeMarker[^1]。但现有项目迁移时可按此流程整合。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值