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
2
3
4
HttpSession  hs=request.getSession();            
如果请求中拥有session的标识符也就是JSESSIONID,则放回其对应的session对象
如果请求中没有session的标识符,则创建新的session对象并将其JSESSIONID作为从cookie数据存储到浏览器内存中
如果session对象是失效了,也会从新创建一个session对象,并将其JSESSIONID存储到浏览器的内存中

设置session存储时间
​ session.setMaxInactiInterval
设置session强制失效
​ session.invalidate

5. Servlet技术:

ServletContext对象: (可以实现网页计数器) 一个项目只有一个
生命周期:服务器启动与关闭
作用:

  1. 使用ServletContext获取不同用户的数据共享
  2. 获取项目web.xml的全局配置属性 作用:将静态数据和代码进行解耦
  • this.ServletContext.getinitParameter
  1. 获取webroot(项目根目录)的资源的绝对路径
  • this.ServletContext.getRealPath("/文件夹/文件名");
  1. 获取项目根目录下的资源的流对象
  • this.ServletContext.getRersourceAsStream(String path);

※此种方式只能获取项目根目录下的资源对象,class文件的流对象需要使用类加载器获取

ServletConfig对象:获取给web.xml每个servlet单独配置的数据的对象

5. 请求重定向:

1
response.sendRedirect("url"):(浏览器行为)
  • 可以跳转到当前项目的资源,也可以跳转到其他项目的资源
  • 地址栏会发生改变,改变重定向地址
  • 浏览器向服务器发出两次请求,那么就不能使用request对象来作为域对象来共享数据

    6. 请求转发:

1
this.getServletContext().getRequestDispatcher("url").forward(request,response);(服务器行为)
  • 转发只能转发到当前项目的资源
  • 地址栏不会发生改变。
  • 浏览器想服务器发出一次请求,那么可以使用request对象作为域对象共享数据