servlet相关关系以及HTTP协议

刘宁 组长 2022-10-23 15:13:52

1、设置编码
post方式下,设置编码,防止中文乱码
get方式目前不需要设置编码(基于tomcat8)
需要注意的是,设置编码这一句代码必须在所有的获取参数动作值前
request.setCharacterEncoding("UTF-8");

2、servlet的继承关系
(1)继承关系
javax.servlet.servlet接口
Genericservlet抽象类
HTTPservlet抽象子类
(2)相关方法
javax.servlet.servlet接口

 (3)小结:
 继承关系:HttpServlet -> GenericServlet -> servlet
 servlet中的核心方法:     init(), service() ,destroy()
 服务方法:  当有请求过来时,service方法会自动响应(其实时tomcat容器调用的)
        在HTTPServlet中我们会去分析请求的方法:到底时get、post、head还是delete等等
        然后再决定调用的时那个do开头的方法
        那么在HttpServlet中的这些do方法默认都是405实现风格
 因此,我们在新建servlet时,我们才回去考虑请求方法,从而决定重写那个do方法

3、servlet的生命周期
1)生命周期:出生到死亡。对于servlet中三个方法:init(),service(),destory()
2)默认情况下:
第一次接受请求时:这个servlet会进行实例化(调用构造方法)、初始化(调用init())、然后服务(调用service())
从第二次请求开始,每一次都是服务
当容器关闭时,其中的所有servlet实例会被销毁,调用销毁方法
3)servlet实例tomcat只会创建一个,所有请求都是这个实例去响应
4)servlet的初始化时机:
默认是第一次接收请求时,实例化,初始化
我们可以通过来设置servlet启动的先后顺序,数字越小,启动越靠前,最小是0
5)servlet在容器中是:单例的、线程不安全的
单例:所有请求都是同一个实例去响应
线程不安全:一个线程需要根据这个实例中的某个尘缘变量去做逻辑判断。但是在中间的某个时机,另一个线程改变了这个成员变量的值
从而导致第一个线程路径发生变化
尽量不要在servlet中定义成员变量
如果不得不定义成员变量,那么不要去:修改成员变量的值,不要去根据成员变量的值做一些逻辑判断
4、
1)Http称之为 超文本传输协议
2)Http是无状态的
3)Http请求响应包含两个部分:请求和响应
请求包含三个部分:请求行、请求消息头、请求主体
请求行包含三个信息:请求的方式、请求的URL、请求的协议(一般都是HTTP1.1)
请求消息头中包含了很多客户端需要告诉服务器的信息,比如:我的浏览器型号、版本等等
请求体:三种情况
get方式,没有请求体,但是有一个queryString
post方式,有请求体,fromdata
json格式,有请求体
响应也包含三个部分:响应行、响应头、响应体
5、会话
1)Http是无状态的

...全文
65 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50

社区成员

发帖
与我相关
我的任务
社区描述
产学研究,学术传承
社区管理员
  • 又菜又爱玩呜呜呜~
  • 两年半的个人练习生^_^
  • yolanda19910002
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧