web.xml:
web.xml文件是整个tomcat中web项目的项目配置文件,相当于全局变量,每个项目的web\WEB-INF文件夹下也有一个web.xml,此文件只为当前web项目服务,相当于局部变量。
1.设置编码
tomcat8开始,设置编码,只需针对post方式 :
request.setCharacterEncoding("UTF-8");
注意: 设置编码(post)这句需放在所有获取动作之前。
2.Servlet的生命周期
-
init(),service(),destroy() 三个方法对应初始化,服务,销毁。
-
第一次请求时会对Servlet进行实例化、初始化、然后服务。
-
可以通过<load-on-startup>来设置servlet启动的先后顺序,数字越小启动越靠前,最小值为零。
( 可以让其在第一次请求前就初始化!)
-
Servlet在容器中史:单例的、线程不安全的。
-
单例:所有的请求都是同一个实例去响应。
-
线程不安全:如果根据这唯一的实例中的变量进行逻辑判断,可能会产生路径修改问题。
-
尽量不要在servlet中定义成员变量。至少尽量不要进行逻辑判断。
-
-
Http 协议:
-
Http : 超文本传输协议。
-
Http 是无状态的。即http是不会为了下一次连接而维护这次连接所传输的信息。
-
Http请求包含两个部分:请求和响应:
-
请求包含:1.请求行 2.请求消息头 3.请求主体
-
响应包含:1.响应行 2.响应头 3.响应体
-
-
3.session会话跟踪技术
一、什么是Session会话
Session 就一个接口(HttpSession)。
Session 就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。每个客户端都有自己的一个 Session 会话。
Session 会话中,我们经常用来保存用户登录之后的信息。
二、如何创建 Session 和获取(id号,是否为新)
如何创建和获取 Session。它们的 API 是一样的 : request.getSession()
第一次调用是:创建 Session 会话
之后调用都是:获取前面创建好的 Session 会话对象。
isNew() :判断到底是不是刚创建出来的(新的)
true 表示刚创建
false 表示获取之前创建
每个会话都有一个身份证号。也就是 ID 值。而且这个 ID 是唯一的。
getId() -------得到 Session 的会话 id 值
三、Session 域数据的存取
1.往 Session 中保存数
req.getSession().setAttribute("key1", "value1");
2.获取 Session 域中的数据
Object attribute = req.getSession().getAttribute("key1");
四、Session 生命周期控制
public void setMaxInactiveInterval(int interval) --设置 Session 的超时时间(以秒为单位),超过指定的时长,Session 就会被销毁。
值为正数的时候,设定 Session 的超时时长。
负数表示永不超时(极少使用)
public int getMaxInactiveInterval();获取 Session 的超时时间
public void invalidate();让当前 Session 会话马上超时无效。
Session 默认的超时时间长为 30 分钟。