SpringBoot简单项目学习笔记07(Servlet、filter、listener三大组件的使用)
项目地址https://github.com/H-Designer/SpringBoot
上一节总结的是SpringBoot的错误页面的定制(https://www.cnblogs.com/zhaochunhui/p/11332089.html)
这一节要总结的是SpringBoot的三大组件(Servlet、Filter、Listener)的使用
1)、Servlet( 它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。) 定义自己的servlet的类的内容 package com.example.servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; 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"); } } 定义一个MyServlet的类,在里面进行servlet的一系列的设定,并且在config中可以将这一部分注册在Bean的容器中: @Bean public ServletRegistrationBean myServlet(){ MyServlet servlet=new MyServlet(); ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(servlet,"/myservlet"); return servletRegistrationBean; } 这里就是相当与得到myservlet的请求之后,然后在servlet的对象中(MyServlet servlet=new MyServlet();),然后在servlet里面找到具体的是get还是post的方法,然后执行里面的函数 2)、Filter(过滤器) 定义自己的filter过滤器 package com.example.filter; import javax.servlet.*; import java.io.IOException; public class MyFilter implements Filter { //filter的初始化 @Override public void init(FilterConfig filterConfig) throws ServletException { } //Filter的过滤 @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("MyFilter proccess..."); chain.doFilter(request,response); } //Filter的销毁 @Override public void destroy() { } } 将filter添加到Bean的容器 @Bean public FilterRegistrationBean myFilter(){ FilterRegistrationBean fileRegistrationBean = new FilterRegistrationBean(); fileRegistrationBean.setFilter(new MyFilter()); fileRegistrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet")); return fileRegistrationBean; } 这就是在页面收到/hello或者是/myServlet的请求之后,进行调用自己的filter的过滤器具体实现的拦截功能还是会根据在filter的拦截器的类中进行设定,这里只是在这里面输出一句话,并没有进行拦截 3)、listener(监听器) 定义自己的监听器 package com.example.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class MyListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("Web项目启动"); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("Web项目关闭"); } } 然后在config中进行添加到Bean容器中的操作 @Bean public ServletListenerRegistrationBean myListener(){ ServletListenerRegistrationBean<MyListener> registrationBean= new ServletListenerRegistrationBean<>(new MyListener()); return registrationBean; } 这里面就是在项目进行创建还有就是在项目被注销的时候输出一句话