• 9.20JavaWeb之FilterConfig接口


    9.20JavaWeb之FilterConfig接口

    FilterConfig的实现方式

    由容器实现

    FilterConfig的作用

    用于在过滤器初始化期间向其传递信息,容器将它作为参数传入过滤器的 init() 方法中。通过 filterConfig 对象就可以获得 Filter 的初始化参数。

    FilterConfig接口当中的方法:

    返回值类型方法描述
    String getInitParameter(String name) 根据初始化参数名 name,返回对应的初始化参数值。
    Enumeration getInitParameterNames() 返回过滤器的所有初始化参数名的枚举集合。
    ServletContext getServletContext() 返回 Servlet 上下文对象的引用。
    String getFilterName() 返回过滤器的名称。

    Practice

    登录html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <title>This is a Login Html</title>
    </head>
    <body>
     <form action="/HttpServletRequestDemo_war_exploded/LoginNo2" method="post">
         <table border="1" width="80%">
             <tr>
               <td colspan="2" align="center">
                JunkingBoy
               </td>
             </tr>
             <tr>
               <td>
                账号:
               </td>
               <td>
                 <input type="text" name="username" />
               </td>
             </tr>
             <tr>
               <td>
                密码:
               </td>
               <td>
                 <input type="password" name="password" />
               </td>
             </tr>
             <tr>
               <td colspan="2" align="center">
                 <input type="submit" value="提交" />
               </td>
             </tr>
         </table>
     </form>
    </body>
    </html>

    登陆验证的Servlet:

    package com.example.HttpServletRequestDemo;

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;

    /**
    * 登录的Servlet类
    * @since JDk 1.8
    * @date 2021/09/20
    * @author Lucifer
    */
    @WebServlet(name = "login", value = "/login")
    public class LoginServletNo2 extends HttpServlet {
       //设置UID
       private static final long serialVersionUID = 1L;

       //无参构造器
       public LoginServletNo2(){
           super();
      }

       //Get方法
       @Override
       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           //设置响应字符集
           resp.setContentType("text/html;charset=UTF-8");
           //输出内容到控制台
           resp.getWriter().write(
                   "<h1 align="center">JunkingBoy Welcome you</h1>"
          );
      }

       //Post
       @Override
       protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           doGet(req, resp);
      }
    }

    登录验证的过滤器:

    package com.example.HttpServletRequestDemo;

    import javax.servlet.*;
    import java.io.IOException;
    import java.util.Enumeration;

    /**
    * 定义一个实现了Filter接口的过滤器类,用于体验FilterConfig接口的用法
    * @since JDk 1.8
    * @date 2021/09/20
    * @author Lucifer
    */
    public class BlackListFilter implements Filter {
       //定义属性
       private FilterConfig fConfig;

       //实现接口当中的方法
       @Override
       public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
           //设置响应字符集
           resp.setContentType("text/html;charset=UTF-8");
           //登录成功的判断
           Boolean success = true;
           //获取前台登录的账号信息
           String name = req.getParameter("username");
           //获取过滤器当中的初始化的参数
           Enumeration<String> blackListName = fConfig.getInitParameterNames();
           //判断前台登录账号是否为空
           if (name == null || "".equals(name)){
               resp.getWriter().write("用户名不能为空!");
          }else {
               //账号不为空,循环遍历是否在黑名单
               while (blackListName.hasMoreElements()){
                   //黑名单的账号则不允许登录
                   if (fConfig.getInitParameter(blackListName.nextElement()).equals(name)){
                       success = false;
                  }
              }
               if (success){
                   //交给下一个过滤器
                   chain.doFilter(req, resp);
              }else {
                   resp.getWriter().write(
                           "<h1 align="center" style="font-family:arial;color:red;">黑名单,不允许登录。</h1> "
                  );
              }
          }
      }

       //初始化方法
       @Override
       public void init(FilterConfig filterConfig) throws ServletException {
      }
    }

     

    It's a lonely road!!!
  • 相关阅读:
    IplImage, CvMat, Mat 的关系
    neon memory copy
    基于v4l2的webcam应用, 本地预监
    makefile写法实例
    Ubuntu 12.04 使用Eclipse搭建C/C++编译环境
    xapp1167与TRD14.4 关系
    v3学院带你一次性认清UART、RS-232、RS-422、RS-485的区别
    v3学院教你学习-task和function的异同
    寒假参加V3
    FPGA培训学习心得
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15315081.html
Copyright © 2020-2023  润新知