尚硅谷1-Servlet
1.post方式下设置编码,防止中文乱码
req.setCharacterEncoding("utf-8")
get方式,tomcat8开始,不用设置编码
tomcat8之前,编码设置比较麻烦
2.servlet的继承关系
- Servlet接口:init() service() destory()
- GenernicServlet抽象子类:abstract service()
- HttpServlet抽象子类:实现service方法,在service内部通过request.getMethod()判断请求的方式, 然后根据请求的方式去调用内部的do方法。每一个do方法进行简单实现,如请求方式不符合,则报405错误
目的是让我们Servlet子类去重写对应的方法(如果没有重写或者错误,则使用父类的405报错)
3.servlet的生命周期
init(),service(),destory();
--Servlet实例tomcat只会创建一个,所有的请求都是这个实例去响应
--默认情况,第一次请求tomcat才会实例化、初始化、然后再服务。好处是提高系统的启动速度,
但第一次请求耗时长。
要提高系统的启动速度,默认。如要提高响应速度,则要处理初始化时机
设置servlet启动的先后顺序,数字越小,越优先,最小值为0
<load-on-startup>1</load-on-startup>
servlet在容器中是:单例的,线程不安全的(成员变量的值做判断,被另一个线程改变值,做出错误逻辑判断)
尽量不在servlet中定义成员变量
4.http协议
超文本传输协议,无状态的
请求响应包含--
请求:请求行、请求消息头、请求主体
- 请求行:请求方式、url、请求协议http1.1
- 请求消息头:包含很多客户端要告诉服务器的信息,比如:浏览器版号、版本、能接受的类型、编码格式等等
- 请求体(三种情况):
-get方式 没有请求体,但是有一个queryString
-post方式 有请求体,form data
-json方式 有请求体,request payload
响应:响应行、响应头、响应体
- 响应行:协议、响应状态码(200)、响应状态(ok)
- 响应头:服务器信息、服务器发给浏览器的信息(内容的媒体类型、编码、内容长度等
- 响应体:响应的实际内容(<html><head><body>...)
5.会话
无状态:服务器无法区分两次或多次请求是同一个客户端还是不同客户端发送的请求
--通过会话跟踪 解决无状态的问题
会话跟踪技术:
--客户端第一次发请求获取session,获取不到,创建新的,然后响应给客户端
--下一次客户端给服务器发送请求时,会把sessionID带给服务器,那么服务器就能获取到,服务器判断不是该客户端第一次请求
--常用api:
- request.getSession() 获取当前的会话,没有则创建一个新的会话
- request.getSession(true) 效果和不带参数一样
- request.getSession(false) 获取当前会话,没有则返回null,不会创建新的
- session.getId() 获取sessionId
- session.isNew() 判断当前session是否是新的
- session.getMaxInactiveInterval() 设置session的非激活间隔时长,默认1800秒 (驾考理论培训 几分钟不操作 需重新登录)
- session.Invalidate() 强制性让会话立即失效
session保存作用域
session保存作用域是和某一个具体的session对应的
--常用api:
- void session.setAttribute(k,v)
- object session.getAttribute(k)
- void removeAttribute(k)
6.服务器端内部转发及客户端重定向
服务器内部转发:request.getRequestDispatcher("...").forward(request,response)
-- 一次请求响应的过程,对于客户端而言,不知道 服务器内部经过多次转发
-- 地址栏没有变化
客户端重定向:response.sendRedirect("...")
-- 两次请求响应的过程,客户端知道请求url发生了变化
-- 地址栏的url变化
7.thymeleaf的部分标签
1)使用步骤:添加jar包,新建ViewBaseServlet(2个方法),配置两个<context-param>:view-prefix,view-suffix
2)部分标签:<th:if>,<th:unless>,<th:each>,<th:text>
//200 ok
//302 重定向
//404 找不到url
//405 请求方式不支持
//500 服务器内部错误

浙公网安备 33010602011771号