- 过滤器 (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进行相应的操作 } }
- session和cookie的区别
- 保存位置:Session保存在服务器端的内存中,而Cookie保存在客户端,通常是浏览器中或者文件中。
- 保存时间:Session在关闭当前会话后会自动清空,而Cookie的存留时间取决于过期时间。
- 安全性:由于Session保存在服务器端,相对较安全,而Cookie保存在客户端,存在安全隐患,可能被拦截或被人为清除。
- 大小限制:Session没有大小限制,而Cookie的大小通常受限于浏览器,一般是4K左右。
- 稳定性:由于Session保存在服务器端,相对较稳定。而Cookie在客户端,受用户控制,可能被禁用或清除。
- 生存周期:Session通常在浏览器关闭后消失,而Cookie的生存周期取决于预先设置的生存周期或永久的保存于本地文件。
- 数据库连接池
- 常用数据库连接池:DBCP C3P0 druid;
- xmind