跳转的问题
跳转结果不是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
效果如图,配置完成
在配置过程遇到的问题
- 这个问题提示的很清楚,缺少jar依赖
- 使用provided版本JSP解析器JAR包,依赖jar 7.0.59 如果是provided会出现以下错误
拓展
- 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查找它