Spring Boot与Jsp

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cszhang570221322/article/details/78129565

 

Spring Boot与Jsp

 

关于Spring Boot 与Jsp,

尽管本人已经很厌恶Jsp了。但是好多人在用,以后写代码也需要,最近新学了SpringBoot框架,发现其与jsp结合不是太完美,现在把走过的坑说一下。

典型的spring Boot Web项目 加入jsp所需要的maven 依赖

项目结构

 

userController代码

扫描二维码关注公众号,回复: 4371666 查看本文章

 

在application.properties 中需加入

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

 

然后就在webapp/WEB-INF/jsp/*.jsp页面

 

环境介绍到这

 

补一个知识点

依赖范围(例子举的很实际)

 

依赖范围就是用来控制依赖和三种classpath(编译classpath,测试classpath、运行classpath)的关系,Maven有如下几种依赖范围:

  • compile:编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖,对于编译、测试、运行三种classpath都有效。典型的例子是spring-code,在编译、测试和运行的时候都需要使用该依赖。
  • test: 测试依赖范围。使用次依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码或者运行项目的使用时将无法使用此依赖。典型的例子是Jnuit,它只有在编译测试代码及运行测试的时候才需要。
  • provided:已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运行时候无效。典型的例子是servlet-api,编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容器以及提供,就不需要Maven重复地引入一遍。

 

这里主要是对

<dependency>

<groupId>org.apache.tomcat.embed</groupId>

<artifactId>tomcat-embed-jasper</artifactId>

<scope>provided</scope> 红色部分不同

</dependency>

 

结论:无论如何, spring-boot:run 和 打包成 war 然后运行都是正常,其他都不正常

一、spring-boot:run 启动方法:

1、两下 Shift ,搜索maven

2、选择相应Module

(需注意:address 端口被占用)

二、打成war 启动方法:

1、设置pom.xml里 packaging值为war

2、两下Shift,搜索maven ,跟springboot一样

3、运行package打包

4、复制打成的war java –jar war名字运行就行

 

三、外置tomcat部署方法

1、确保<scope>provided</scope> 没有被注释

2、修改@SpringBootApplication注解的类,继承一个SpringBootServletInitializer,然后实现其configure方法,具体内容为return builder.sources(本类类名.class);(注意,这里不能是this,this是一个类的实例,而xxx.class是类的模板)

3、仿照上面打成war包的方法,打成war包

4、放在tomcat下的webapp目录,可以直接改xxx.war的名字,然后浏览器输入localhost/xxx就行了

<build> <finalName>springBootJsp</finalName></bulid> 也可以以这种方式改名字

 

 

FUCK  弄了半天,发现不注释provided也行

到底原因在哪,Don't Know

 

总结:继承了SpringBootServletInitializer,然后不注解provided,其生成的war包 jar 可以运行,springBoot:run 可以运行,tomcat外置也可以运行,Fuck

猜你喜欢

转载自blog.csdn.net/cszhang570221322/article/details/78129565