- 过滤器 (Filter)
- 作用:在访问到正式资源之前进行过滤(请求到达Servlet之前、Servlet处理之后以及响应返回客户端之前进行干预);
- 解决中文乱码问题:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //设置请求的编码格式 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("GBK"); chain.doFilter(request, response); }
- 要实现Filter过滤器,implements Filter;
- 重写Filter的抽象方法,init()进入,doFilter()验证,destroy()销毁;
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //验证用户的请求是否拥有登录状态 HttpServletRequest req=null; HttpServletResponse resp=null; if(request instanceof HttpServletRequest) { req=(HttpServletRequest)request; resp=(HttpServletResponse)response; } //通过请求获取session对象 HttpSession session=req.getSession(); //检查session中是否存储了登录的数据 Object loginobj=session.getAttribute(Sys.LOGIN_USER); if(loginobj!=null) { //如果登录了,就放行 chain.doFilter(request, response);//有下一个过滤器就进入,不然就进入servlet 过滤器用同一个注解 比如:@WebFilter("/easyi") System.out.println("------已经登录"); }else { //如果没有登录就回应对应数据 // response.getWriter().write("未登录"); resp.sendRedirect("http://localhost:8080/wed/login2.jsp");//重定向 }
- 过滤器的实现过程
- 监听器(Listener)
- 监听作用域对象 生命周期和存放值;如:RequestAttributeListener;
- 生命周期监听器;如:RequestListener;
- 实现接口:如:implements ServletRequestAttributeListener 或 ServletRequestListener
- 有六种监听器,request,session,contextlistener
- Cookie
- 创建Cookie
Cookie cookie = new Cookie("cookieName", "cookieValue");
- 设置Cookie的有效期:
cookie.setMaxAge(60 * 60 * 24); // 设置有效期为一天(以秒为单位)
- 将Cookie添加到响应中:
response.addCookie(cookie); // 将Cookie添加到响应中
- 从请求中获取Cookie:
Cookie[] cookies = request.getCookies(); // 获取请求中的所有Cookie for (Cookie c : cookies) { if ("cookieName".equals(c.getName())) { String cookieValue = c.getValue(); // 获取名为"cookieName"的Cookie的值 // 根据cookieValue进行相应的操作 } }