目录结构是这样的,三个组件在各自的文件夹 。其中MyServletConfig文件用于将三个组件配置到Bean容器中。
一 servlet组件(图中helloServlet)
在HelloServlet中完成对HttpServlet相应方法的实现
package com.mengxuegu.springboot.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 自定义Servlet组件
* @author Dawson
* @version 1.0
* @date 2019/7/14 23:09
*/
public class HelloServlet extends HttpServlet {
//处理get请求
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("helloServlet success");
}
}
二 Filter组件
在MyFilter中完成对Filter类相应方法的实现
package com.mengxuegu.springboot.filter;
import javax.servlet.*;
import java.io.IOException;
/**
* 自定义的过滤器组件
* @author Dawson
* @version 1.0
* @date 2019/7/16 20:01
*/
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("filter初始化操作");
}
@Override
public void destroy() {
System.out.println("filter销毁");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("filter过滤 完成");
//上面过滤完后在这里放行
filterChain.doFilter(servletRequest,servletResponse);
}
}
三 Listener组件
package com.mengxuegu.springboot.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* 自定义监听器组件
* 应用于监听程序的启动和销毁
* @author Dawson
* @version 1.0
* @date 2019/7/16 20:19
*/
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("springBoot.servlet应用启动");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("springBoot.servlet应用销毁");
}
}
四 把写好的组件都配置进配置类
package com.mengxuegu.springboot.servlet;
import com.mengxuegu.springboot.filter.MyFilter;
import com.mengxuegu.springboot.listener.MyListener;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Arrays;
/**
* 注册servlet相关组件
* @author Dawson
* @version 1.0
* @date 2019/7/14 23:15
*/
@Configuration
public class MyServletConfig {
//注册servlet组件
@Bean
public ServletRegistrationBean helloServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new HelloServlet(), "/hello");
//设置servlet组件对应的参数
bean.setLoadOnStartup(1);
return bean;
}
//注册Filter组件
@Bean
public FilterRegistrationBean MyFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
//设置自定义feilter
bean.setFilter(new MyFilter());
//过滤那些请求
bean.setUrlPatterns(Arrays.asList("/hello"));
return bean;
}
//注册Listener组件
@Bean
public ServletListenerRegistrationBean MyListener(){
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new MyListener());
return bean;
}
}
这里可以看到要把自己写好的组件放进对应的组件注册中心用来实例化。