1. servlet的特点
- servlet是一个普通的java类,继承了HttpServlet类
- 其实实现了Servlet接口的java类,才是一个Servlete类
- serlvet程序需要交给tomcat去运行
2. Servlet执行过程
前提:tomcat服务器启动时会把每个网站的web.xml加载进内容。
注意:
- 要么以斜杠开头,要么*号开头
- 非法的url-pattern:/itcast/*.html
- 当多个url-pattern同时被匹配对情况下
- 精确匹配优先
- 以后缀名结尾的url-pattern的优先级最低的
4)缺省路径
结论:先找动态网页,在找静态网页
3. servlet的四个重要的生命周期方法
- 构造方法:创建servlet对象时调用,只调用1次,证明了servlet是单例的。单实例,多线程
- init方法:创建完对象之后调用。只调用了1次。该方法用于初始化对象
- service方法:每次请求都调用
- servlet对象是单例的
4. Cookie学习
特点:
- 浏览器端的数据存储技术
- 存储的数据声明在服务器端
- 临时存储:存储在浏览器的运行内存中,浏览器关闭即失效
- 定时存储:设置了cookie的有效期,存储在客户端的硬盘中,在有效期内符合路劲的请求都会附带该信息
- 默认cookie信息存储好之后每次请求都会附带,除非设置有效路径
4. Session技术
4.1 原理
用户第一次访问服务器,服务器会创建一个session对象给此用户,并将该session对象的JSESSIONID使用Cookie技术存储到浏览器中,保证
用户的其他请求能够获取到同一个session对象,也保证了不同请求能够获取到共享数据
特点:
- 存储在服务器端
- 服务器进行创建
- 依赖Cookie技术
- 一次会话:默认存储时间30分钟
作用:
解决了一个用户不同请求处理的数据共享问题
使用:
创建session对象/获取session对象
1 | HttpSession hs=request.getSession(); |
设置session存储时间
session.setMaxInactiInterval
设置session强制失效
session.invalidate
5. Servlet技术:
ServletContext对象: (可以实现网页计数器) 一个项目只有一个
生命周期:服务器启动与关闭
作用:
- 使用ServletContext获取不同用户的数据共享
- 获取项目web.xml的全局配置属性 作用:将静态数据和代码进行解耦
this.ServletContext.getinitParameter
- 获取webroot(项目根目录)的资源的绝对路径
this.ServletContext.getRealPath("/文件夹/文件名");
- 获取项目根目录下的资源的流对象
this.ServletContext.getRersourceAsStream(String path);
※此种方式只能获取项目根目录下的资源对象,class文件的流对象需要使用类加载器获取
ServletConfig
对象:获取给web.xml
每个servlet
单独配置的数据的对象
5. 请求重定向:
1 | response.sendRedirect("url"):(浏览器行为) |
1 | this.getServletContext().getRequestDispatcher("url").forward(request,response);(服务器行为) |
- 转发只能转发到当前项目的资源
- 地址栏不会发生改变。
- 浏览器想服务器发出一次请求,那么可以使用request对象作为域对象共享数据