注册三大组件
Spring boot
以jar包的方式
使用嵌入式的Tomcat启动Web应用
没有Web应用目录结构,没有web.xml文件
Web应用
是一个Web应用的目录结构
存在目录文件src/main/webapp/WEB-INF/web.xml
可以把三大组件,注册在web.xml中
Spring boot
提供了三大组件,注册方式
注册Servlet,使用ServletRegistrationBean
注册Filter,使用FilterRegistrationBean
注册ServletListener,使用ServletListenerRegistrationBean
Servlet
自定义Servlet,继承HttpServlet
重写方法,处理请求
public class MyServlet extends HttpServlet {
//处理get请求
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("Hello MyServlet");
}
}
Filter
自定义Filter,实现Filter接口
实现Filter的三个方法
Init,初始化
doFilter,过滤
destroy,销毁
chain.doFilter,放行请求
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("MyFilter process...");
chain.doFilter(request,response);
}
@Override
public void destroy() {
}
}
Listener
自定义Listener,实现ServletContextListener
Listener有很多,这里监听启动和销毁的Listener
contextInitialized,初始化方法,Web项目启动
contextDestroyed,销毁方法,Web项目销毁
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("contextInitialized...web应用启动");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("contextDestroyed...当前web项目销毁");
}
}
注册Servlet
返回一个ServletRegistrationBean
是一个class,直接new一个
使用有参构造器,传递自定义的Servlet,映射路径
注册Filter
返回一个FilterRegistrationBean
是一个class,直接new一个
设置自定义的Filter,设置拦截请求的url
是一个集合,使用Arrays转换
注册Listener
返回一个ServletListenerRegistrationBean
是一个类,直接new一个
传递自定义的Listener
可以注册的Listener类型
注册方式
@Configuration
public class MyServerConfig {
//注册三大组件
@Bean
public ServletRegistrationBean myServlet(){
ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(),"/myServlet");
registrationBean.setLoadOnStartup(1);
return registrationBean;
}
@Bean
public FilterRegistrationBean myFilter(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new MyFilter());
registrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
return registrationBean;
}
@Bean
public ServletListenerRegistrationBean myListener(){
ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(new MyListener());
return registrationBean;
}
}
属性设置
可以直接在registrationBean中设置
自定义组件的属性