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