zoukankan      html  css  js  c++  java
  • 过滤器

    Servlet程序的主要分类:

    标准Servlet(jsp)--mvc;

    过滤Servlet(过滤器);

    监听Servlet(监听器)

    过滤器是为了安全

    过滤器在web中主要起的作用?

    过滤器是程序运行之后加入的

    功能:

    1,任何网站都需要对用户是否登录进行过滤

    2,屏蔽非法文字

    3,对请求内容进行统一编码

    所在的类实现Filter接口,则就可以实现过滤器public interface Filter接口

    接口中的方法:

    public void init(FilterConfig filterConfig) throws ServletException

    public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException

    public void destroy()

    过滤器是一个组件,需要在web.xml中部署配置

    <filter>

        <filter-name>first</filter>

        <filter-class>cn.lxh.FirstFilter</filter-class>

    </filter>

    <filter-mapping>

       <filter-name>first</filter-name>

       <!---于Servlet中的url-pattern不同,此处表示对那个页面进行过滤,如果全部都过滤,则"/*"-->

       <url-pattern>/filterdemo</url-pattern>

    </filter-mapping>

    如果过滤器要将内容传递到目的地,则需要使用FilterChain向下传递

    过滤器会执行两次:FilterChain之前执行一次,之后再执行一次

    在doFilter中可以使用RequestDispatcher进行跳转

    过滤器实例:

    1,前台页面

    <form action="" method=" demo.jsp">

      <input name="" type="text" />

      <input name="" type="submit" />

    </form>

    2,过滤器

    package cn.lxh.filter;

    import java.io.IOException;

    import javax.servlet.*;

    public class FirstFilter implements Filter {

     public void init(FilterConfig filterConfig) throws ServletException
     {
      System.out.println("初始化");
     }
     
     public void doFilter(ServletRequest sreq, ServletResponse sres,
       FilterChain chain) throws IOException, ServletException
     {
      String content=sreq.getParameter("content") ;
      if(content!=null)
      {
       if(content.indexOf("AAA")==-1) //没有查到指定的内容
       {
        //将请求继续下传
              chain.doFilter(sreq, sres);
       }
       else
       {
        System.out.println("有非法文字!");
        //如果需要的话,此处依然可以使用RequestDispatcher实现跳转
       }
      }
      else
      {
       chain.doFilter(sreq, sres);
      }
     }
     
     public void destroy()
     {
            System.out.println("销毁过滤器!");  
     }
     
    }

    3,配置web.xml

    4,接收页面demo.jsp

    <%= request.getParameter("");%>

    实例2:

    过虑编码

    package cn.lxh.filter;

    import java.io.IOException;

    import javax.servlet.*;

    public class FirstFilter implements Filter {

     public void init(FilterConfig filterConfig) throws ServletException
     {
      System.out.println("初始化");
     }
     
     public void doFilter(ServletRequest sreq, ServletResponse sres, FilterChain chain) throws IOException, ServletException
     {
      try
      {
       sreq.setCharacterEncoding("content");
      }
      catch (Exception e) {
              System.out.println("出错!");
      }
     }
     
     public void destroy()
     {
            System.out.println("销毁过滤器!");  
     }
     
    }

    实例3:登录验证

    package cn.lxh.filter;

    import java.io.IOException;

    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;

    public class FirstFilter implements Filter {

     public void init(FilterConfig filterConfig) throws ServletException
     {
      System.out.println("初始化");
     }
     
     public void doFilter(ServletRequest sreq, ServletResponse sres,
       FilterChain chain) throws IOException, ServletException
     {
      //Session属于Http范畴,所以ServletRequest对象需要先转换成HttpServletRequest对象
      HttpServletRequest req=(HttpServletRequest)sreq;
      HttpSession session=req.getSession();
      //如果session不为空,则可以浏览其他页面
      if(session.getAttribute("uname")!=null)
      {
       chain.doFilter(req, sres);
      }else
      {
       sreq.getRequestDispatcher("login.jsp").forward(req, sres);
      }
     }
     
     public void destroy()
     {
            System.out.println("销毁过滤器!");  
     }
     
    }

  • 相关阅读:
    Linux系统备份与恢复
    CentOS7修改设置静态IP和DNS
    CentOS系统基础优化16条知识汇总
    CentOS英文提示修改为中文提示的方法
    CentOS修改主机名和网络信息
    CentOS 7系统查看系统版本和机器位数
    Linux下设置SSH Server设置时间链接限制
    查看Linux下系统资源占用常用命令(top、free、uptime)
    查看CentOS系统运行了多久使用uptime命令
    设计模式(七)学习----命令模式
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1951571.html
Copyright © 2011-2022 走看看