大纲
- Servlet技术
- 接口及实现类
- servlet配置
- cookie&session
- 转发与重定向
- 过滤器与监听器
- Servlet并发技术
- Jsp
1. Servlet技术
Servlet == Server + Applet
Server:服务端
Applet:Java的应用程序
即,Servelet是运行在服务端的Java程序。
Servlet无main方法,运行在容器中的程序。
即:一个Servlet就是一个Java类,并提供基于请求-响应模式的Web服务
。
Servlet容器
- 装载和管理Servlet
- 服务端程序:负责把请求转发给Servlet,交由Servlet处理
2. Servlet接口与实现类
Servlet生命周期
init
—>service
(doGet、doPost)—>destroy
注:doGet方法被调用了,所以没有显示
get & post
- 传输方式
HTTP header & HTTP body
URL可见 & URL不可见
- 设计目的
获取数据 & 发送数据
- 安全性
高 & 低
ServletContext
- 通过配置文件共享全局配置信息。
- 通过ServletContext属性实现
不同Servlet
之间通信。- 读取资源配置文件信息
- Servlet转发
3. Servlet配置
ServletMapping匹配规则
- 精确路径匹配,完全匹配
- 最长路径匹配,最长前缀匹配
- 后缀名匹配
- default servlet或者放弃
注,上述规则优先级递减
举例:
url映射 | Servlet |
---|---|
/hello | Servlet1 |
/hello/* | Servlet2 |
/hello/world/* | Servlet3 |
*.jsp | Servlet4 |
/ | Servlet5 |
/hello -精确匹配-> Servlet1
/hello/world/index -最长路径匹配-> Servlet3
/admin.jsp -后缀名匹配-> Servlet4
/world -default servlet-> Servlet5
/hello.jsp -后缀名匹配-> Servlet4
/hello/world/hello.jsp -最长路径匹配-> Servlet3
如果需要在Servlet容器启动时执行操作
<servlet>
<load-on-startup>0</load-on-startup>
.....
</servlet>
load-on-startup改变Servlet默认初始化时间
大于或等于0时,在启动时就会加载该servlet
有多个大于或等于0时,数值小的servlet,优先级高
小于0,或者没有设置时,表示该servlet会在第一次请求时加载
4. Cokkie&Session
- Cookie:会话数据保存在浏览器客户端(key-value)
- Cookie的生命周期:
默认会话结束后失效
setMaxAge设置cookie的有效期
- Cookie的缺陷
大小和数量限制
数据安全性问题
- Session:会话数据保存在服务器端
- Session的生命周期:
默认有效期30分钟
setMaxInactiveInterval设置有效期
部署描述符配置有效期
invalidate使session失效
5. 转发与重定向
转发
forword
一次请求,一次响应。对浏览器是透明的。
地址栏的url是不会变的
重定向
sendRedirect
通过response对象发送给浏览器一个新的url地址
,让其重新请求。
比如,登录请求
两次请求,两次响应。