Spring的工作原理,控制反转是怎么实现的?自己写过滤器过滤编码怎么实现?

Spring的工作原理,控制反转是怎么实现的?自己写过滤器过滤编码怎么实现;Spring的工作原理,控制反转是怎么实现的?自己写过滤器过滤编码怎么实现Spring的工作原理,控制反转是怎么实现的?自己写过滤器过滤编码怎么实现Spring的工作原理,控制反转是怎么实现的?自己写过滤器过滤编码怎么实现

Spring是一种多层的J2EE应用程序框架,其核心就是提供一种新的机制管理业务对象及其依赖关系。它是一种容器框架,用于创建bean,维护bean之间的关系,它可以管理web层,持久层,业务层等

Spring的工作原理: 就是让一个对象的创建不用new就可以自动的生产,在运行时与xml Spring的配置文件来动态的创建对象和调用对象,而不需要通过代码来关联

控制反转: 每次使用spring框架都需要配置xml文件,这个xml配置了bean的id和class。
Spring中默认的bean为单实例模式,通过bean的class引用反射机制可以创建这个实例。
因此,spring框架通过反射代替我们创建好了实例并且替我们维护他们。
A需要引用B类,spring框架就会通过xml把B实例的引用传给了A的成员变量

过滤器:

package com.filter;

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

/**
 * Servlet Filter implementation class UtfFilter
 */
public class ConfigFilter implements Filter {
    // 定义一个获取初始化值的标杆
    private static String encoding = null;

    /**
     * Default constructor.
     */
    public ConfigFilter() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @see Filter#destroy()
     */
    public void destroy() {
    }

    /**
     * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
     */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        if (encoding != null) {
            // 设置请求的编码格式
            request.setCharacterEncoding(encoding);
            // 响应的编码格式
            response.setCharacterEncoding(encoding);
            // 放行
            chain.doFilter(request, response);
        }
    }

    /**
     * @see Filter#init(FilterConfig)
     */
    public void init(FilterConfig fConfig) throws ServletException {
        // 获取初始化变量赋值
        encoding = fConfig.getInitParameter("character");
    }

}

web.xml:

<filter>
     <filter-name>ConfigFilter</filter-name>
     <filter-class>com.filter.ConfigFilter</filter-class>
     <init-param>
       <param-name>character</param-name>
       <param-value>UTF-8</param-value>
     </init-param>
</filter>
<filter-mapping>
  <filter-name>ConfigFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

 

题主不要过于纠结真正的逻辑结构。就看网上的文字教程和视频自己理解就行。你这问题我看了后感觉你是不是被面试问到了,哈哈,我之前就被问到过你这类似的。

望采纳,谢谢

控制反转

IoC的原理:控制反转是Spring框架的核心。其原理是基于面向对象(OO)设计原则的The Hollywood Principle:Don't call us, we'll call you(别找我,我会来找你的)。也就是说,所有的组件都是被动的,所有的组件初始化和调用都由容器负责。组件处在一个容器当中,由容器负责管理。简单的来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控,即在一个类中调用另外一个类。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,即所谓反转。

Spring 过滤器

    <filter>
        <filter-name>EncodingFilter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>EncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 

先能够仿照着用。 然后知道过滤器是什么。 再尝试写一些继承型的拦截器。 然后再自己写注解、拦截器。 一个顺其自然的过程。