尚硅谷--JavaWeb篇
参考内容
参考视频:https://www.bilibili.com/video/BV1Y7411K7zz?p=325&vd_source=510ec700814c4e5dc4c4fda8f06c10e8
代码地址:https://gitee.com/empirefree/SpringBoot-summarize/tree/尚硅谷-JavaWeb篇/
🔥1. 基本内容
1.1.基本概念
1.1.0 JavaEE/JavaSE
JavaEE:指的是一种规范,包含了目前tomcat,servlet等等,也包含了jdk(javaSE就包含了jdk里面的各种包)
1.1.1 JavaWeb
Javaweb 是指java语言编写的可通过浏览器访问的程序总称
1.1.2 Tomcat
tomcat是轻量级的Javaweb容器支持对jsp,servlet这种动态资源的加载,是市面上流行的Javaweb服务器。
1.1.3 Servlet
1.1.3.1 基本概念
Servlet是JavaEE规范之一,规范也是接口,也是Javaweb三大组件之一。
JavaWeb三大组件:servlet,filter过滤器,listener监听器,是服务器上的java程序,负责接收与响应客户端请求
各种不同版本支持的环境也有所不同tomcat -- servelet -- javaEE -- jdk环境
1.1.3.2 生命周期
整体伴随项目的启动和结束
- 执行Servlet构造器方法,init初始化方法
- 每次都会调用Service方法
- 执行Destory销毁方法
1.1.3.3 HttpServlet
实际开发中,一般通过继承httpServlet来实现Servlet接口
1.1.3.4 ServletConfig
Servlet配置信息类,可以获取ServletContext对象
1.1.3.4 ServletContext
ServletContext是接口,表示上下文对象,一个web工程只有一个ServletContext对象实例,也是一个域对象(类似于Map对象)
1.1.3.5 HttpServletRequest/response
HttpServletRequest:tomcat接受到响应传到Service的doget,dopost方法中,后续就可以HttpServletRequest使用入参数据。
HttpServletResponse:每次请求进来,Tomcat都会创建一个response对象传给servlet使用
1.1.3.7 斜杠
斜杠一般表示绝对路径
1.1.3.8 文件上传下载
用Stream流进行传输
1.1.4 Http协议
1.1.4.1 基本概念
客户端、服务端之间通信需要遵守的协议,两者之间传输的数据叫报文
1.1.4.2 Get/Post请求
1. 请求行
1. 请求方式 get
2. 请求路径: a.html
3. 请求协议版本号
2. 请求头
1. Accept: 客户端可以接受的数据类型
2. Accept-Language:告诉服务器客户端客户接受的语言类型
3. User-Agent:浏览器信息
4. Host:请求服务器的ip和端口
5. Connection:服务器回传数据马上关闭还是保持一小段时间连接
1.1.4.3 响应码
1XX:服务器收到请求,需要请求者继续执行操作
2XX:请求成功
3XX:重定向
4XX:客户端错误
5XX:服务器错误
1.1.4.3 MIME类型
MIME是HTTP协议数据类型,包含文本,音频之类的
1.1.4.4 Http请求步骤
1. 域名到ip的解析:由域名经过浏览器缓存、系统缓存、hosts文件、路由器缓存、递归搜索根域名服务器(DNS解析)
2. TCP/IP连接
3. 浏览器发送http请求,经过路由器转发,通过服务器防火墙,到达服务器,服务器处理并返回HTML界面
4. 浏览器解析该HTML并展示
5. 服务器进行TCP四次挥手断开连接
1.1.4.5 Https
https是通过SSL或TLS的通信加密协议
1. 客户端发送https请求到服务端443端口
2. 服务端生成公私钥给客户端,客户端进行一个随机值的加密给服务端,服务端收到后进行解密,然后内容加密给客户端
3. 客户端收到加密内容后就能进行解密展示
http与https区别:
1. 端口不同,http是80端口,https是443端口
1. https加密和开销多
1.1.5 Cookie
1.1.5.1 基本概念
服务器通知客户端保存数据的一种技术,默认获取到了之后每次请求都带上cookie,默认4KB
1.1.5.2 生命周期
Maxage:
整数:指定秒数
负数:浏览器一关就会被删除
0:马上删除cookie
1.1.6 Session
1.1.6.1 基本概念
Session就是一个接口(HttpSession),存在服务端,用来维护客户端和服务端的会话。除了第一次调用是创建session之外,之后调用都是都是获取前面创建好的session会话对象,默认超时时间30分钟
1.1.6.2 Session-浏览器-Cookie
- 客户端第一次请求,服务端根据request.getSession()先创建Session,传给浏览器后浏览器Cookie的Key是JESSIONID,值是SessionId。Session保存在服务端内存中,每次重启就没了。之前用了SpringSession代理导致误以为两者id不一致!!!
- 后续客户端设置了Cookie之后就再请求服务端就能获取创建好的Session对象
- 所以无论是服务器重启,还是说浏览器关掉之后、手动删了客户端Cookie,下次请求的时候没有携带Cookie,服务器都会重新创建一个新的Session会话
1.1.7 Filter
filter过滤器也包含了init创建,销毁这些步骤
Filter也可以给所有service方法包含try,catch方法
1.1.7 ThreadLocal
ThreadLocal用于解决线程并发下数据安全问题
1.1.8 i18n国际化
语言规范,实现中英文转换
我曾七次鄙视自己的灵魂:
第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。