Spring Boot与Jsp
关于Spring Boot 与Jsp,
尽管本人已经很厌恶Jsp了。但是好多人在用,以后写代码也需要,最近新学了SpringBoot框架,发现其与jsp结合不是太完美,现在把走过的坑说一下。
典型的spring Boot Web项目 加入jsp所需要的maven 依赖
项目结构
userController代码
在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
更多推荐
Spring Boot与Jsp
发布评论