静态资源
- 无需在程序运行时通过代码运行生成的资源,在程序运行之前就写好的资源。例如:html、css、js、img、音频文件和视频文件
浏览器向服务端发送请求时,它不管你后端到底是如何写的,它只负责发送请求报文。
Tomcat收到这个请求后,它会根据你请求的请求路径,假设你找的是一个HTML,Tomcat也会在后端给我们生成报文。
对于客户端来说,我收到的响应,客户端只知道响应报文,这个响应报文是由Tomcat生成的,Tomcat就会将html放到响应体中。
如果你请求的是一张图片,那么Tomcat就会将这张图片放到响应体中。
其中在响应头中会通过 Content-Type
告诉你这个文件是什么类型的,此时浏览器就会通过这个提示根据正确的类型去解析数据,然后也就能正确的显示在页面上了。
上面 html、png
都是现成的,无需通过代码生成图片。
动态资源
- 需要在程序运行时通过代码运行生成的资源,在程序运行之前无法确定的数据,需要根据参数等要求动态生成,例如
Servlet,Thymeleaf ... ...
- 动态资源指的不是视图上的动画效果或者是简单的人机交互效果
浏览器还是正常的发请求报文,客户端接收到的也是响应报文。
动态资源对应的就是一段Java代码了,运行Java代码,生成响应的数据。响应的数据生成完毕后,再把数据转化为响应的报文,当然这个转化的过程也是由Tomcat帮助我们转化的,我们只负责在这块运行的Java代码产生数据即可。
因此,如果客户端携带过来的参数不一样,那么服务器响应的数据也有可能是不一样的,这就是一个动态的效果。
生活举例
- 去蛋糕店买蛋糕
- 直接买柜台上已经做好的 : 静态资源
- 和柜员说要求后现场制作 : 动态资源