SpringBoot整合jsp (增加启动报错,子模块集成无法跳转问题解决方案)

SpringBoot整合jsp具体步骤:

具体方法可参见官方示例:https://github.com/spring-projects/spring-boot/tree/v2.1.3.RELEASE/spring-boot-samples/spring-boot-sample-web-jsp

1、SpringBoot整合jsp时,项目一定要改为war类型,否则会找不到页面。可在创建项目时选择war或者在pom.xml文件内修改。
2、引入tomcat外部依赖,因为SpringBoot对jsp没有很好的支持,在pom.xml文件中引入以下mavne依赖。

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
<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>

3、在src/main/resouce/application.prooerties中配置view视图路径前缀和后缀

#整合jsp
spring.mvc.view.prefix:/WEB-INF/jsp/
spring.mvc.view.suffix:.jsp

4、创建文件jsp文件,src/main/webapp/WEB-INF/jsp/idnex.jsp,没有的文件夹自己进行创建。注意:不要把jsp页面存放在resouces文件,否则不会被访问到。目录结构如下:

5、sprongboot启动引导类继承SpringBootServletInitializer

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

6、Controller类注解要使用@Controller,不能使用@RestController,否则无法加载页面。@RestController是返回一个Json串。

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Map;

@Controller
public class testController {

    //跳转index页面
    @GetMapping("/test1")
    public String test1(Map<String,String > model){
        System.out.println("test1");
        model.put("name","xiaoming");
        model.put("gender","nan");
        return "index";
    }

    //返回json字符串
    @ResponseBody
    @GetMapping("/test2")
    public String test2(){
        System.out.println("test2");
        return "index";
    }
}

7、根据Controller类的路径访问,即可跳转到指定jsp页面。

项目启动,访问localhost:8080/test1和localhost:8080/test2,看页面显示情况

8、如果单模块情况下启动报错,或者无法跳转jsp页面,注掉tomcat-embed-jasper依赖的<scope>标签

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
<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>

9、如果多模块情况下,子模块项目无法跳转jsp页面,则在标题8操作的基础上,设置Working directory路径

菜单栏选择Run-->>Edit Configurations,把Working directory修改为Module Dir

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值