个人笔记-SpringMVC注解驱动

注解驱动

  • 使用注解形式转化SpringMVC核心配置文件为配置类
@Configuration
@ComponentScan(value="com.thenema",
		excludeFilters=@ComponentScan.Filter(
			type=FilerType.ANNOTATION,
			classes=Controller.class
			)
		)
public class SpringMvcConfiguration{
}
  • 基于servlet3.0规范,自定义Servlet容器初始化配置类,加载SpringMVC核心配置类
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMVCConfiguration.class);
        return ctx;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

  • 删除web.xml
  • 删除spring-mvc.xml

  • bean加载过滤(注解版本)
@Configuration
@ComponentScan(value = "com.thenema.my_springmvc",includeFilters =
                @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class))
public class SpringMVCConfiguration implements WebMvcConfigurer {
    }
}

  • 静态资源的加载过滤(注解版)
    • 配置类实现WebMvcConfiguration接口,覆盖addResourcesHandlers方法,在其中对具体的资源进行设定
    • 或覆盖configureDefaultServletHandling方法,使用Servlet默认过滤规则

具体设定

public class SpringMVCConfiguration implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/img/**").addResourceLocations("/img/");
    }
}

使用默认

public class SpringMVCConfiguration implements WebMvcConfigurer {
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

  • 中文乱码处理(注解版本)
    • 在Servlet3.0规范启动服务器时做的工作通过实现ServletContainerInitializer接口,在onStartup方法中完成,包括监听器注册、过滤器注册等。
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
    	//调用父类的onStartup
        super.onStartup(servletContext);
        //创建字符集过滤器对象
        CharacterEncodingFilter cef = new CharacterEncodingFilter();
        //设置使用的字符集
        cef.setEncoding("UTF-8");
        //添加到容器(他不是ioc容器,而是ServletContainer)
        FilterRegistration.Dynamic registration = 
        servletContext.addFilter("characterEncodingFilter",cef);
        //添加映射
        registration.addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST,DispatcherType.FORWARD,DispatcherType.INCLUDE)
                                                ,false
                                                ,"/*");
    }
}

  • 基于servlet3.0规范,配置Servlet容器初始化配置类,初始化时加载SpringMVC配置类
  • 转化SpringMVC核心配置文件
    • 转化为注解(例如:spring处理器加载过滤)
    • 转化为bean进行加载
    • 按照标准接口进行开发并加载(例如:中文乱码处理、静态资源加载过滤)

新建两个文件在这里插入图片描述
文件SpringMVCConfiguration替代原来的spring-mvc.xml
在这里插入图片描述
原来的文件在这里插入图片描述
内容
在这里插入图片描述
ServletContainersInitConfig文件
内容替代web文件里的蓝色选中内容
在这里插入图片描述
在这里插入图片描述
这个替代下边图片所示
在这里插入图片描述
在这里插入图片描述
这个替代下图选择xml内容
在这里插入图片描述

把两个xml文件后缀名改为.bak加粗样式
在这里插入图片描述

这时候我们再访问succes.jsp和springmvc.jsp依然可以访问

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值