SpringBoot -跳转jsp页面_05

跳转的问题

跳转结果不是500错误就是下载JSP文件

配置

1. 新建一个基础的 WEB springboot 项目

2. pom.xml 添加 jar 依赖

<dependency>
   <groupId>org.apache.tomcat.embed</groupId>
   <artifactId>tomcat-embed-jasper</artifactId>
   <version>7.0.59</version>
   <!--<scope>provided</scope> 添加这个可能会出现问题 -->  
</dependency>
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
</dependency>

3. 新建TestController.java文件,内容如下

@Controller
public class TestController {
    @RequestMapping("index")
    public String openList(){
        return "index";
    }
}

4. 新建webapp文件夹,与resources同级

在这里插入图片描述

5. 新建JSP页面,此时发现New里面没有JSP页面。需要设置一下才会出现

在这里插入图片描述
添加web
在这里插入图片描述
选择已经添加的webapp
在这里插入图片描述
此时webapp上有蓝色圆点,表示设置成功
在这里插入图片描述
在webapp上右键 --》new–》会出现jsp
在这里插入图片描述

6. 新建一个jsp页面(index.jsp)

在这里插入图片描述

7. 新建MyWebAppConfigurer类

@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurationSupport {
    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setViewClass(JstlView.class);
        return viewResolver;
    }

注: WebMvcConfigurerAdapter 很多人在继承这个类时会出现如图,这是因为springboot2.0过时,
可以继承WebMvcConfigurationSupport ,或者实现WebMvcConfigurer接口
在这里插入图片描述

8. 启动Application

在这里插入图片描述

效果如图,配置完成

在这里插入图片描述

在配置过程遇到的问题

  1. 这个问题提示的很清楚,缺少jar依赖
    在这里插入图片描述
  2. 使用provided版本JSP解析器JAR包,依赖jar 7.0.59 如果是provided会出现以下错误
    在这里插入图片描述
    在这里插入图片描述

拓展

  1. maven 依赖中< scope>中provided 的问题
  • 举例:spring boot 项目是自带tomcat 的,但是我们有时候是需要把项目打包成war 然后放到独立的tomcat中运行的,这个时候我们就需要将它自带的tomcat给排除开,这时候我们就可以使用。< scope>provided</ scope>来实现。
  • 它只影响到编译,测试阶段。所以在我们使用jsp跳转,实际上它是从Servlet继承而来,封装一个叫做HttpJspBase的类从而实现了一个通用化的JSP类。
    2 . scope的其他参数如下:
  • compile
    默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。适用于所有阶段,会随着项目一起发布
  • provided
    跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。
  • runtime
    表示dependency不作用在编译时,但会作用在运行和测试时,如JDBC驱动,适用运行和测试阶段。
  • test
    表示dependency作用在测试时,不作用在运行时。 只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  • system
    跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它

猜你喜欢

转载自blog.csdn.net/weixin_44100514/article/details/86547242