servlet生命周期
- web容器加载servlet 类
- web容器调用servlet的构造函数,初始化servlet.
- web容器调用servlet的init()方法。注意该方法在servlet的一生中只会调用一次,而且必须在service()方法之前调用
- web容器根据相应的url调用servlet的service()方法。servlet的一生主要处于此阶段
- web容器调用servlet的destroy()方法。该方法一生也只调用一次
注意:1)servlet在调用构造函数和init()方法之间处于一种不确定状态,例如无法捕获web应用配置信息或查找应用的另一个引用,因此不要在构造函数中放任何代码,初始化只运行一次的代码放到init()方法中。
servletConfig对象VS servletContext 对象
ServletConfig 对象:
- 每个servlet都有一个ServletConfig对象
- 用于向servlet传递部署时的信息(数据库等),最好不要把该信息硬编码到代码中
- 用于访问servletContext
- 参数在部署描述文件中的配置
ServletContext:
- 每个web应用有一个ServletConText
- 用于访问web应用参数
- 相当于一个公告栏,可以在此放置消息,应用的其他部分可以访问该消息
- 用于得到服务器信息,包括容器名、容器版本以及支持API的版本
Http方法:
- GET: 要求得到所求请求URL上的一个东西(资源 or文件)
- POST: 要求服务器接受附加到请求的体信息,并提供所请求URL上的一个东西。
- HEAD:只要求得到GET返回结果的首部部分
- TRACE:要求请求返回,这样客户能看到另一端接收到了扫描,以便测试或排错
- PUT: 指出要把包含的消息体放在请求的URL上
- DELETE: 指出删除请求URL上的一个东西(资源or文件)
- OPTIONS:要求得到一个HTTP方法列表,所请求URL上的东西可以对这些HTTP方法做出相应
- CONNECT: 要求连接以建立隧道
GET vs POST
- GET请求参数在URL上,有大小限制,而POST请求参数在消息体中,参数可以传的比较多
- POST相比GET比较安全,
- GET用于得到某个资源,而POST用于发送数据来进行处理
- GET 是幂等的, 而POST不是