Spring Boot 学习笔记(五)——JSP

写在前面

不是说不推荐jsp吗???

静态资源

好像懂了什么叫静态资源了,似乎可以看成前段依赖的jar包?

maven之scope

依赖范围:
compile:编译依赖范围,默认。对编译、测试、运行三种classpath都有效。比如spring-code依赖。
test:测试依赖范围。只对测试classpath有效。比如Junit,编译测试代码和运行测试时才有效。
provided:已提供依赖范围。对编译和测试classpath有效,运行时无效。比如servlet-api,编译和测试项目的时候需要,但运行时有容器提供,就不用maven重复引入了。

application.properties

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

控制类同Thymeleaf

jar包和war包

jar包不会把webapp里的文件包括进去,就没有jsp文件,运行报错404;
war包就有,运行正常。

配置servlet容器和Tomcat

关于Tomcat的所有属性都在org.springframework.boot.autoconfigure.web.ServerProperties 配置类中做了定义,我们只需在application.properties配置属性做配置即可。

#配置程序端口,默认为8080
server.port= 8080
#用户绘画session过期时间,以秒为单位
server.session.timeout=
# 配置默认访问路径,默认为/
server.context-path=
# 配置Tomcat编码,默认为UTF-8
server.tomcat.uri-encoding=UTF-8
# 配置最大线程数
server.tomcat.max-threads=1000

最后

jar包不好webapp目录我知道了,什么外部的tomcat服务器部署war包,外部内嵌的tomcat我也大概明白是个啥了,多的看博主的大概也明白了,反正我是记不住了,遇到再查吧。。。
还是写一下吧:
首先外部部署,需要入口类Application extends SpringBootServletInitializer,并实现configure方法。

@SpringBootApplication
public class Application  extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(Application.class);
	}

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

然后pom.xml中移除内嵌的tomcat依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

并且,jasper的scope设置为provided

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

说白了,编译的时候SpringBootServletInitializer需要这个包里的javax.servlet,运行时又不能让war包里存在servlet.api这个jar包,否则会和外部的tomcat冲突。所以,如果不是war运行或者jar运行,或者只是点击类运行,或者Application run,不要provide的也是可以的,难怪有些文章说没有加scope也跑通了,如果严谨地讲是要有的。

或者方法二:
只需要这样:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

原博主没有解释了,我也大概猜到原因了,我也懒得写了。

maven修改打包名称:

<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
		<finalName>springBootJsp</finalName>  //只要加这句话即可。
	</build>

通过pom.xml配置,可以把WEB-INF目录复制到META-INF/resources下面。这样war包就也可以访问jsp了,然后war也可以通过java -jar命令来启动。
但是有什么意义,我都不用jsp,博主尝试也失败了,我也懒得浪费时间去调了,反正我知道这样做是可以的就行了,如果需要了再弄吧。

参考文献:[1]:http://tengj.top/2017/03/13/springboot5/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值