版权声明:来一来,看一看,有钱的捧个人场,没钱的你不得捧个人场 https://blog.csdn.net/wait_for_eva/article/details/82940779
必要
之前说了几个servlet
容器:
tomcat
jetty
undertow
但是,还仅仅是一个细节的差别,并未放到更大的层面。
或许,一个更早的疑问,更能说明问题:为什么我们配置tomcat
那么复杂,SpringBoot
中却这么简单?
1. 嵌入式
小巧,方便快捷,只是引入了容器的必要环境(
jar
);和
webjar
类似,打包环境,能够直接调用。****但是,不可能打的全的,最大特征就是不支持
jsp
.
2. 非嵌入式
全生态,全功能,全体验。
只是有那么一点点大,有那么一点点重。
比如说,你需要一只猴子,它会给你个五指山?
太大了,太重了,附加的赠品实在用不上啊。
war项目创建
1. 打包方式
2. pom修改
- 打包
<!-- pom修改打包方式也可以-->
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
- 容器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 记得是外部提供的容器 -->
<scope>provided</scope>
</dependency>
provided
:声明使用外部容器
3. web.xml生成
applay/ok
:不确定一下,就死活不创建src\main\webapp
:默认创建位置就在工程目录下,需要指定一下
外部容器配置
1. 引入外部容器
2. 发布项目选定
用Spring-Boot自己暴露的会好一点
jsp前后缀配置
- 起因
当前面的配置完成之后,就可以直接访问jsp
了,但是在Spring-Boot
项目中,或许你得这样写:
@Controller
public class MyController {
@RequestMapping("/hello")
public String hello(){
return "/WEB_INF/hello.jsp";
}
}
恩…,没毛病,jsp
就是要放在这下面的。不过,的确是有点操蛋。
- 办法
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
这样配置,它就会自动帮我们拼接前后缀了
然后这样写就方便多了
@Controller
public class MyController {
@RequestMapping("/hello")
public String hello(){
return "hello";
}
}
- 参数传递
@Controller
public class MyController {
@RequestMapping("/hello")
public String hello(Model model){
model.addAttribute("msg", "message");
return "hello";
}
}
jsp
页面就可以通过el
表达式进行取值了
<span>${msg}</span>