一.Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet、 Filter、 Listener等等

二.在spring boot中的三种实现方式

方法一:通过注册ServletRegistrationBean、 FilterRegistrationBean 和 ServletListenerRegistrationBean 获得控制

servlet类:

package com.demo.example.util.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest; public class CustomServlet extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("servlet get method");
doPost(request , response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("servlet get method");
response.getWriter().write("Hello world");
} } filter类:

package com.demo.example.util.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; public class CustonFilter implements Filter { @Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("do destroy");
} @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("do filter");
chain.doFilter(request, response); } @Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
System.out.println("do init");
} }

 Listener类:

package com.demo.example.util.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class CustomListener implements ServletContextListener { @Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
// TODO Auto-generated method stub
System.out.println("servletContextEvent"); } @Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
// TODO Auto-generated method stub
System.out.println("servletContextEvent");
} }

 

注册bean(第一种方式)

代码注册:(在SpringBootDemoFilerServletLisApplication类中)

@Bean
public ServletRegistrationBean<CustomServlet> servletRegistrationBean() {
return new ServletRegistrationBean<CustomServlet>(new CustomServlet(), "/customServlet");
} @Bean
public FilterRegistrationBean<CustonFilter> filterRegistrationBean(){
return new FilterRegistrationBean<CustonFilter>(new CustonFilter(),servletRegistrationBean() );
} @Bean
public ServletListenerRegistrationBean<CustomListener> servletListenerRegistrationBean(){
return new ServletListenerRegistrationBean<CustomListener>(new CustomListener());
}

 第二种代码注册:(类似一)

@SpringBootApplication
public class SpringBootDemoFilerServletLisApplication implements ServletContainerInitializer{ @Override
public void onStartup(Set<Class<?>> arg0, ServletContext servletContext) throws ServletException {
// TODO Auto-generated method stub
servletContext.addServlet("CustomServlet", new CustomServlet()).addMapping("/customServlet");
servletContext.addFilter("CustonFilter", new CustonFilter()).addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST), true, "CustomServlet");
servletContext.addListener(new CustomListener());
}

 第三种基于注释:

首先:在 SpringBootDemoFilerServletLisApplication 类中添加

在listener

在servlet

在filter (  "/*" 代表过滤全局  )


最新文章

  1. Java调用solrj5.5.3接口,查询数据
  2. JAVA模拟HTTP post请求上传文件
  3. java_js_检查是否全为数字
  4. python 对象
  5. JPG渐进 & PNG/PNG24 交错测试
  6. [MCSM] Slice Sampler
  7. 超链接的#和javascript:void(0)的区别
  8. Java 集合系列02之 Collection架构
  9. nginx的location root 指令
  10. JavaScript中类的实现机制
  11. [翻译]AlphaGO留给我们的东西
  12. 兼容firefox的iframe高度自适应代码
  13. 免费Gif图片录制工具
  14. spring4之依赖注入的三种方式
  15. Java 多线程(二) 线程的实现
  16. Justoj 2389: 拼接三角形 二分查找
  17. 多线程——C++
  18. Day 5-4封装.__隐藏属性或者方法
  19. easyui datagrid 首次不加载做法
  20. Python 基础关于编码

热门文章

  1. 用Javascript做一个“获取验证码”的按钮
  2. 测试用html
  3. Python基础数据类型list,tuple
  4. iOS开发——GPUImage源码解析
  5. Hdu 1429 胜利大逃亡(续) (bfs+状态压缩)
  6. LaTeX 基本的公式符号命令
  7. 关于android的设备管理器-DevicePolicyManager(一)
  8. POJ 1942
  9. Intellij IDEA插件 - Scroll From Source
  10. Linux网络编程(3)——多进程、多线程