一、自定义Servlet
Config.java
package com.yhw.config.servlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 描述该类- JPA
*
* @author zhoufei
* @class: Config
* @date 2021/1/20 10:26
* @Verson 1.0 -2021/1/20 10:26
* @see
*/
@Configuration
public class Config {
// 注册Servlet
@Bean
public ServletRegistrationBean myServlet() {
ServletRegistrationBean registrationBean = new ServletRegistrationBean(
new MyServlet(), "/todoMyServlet");
registrationBean.setLoadOnStartup(1);
return registrationBean;
}
}
MyServlet.java
package com.yhw.config.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 描述该类- JPA
*
* @author zhoufei
* @class: MyServlet
* @date 2021/1/20 10:28
* @Verson 1.0 -2021/1/20 10:28
* @see
*/
public class MyServlet 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 {
System.out.println("我的servlet 的 doPost 方法执行");
resp.getWriter().append("SpringBoot custom servlet").close();
}
}
运行结果
二、自定义过滤器
FilterConfig.java
package com.yhw.config.servlet;
import java.util.Arrays;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 描述该类- JPA
*
* @author zhoufei
* @class: Config
* @date 2021/1/20 10:26
* @Verson 1.0 -2021/1/20 10:26
* @see
*/
@Configuration
public class FilterConfig {
// 注册拦截器
@Bean
public FilterRegistrationBean myFilter(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new MyFilter());
//设置拦截规则
registrationBean.setUrlPatterns(Arrays.asList("/test","/todoMyServlet"));
return registrationBean;
}
}
MyFilter.java
package com.yhw.config.servlet;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* 描述该类- JPA
*
* @author zhoufei
* @class: MyFilter
* @date 2021/1/20 10:44
* @Verson 1.0 -2021/1/20 10:44
* @see
*/
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest hsr = (HttpServletRequest) request;
String url = hsr.getRequestURL().toString();
// 不拦截
if (url.contains("/todoMyServlet")) {
System.out.println("执行后面的代码,对应的url:" + url);
chain.doFilter(request, response);
}
if (url.contains("/test")) {
System.out.println("拦截不让执行后面的代码,对应的url:" + url);
return;
}
}
}
运行结果(test后缀的路径没有doFilter,被拦截,不对字符串进行打印输出页面)
三、自定义监听器
ListenConfig.java
package com.yhw.config.listener;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 描述该类- JPA
*
* @author zhoufei
* @class: ListenerConfig
* @date 2021/1/20 11:00
* @Verson 1.0 -2021/1/20 11:00
* @see
*/
@Configuration
public class ListenerConfig {
// 注册监听
@Bean
public ServletListenerRegistrationBean myListener() {
ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(
new MyListener());
return registrationBean;
}
}
MyListener.java
package com.yhw.config.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* 监听Servlet上下文
*
* @author zhoufei
* @class: MyListener
* @date 2021/1/20 11:00
* @Verson 1.0 -2021/1/20 11:00
* @see
*/
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Servlet上下文---->当前web项目启动");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Servlet上下文---->当前web项目销毁");
}
}
运行效果:随项目启动打印提示内容,销毁后也会提示内容