浅谈springMVC与servlet

通过注解的方式快速搭建web应用(不需要web.xml)

ServletContainerInitializer初始化web容器

1.在web容器启动时为提供给第三方组件机会做一些初始化的工作,例如注册servlet或者filters等,servlet规范(JSR356)中通过ServletContainerInitializer实现此功能。
2. 每个框架要使用ServletContainerInitializer就必须在对应的jar包的META-INF/services 目录创建一个名为javax.servlet.ServletContainerInitializer的文件,文件内容指定具体的ServletContainerInitializer实现类,那么,当web容器启动时就会运行这个初始化器做一些组件内的初始化工作。
3. 创建javax.servlet.ServletContainerInitializer文件
在这里插入图片描述
4.新建实例容器初始化类并实现ServletContainerInitializer接口
在这里插入图片描述
5.编辑javax.servlet.ServletContainerInitializer文件
实例容器初始化类的相对路径
com.healer.servlet.HealerServletContainerInitializer
6.与ServletContainerInitializer一起使用的注解@HandlesTypes
@HandlesTypes(value={HealerService.class}):当容器启动时会将HandlesTypes指定类型下面得子类子接口等会以参数的形式传入onStartup()方法,tomcat启动时加载应用的时候,会运行onStartup()方法
package com.healer.servlet;

import com.healer.filter.HealerFilter;
import com.healer.listener.HealerListener;
import com.healer.service.HealerService;

import javax.servlet.;
import javax.servlet.annotation.HandlesTypes;
import java.util.EnumSet;
import java.util.Set;
@HandlesTypes(value ={HealerService.class})
public class HealerServletContainerInitializer implements ServletContainerInitializer {
/**
* @param set HealerService 下的所有子类型
* @param servletContext 用来加入第三方的组件
* @throws ServletException
/
@Override
public void onStartup(Set<Class<?>> set, ServletContext servletContext) throws ServletException {
System.out.println(“HealerService接口下的所有子类型:你想要加入的类型”);
// HealerService接口下的所有子类型:你想要加入的类型
// class com.healer.service.Impl.HealerServiceImpl
// class com.healer.service.Impl.AbstractHealerService
// interface com.healer.service.HealerServiceOther
for (Class<?> clazz :set){
System.out.println(clazz);//当传入是利用Java反射机制来创建对象等操作
}
/
*
* 注册组件
/
//注册Servlet组件
ServletRegistration.Dynamic servlet=servletContext.addServlet(“HealerServlet”,new HealerServlet());
//添加映射
servlet.addMapping("/healerMappingTest");
//注册监听器组件
servletContext.addListener(HealerListener.class);
//注册过滤器组件
FilterRegistration.Dynamic filter=servletContext.addFilter(“HealerFilter”,new HealerFilter());
//添加Filter的映射信息,可以来专门拦截那个servlet
// filter.addMappingForUrlPatterns(拦截类型为请求,true,"/
")拦截请求路径
filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST),true,"/
");
}
}
7.注册Servlet,Filter,Lisrener组件
在这里插入图片描述
花有重开日,人无再少年。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值