• 过滤器


    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("销毁过滤器!");  
     }
     
    }

  • 相关阅读:
    android--jenkins+gradle+android自动化构建apk步骤(转)
    Oracle中REGEXP_SUBSTR及其它支持正则表达式的内置函数小结
    使用 svn+maven+jenkins(hudson)+Publish Over SSH plugins 构建持续集成及自动远程发布体系(转)
    Jenkins(二) 安装、新建Jobs与删除及SVN配置(转)
    Oracle中merge into的使用 (转)
    MyEclipse新建Web Project报错
    HTML5----input-datalist输入框自己主动提示功能
    socket通信简单介绍
    一步一步写算法(之hash表)
    IE8下div中2个button仅仅显示一个
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1951571.html
Copyright © 2020-2023  润新知