容器对Servlet的支持包括
通信支持
Servlet生命周期管理
多线程支持
JSP支持
处理安全性
两个接口 javax.servlet.Servlet
javax.servlet.GenericServlet
两个类:GenericServlet HttpServlet
创建对象
init初始化
doget提供服务
destroy方法销毁
GC回收
正常情况下servlet在服务器被创建出来只有一个对象创建对象,初始化,销毁只会执行一次
局部变量没有线程安全问题
成员变量有线程安全问题
同步锁和局部变量能解决线程安全问题,但是同步锁的性能极低.
Servlet基本配置
完全匹配/servlet/MyServlet.do
目录匹配/servlet/
扩展名匹配.do
容器查找规则
容器会优先查找完全匹配,如果找不到则查找目录匹配,如果仍找不到再查找扩展名匹配
如果一个请求可以匹配多个目录匹配,容器会选择最长的目录匹配
servlet 3.0 对annotation注解支持
模块化编程
Servlet异步处理
异步Listener
文件上传API简化
ServletContext应用上下文
(只有一个对象/)
通过ServletContext对象将虚拟路径转化为部署到服务器那边的真实物理路径
属于整个Web应用程序
可以访问到Web应用程序资源的本地输入流
把资源的虚拟路径转换为物理路径(本地开发路径丶服务器部署的路径)
记录事件日志
绑定一个对象在整个Web应用程序中共享
除非服务器崩溃或者停掉,否则创建出来就是全局对象
Tomcat对WEB-INF里的所有文件是保护的,外部浏览器无法访问
HTTP响应头:发送回来的内容
通用方法:setHeader
!!!setContentType
重定向:用于跳转页面
至少两次请求,两次响应
首先将状态码设置为302,再根据响应头里Location的URL地址,重新发送请求
四种发请求的方式:
地址栏 Get请求
超链接 a标签 Get请求
表单提交 既可以是Post请求,也可以是Get请求
AJAX 既可以是Post请求,也可以是Get请求
特征 GET方法 POST方法
提交数据类型 文本
提交数据长度 不超过225个字符
提交数据可见性 作为URL地址的一部分显示在
提交数据缓存
何时使用GET/POST方法
1请求一个静态页面或图形文件时使用GET方法,因为仅仅需要发送文件名
2发送大数据的时候,使用POST方法
3上传文件时,使用POST方法
4发送用户名,密码或其他保密信息的时候使用POST方法
@WebServlet("/UpLoadServlet") 或者 配置XML文件来映射路径(二选一)
URL 统一资源定位符
URI 统一资源标识符
URI的两个子集: URL URN:
表单中提交数据有二进制数据时,只能用post请求
要改变默认编码集
要通过@MultipartConfig注解 //开启Servlet3.0文件上传开关
请求转发(内转发):地址栏不会发生变化
在服务器内部进行转发 对于用户是一次请求,一次响应
request仓库:只在一次请求和一次响应中有效
在request仓库中保存数据 线程绝对安全
跨服务器最好用请求转发