精华内容
下载资源
问答
  • 2021-12-29 22:15:55

    1.过滤器的概念

    用于拦截客户端和服务器之间的消息,并且过滤二者之间的传递的数据,在项目中我们常常实现Filter接口并且重写其中的doFilter()方法来创建一个过滤器。

    2.字符编码过滤器

    1. resp.setCharacterEncoding("utf-8");

    2. resp.setContentType("text/html;charset=utf-8");

    在这之前我们经常使用的字符编码转换是在每个servlet中的post方法写入代码,而用过滤器的话,我们不需要每次都写入这两行代码,我们只需要实现Filter接口重写里面的doFilter()方法,就可以实现字符编码的过滤器了。

    3.防止盗链接

    当然我们也可以通过过滤器来实现防止盗链接

    更多相关内容
  • javaweb过滤器

    2016-11-15 21:01:30
    javaweb过滤器
  • JavaWeb过滤器

    2017-10-03 19:51:07
    过滤器过滤用户请求 过滤器不处理结果 概念:过滤器是一个服务器端的组件,它可以截取用户端的请求与响应信息,并对这些信息过滤。 工作原理:Web应用程序启动的时候,从web容器加载过滤器。   生命周期:1.实例化...

    过滤器过滤用户请求

    过滤器不处理结果

    概念:过滤器是一个服务器端的组件,它可以截取用户端的请求与响应信息,并对这些信息过滤。

    工作原理:Web应用程序启动的时候,从web容器加载过滤器。

     

    生命周期:1.实例化:web.xml  只执行一次

                       2.初始化:init()只执行一次

                       3.过滤:doFilter()

                       4.销毁:destory()web容器关闭时

     

    init()方法:这是过滤器初始化方法,Web容器创建过滤器实例后将调用这个方法。这个方法中可以读取web.xml文件中过滤的参数。初始化一次

    doFilter()方法:当用户请求访问与过滤器关联的URL时,Web将先调用过滤器的doFilter()方法。FilterChain参数可以调用chain.doFilter()方法,将请求传给下一个过滤器(或目标资源),或利用转发,重定向将请求转发到其他资源。

     

    destory方法:Web容器在销毁过滤器实例前调用的方法,在这个方法中可以释放掉过滤器占用的资源。(大多数情况用不到)

     

     

    web.xml配置:

     

     

    过滤器可以改变用户请求的Web资源,也就是改变用户请求路径

    过滤器不可以直接返回数据,不能处理用户请求。

     

    过滤器链:服务器会按照web.xml中的过滤器定义的先后顺序组成一条链

    展开全文
  • 一、创建过滤器类 二、配置web.xml 三、登录页测试 四、退出登录 一、创建过滤器类 package com.wxl.filter; import com.wxl.util.Constant; import javax.servlet.*; import javax.servlet....

    目录

    一、创建过滤器类

    二、配置web.xml

    三、登录页测试

    四、退出登录


    一、创建过滤器类

    package com.wxl.filter;
    
    import com.wxl.util.Constant;
    
    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class LoginFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            //ServletRequest  HttpServletRequest
            HttpServletRequest request=(HttpServletRequest) servletRequest;
            HttpServletResponse response=(HttpServletResponse) servletResponse;
    
            if(request.getSession().getAttribute(Constant.USER_SESSION)==null){
                response.sendRedirect("/error/login-error.jsp");
            }
    
            filterChain.doFilter(request,response);
        }
    
        @Override
        public void destroy() {
    
        }
    }
    

    常量类:

    package com.wxl.util;
    
    public class Constant {
        public final static String USER_SESSION="user_session";
    }
    

    二、配置web.xml

        <filter>
            <filter-name>LoginFilter</filter-name>
            <filter-class>com.wxl.filter.LoginFilter</filter-class>
        </filter>
    
        <filter-mapping>
            <filter-name>LoginFilter</filter-name>
            <url-pattern>/user/*</url-pattern>
        </filter-mapping>

    三、登录页测试

    package com.wxl.servlet;
    
    import com.wxl.util.Constant;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class LoginServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //获取前端请求的参数
            String username=req.getParameter("username");
    
            if(username.equals("admin")){//登录成功
                req.getSession().setAttribute(Constant.USER_SESSION,req.getSession().getId());
                resp.sendRedirect("/success.jsp");
            }else{//登录失败
                resp.sendRedirect("/error/login-error.jsp");
            }
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
        }
    }
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>登录</title>
    </head>
    <body>
    
    
    <form action="/login" method="get">
        <input type="text" name="username">
        <input type="submit">
    </form>
    </body>
    </html>
    

    登陆成功:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>登录成功</title>
    </head>
    <body>
        hello!
        <a href="/logout">注销</a>
    </body>
    </html>
    

    四、退出登录

    package com.wxl.servlet;
    
    import com.wxl.util.Constant;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class LogoutServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            Object user_session=req.getSession().getAttribute(Constant.USER_SESSION);
            if(user_session!=null){
                req.getSession().removeAttribute(Constant.USER_SESSION);
            }
            resp.sendRedirect("/login.jsp");
        }
    }
    

    展开全文
  • 一、实现javax.servlet.Filter类 首先新建一个类实现Filter接口 package Filter; import javax.servlet.*;... import java.io....app> 完成上面的步骤,即可实现过滤器的功能,所以添加的规则的请求都会经过过滤器

    一、实现javax.servlet.Filter

    • 首先新建一个类实现Filter接口
    package Filter;
    
    import javax.servlet.*;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class loginFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    //        Filter.super.init(filterConfig);
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("进入拦截过滤器,不予继续访问");
            HttpServletRequest httpRequest = (HttpServletRequest)servletRequest;
            HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
            System.out.println(httpRequest.getSession().getAttribute("username"));
            System.out.println(httpRequest.getSession().getAttribute("School"));
            filterChain.doFilter(servletRequest,servletResponse);
            Cookie[] cookies = httpRequest.getCookies();
    //        System.out.println("输出Cookies");
            for(int i=0;i<cookies.length;++i){
                System.out.println(cookies[i].getName()+" "+cookies[i].getValue());
                System.out.println(cookies[i].getComment());
                System.out.println(cookies[i].getMaxAge());
            }
    
        }
    
        @Override
        public void destroy() {
            Filter.super.destroy();
        }
    }
    
    

    二、在web.xml中配置过滤器

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <filter>
            <filter-name>loginFilter</filter-name>
            <filter-class>Filter.loginFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>loginFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
    </web-app>
    
    • 完成上面的步骤,即可实现过滤器的功能,所以添加的规则的请求都会经过过滤器
    展开全文
  • 使用过滤器之前 使用之后 代码 filter package com.xy.filter; import javax.servlet.*; import java.io.IOException; /** * @author xy * @create 2021-10-09 20:00 */ public class Filter implements ...
  • 过滤器 web项目三大组件之一,工作在servlet之前。 应用场景:统一设置字符编码集、敏感词汇的过滤、登录校验、权限验证等。 生命周期:web服务器启动时,过滤器完成初始化工作,web服务器关闭时,过滤器销毁。 过滤...
  • Javaweb过滤器.zip

    2021-12-31 15:05:40
    Javaweb过滤器.zip
  • JavaWeb过滤器与监听器

    2021-09-11 16:26:41
    Filter 过滤器 Filter过滤器介于与之相关的Servlet与客户端之间, 工作原理:某资源的所有请求都会经过过滤器过滤器在Servlet被调用之前会检查请求对象(Request对象),并决定是将请求转发给过滤器链中的下一个...
  • JavaWeb 过滤器(Filter) 什么是过滤器Filter Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在...
  • 注意:这篇文章很长,学习完后将会解决你对于过滤器(Filter)的所有疑惑,下面将通过理论和代码的结合来进行讲解演示..... 目录 基本介绍 过滤器原理 过滤器(Filter)接口 使用过滤器(Filter) 创建过滤器(Fliter...
  • 概念作为JavaWeb中三大组件(Servlet、Filter、Listener)之一,Filter过滤器有着JavaE的规范,能够在浏览器及请求资源间起到过滤作用,过滤器,顾名思义,作用就是:拦截不合理的请求,过滤不应该的响应。在web当中的...
  • javaWeb过滤器–filter-过滤器的执行流程 filter-过滤器的执行流程 一个同学进校园,先会遇到保安,如果该同学出校园,也会碰到保安 过滤器的执行流程 tomcat引擎将http请求转成request对象,http响应转response...
  • JavaWeb过滤器解决中文乱码问题

    千次阅读 2021-11-30 11:01:19
    通过过滤器在执行Servlet之前将请求重新编码,在返回客户端前重新编码,所以要分为两大类处理,一类是处理请求乱码,一类是处理响应乱码。 get请求的请求参数是在url中的,而post请求的参数在请求体里面,因此要分...
  • JavaWeb过滤器(Filter)

    千次阅读 2019-05-27 21:32:12
    开发工具与关键技术:javaWeb过滤器(Filter) 撰写时间:2019-05-26 总结上述所有表达 第一点:过滤器是什么 第二点:客户端到服务端的流程 第三点:过滤器如何编写 第四点:Filter接口的生命周期及方法执行时期...
  • 过滤器的工作原理 过滤器的生命周期 过滤器链 Web项目中多个过滤器实现,多个过滤器对应同一个路近执行顺序如何? 过滤器链: 过滤器链执行过程: 过滤器分类 @WebFilter,在servlet3中,可以...
  • 做项目的时候使用到了基于URL的权限过滤和乱码的解决方式,这里采用过滤器来实现,具体代码如下一、权限过滤器package com.zks.FilterTest; import javax.servlet.*; import javax.servlet.http.HttpServletRequest...
  • 解决方式:通过session过滤器实现对请求的过滤,如果未登录跳转至登录页面,如果已登录直接放行。在过滤器中不对登录页面进行过滤,不对css、js、img资源进行过滤。如果不是前面说的两种资源,则判断记录用户信息的...
  • JavaWeb过滤器原理】

    2017-08-22 21:08:50
    Servlet过滤器本身并不生成请求和响应对象,它只提供过滤作用。 Servlet过滤器能够在Servlet被调用之前检查Request对象,修改Request Header和Request内容。 在Servlet被调用之后检查Response对象,修改Response ...
  • Javaweb过滤器的三个小案例:案例1:分IP统计网站的访问次数;案例2 粗粒度权限控制(根据用户名登陆);案例4、解决全站字符乱码(POST和GET中文乱码问题)
  • Javaweb 过滤器 生命周期

    千次阅读 2018-04-19 16:16:53
    Filter的生命周期 1、Filter的创建 ... Enumeration getInitParameterNames():返回过滤器的所有初始化参数的名字的枚举集合。  public ServletContext getServletContext():返回Servlet上下文对象的引用。
  • @WebFilter("/*")public class LoginFiter implementsFilter{//实例化一个静态的集合(这里可以改用map集合,提高性能,每次过滤可以不用for匹配) private static List urls = new ArrayList();//静态代码块中向集合...
  • Filter开发步骤 Filter开发分为二个步骤:编写java类实现Filter接口,并实现其doFilter方法。在 web.xml 文件中使用&... 过滤器范例: 1 package me.gacl.web.filter; 2 3 import java....
  • Javaweb过滤器

    2017-10-29 00:22:25
    过滤器顺序跟配置顺序有关 过滤器解决编码问题

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,091
精华内容 7,636
关键字:

javaweb过滤器

java 订阅