栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

个人笔记-SpringMVC注解驱动

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

个人笔记-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依然可以访问

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/309452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号