保存http状态,保存在客户端,保存在浏览器上------->登录信息,保存在浏览器上,以键值对的形式。不安全

使用cookie的步骤:

  1. 创建Cookie对象
Cookie cookie = new Cookie("username", username);
  1. 设置最大时效
cookie.setMaxAge(5000); //以毫秒为单位
  1. 把cookie放入到http响应头中
resp.addCookie(cookie);
  1. 遍历获取Cookie
		Cookie[] cookies = req.getCookies();
            for (Cookie cookie : cookies) {
                if(cookie.getName().equals("username")){
                    resp.sendRedirect("success.html");
                }
            }

Session

  1. 获取session会话
HttpSession session = req.getSession();
String username = req.getParameter("username");
//把username放入到session中
session.setAttribute("username",username);
  1. session销毁
session.invalidate();
  1. 设置session的过期时间
session.setMaxInactiveInterval(3000); //毫秒为单位
  1. 根据key值删除对应的属性
session.removeAttribute("");

session中的数据什么时候失效

  1. 过期了
  2. 关闭浏览器(并不能完全的销毁session,JSESSIONID,根据JSESSIONID可以找到之前的session)
  3. 调用session销毁的方法

网站上的安全退出,销毁session和cookie

Filter过滤器

注册filter

通过编辑web-xml配置

<!--注册filter-->
    <filter>
        <filter-name>HelloFilter(类名)</filter-name>
        <filter-class>com.jsfot.afternoon.filter.HelloFilter(类名的具体路径)</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>helloFilter(类名)</filter-name>
        <url-pattern>/test.do(拦截进程名)</url-pattern>
</filter-mapping>

通过注解配置

@WebFilter("/test.do")//(拦截进程名)
  1. 初始化
 @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }
  • 在创建Filter对象,在servlet容器(tomcat)加载当前web应用(当前工程)被调用只执行一次。当前Filter的初始化操作,Filter和Servlet都是单例的
  • FilterConfig类似于ServletConfig,获取初始化参数
  1. 主要过滤请求的方法
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    //放行请求
    filterChain.doFilter(servletRequest,servletResponse);
}
  • 真正Filter要处理的逻辑代码需要写在此方法里,每次拦截都会调用这个方法
  • ServletRequest:实际上当请求来的时候,实例化的还是HttpServletRequest
  • ServletResponse:实际上当请求来的时候,实例化的还是HttpServletResponse
  • FilterChain:过滤器链,一个项目中可以有多个过滤器的,会形成一个链,当前过滤器会把请求传递给下一个过滤器
  • Filter的执行顺序:只和filter-mapping的上下顺序有关(web-xml配置)
  1. 销毁
@Override
public void destroy() {

}

Listener监听器

专门用于对其他对象身上发生的事件或状态改变进行监听和相应的处理

分类:

  1. 监听域对象自身的创建和销毁
  2. 监听域对象中的属性的增加和删除
  3. 监听绑定到session中的某个对象的状态的事件监听

JavaWeb三大组件:Servlet、Filter、Listener