大件拦截和收到后再退回的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大件拦截和收到后再退回的区别相关的知识,希望对你有一定的参考价值。

大件物品拦截和收到后再退回的区别在于货物运输的不同。大件物品拦截是指在货物运输途中被拦截,未能到达目的地。而大件物品收到后再退回是指货物已经到达了目的地,但是由于各种原因需要重新对货物进行退回处理。在实际操作中,大件物品拦截需要及时通知货主和收件人,尽快协调解决货物运输问题;而大件物品收到后再退回则需要对货物进行妥善保管,并与货主协商退货细节和操作流程。因此,大件物品拦截和收到后再退回虽然有些许相似之处,但实质上是两个不同的概念。 参考技术A 大件拦截是指当物流公司发现货物超出了允许发货的尺寸和重量规定时,会拦截货物,并发出通知书通知发件人收回货物,以便让发件人重新发货。收到后再退回的区别是指当收货人收到货物后,发现货物超出了允许发货的尺寸和重量规定时,会发出通知书要求发件人退回货物。

两者的区别在于,大件拦截是在物流公司发现货物超出了允许发货的尺寸和重量规定时,就会拦截货物,不会把货物发送给收货人,从而节省了物流费用;而收到后再退回的方式是把货物发送给收货人,然后收货人发现货物超出了规定的尺寸和重量后,才会要求发件人退回货物,这样会增加物流费用。

Java 过滤器和拦截器的区别

昨天晚上做梦,梦见面试官问我过滤器和拦截器的区别。。。

过滤器和拦截器的区别:
1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。
请求结束返回也是,是在servlet处理完后,返回给前端之前。
2、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,
spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑。
而过滤器是JavaEE标准,只需依赖servlet api ,不需要依赖spring。
3、过滤器的实现基于回调函数。而拦截器(代理模式)的实现基于反射,代理分静态代理和动态代理,
动态代理是拦截器的简单实现。

何时使用拦截器?何时使用过滤器?
如果是非spring项目,那么拦截器不能用,只能使用过滤器。
如果是处理controller前后,既可以使用拦截器也可以使用过滤器。
如果是处理dispaterServlet前后,只能使用过滤器。

过滤器注解实现:

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * @author maxixnhai
 * @PackageName www.maxinhai.com.diary.common.filter
 * @ClassName AuthFilter
 * @Description
 * @date 2020/4/5 17:41
 */
@WebFilter(urlPatterns = "/*", filterName = "authFilter")
public class AuthFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        long start = System.currentTimeMillis();
        Object name = request.getParameter("name");
        System.out.println("name => " + name);
        for(int i=0; i<10000; i++) {
            //System.out.println("过滤器打印: " + i);
        }
        long end = System.currentTimeMillis();
        System.out.println("authFilter 耗时: " + (end - start));
    }

    @Override
    public void destroy() {

    }

}

注解实现需要在启动器(本文为SpringBoot) 添加 @ServletComponentScan("www.maxinhai.com.diary.common") 扫描过滤器。

非注解实现的话,需要在web.xml添加如下配置:

<!-- 配置登陆过滤器 -->
    <filter>
        <filter-name>authFilter</filter-name>
        <filter-class>www.maxinhai.com.filter.AuthFilter</filter-class>
        <init-param>
            <param-name>passUrl</param-name>
            <param-value>index;FunctionServlet</param-value>
           </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>loginFilter</filter-name>
           <url-pattern>/*</url-pattern>
    </filter-mapping>

 

以上是关于大件拦截和收到后再退回的区别的主要内容,如果未能解决你的问题,请参考以下文章

退回和驳回的区别。 退回和移送的区别。

SpringMVC的拦截器和过滤器的区别与联系

拦截器(Interceptor)和过滤器(Filter)的区别和执行顺序)

拦截器和装饰器的区别

java web 过滤器跟拦截器的区别和使用

Spring拦截器 /* 和 /** 的区别