SpringBoot的Web开发入门案例5—注册Servlets, Filter, Listener
注册Servlet
- 创建MyServlet类
package com.blu.conf;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet{
@Override
public void init() throws ServletException {
super.init();
System.out.println("Servlet --- init()");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.service(req, resp);
System.out.println("Servlet --- service()");
resp.sendRedirect("/toLogin");
}
}
- 在配置类中添加Bean
/**
* <servlet>
* <servlet-name>
* <servlet-class>
* </servlet>
* <servlet-mapping>
* <servlet-name>
* <url-pattern>
* </servlet-mapping>
*/
@Bean
public ServletRegistrationBean<MyServlet> myServlet(){
ServletRegistrationBean<MyServlet> ms = new ServletRegistrationBean<MyServlet>(new MyServlet(),"/ms");
return ms;
}
- 启动项目,第一次访问路径http://localhost:60001/ms,控制台打印:
Servlet --- init()
Servlet --- service()
注册过滤器Filter
- 创建MyFilter类
package com.blu.conf;
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 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("执行了过滤器");
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
- 在配置类中添加Bean
/**
* <filtername>
* <urlpattern>
*
*/
@Bean
public FilterRegistrationBean<MyFilter> myFilter(){
FilterRegistrationBean<MyFilter> filter = new FilterRegistrationBean<MyFilter>();
//对所有请求都执行过滤
filter.addUrlPatterns("/*");
//指定执行的过滤器
filter.setFilter(new MyFilter());
return filter;
}
- 启动项目,访问任意路径,控制台打印:
执行了过滤器
注册监听器Listener
- 创建MyListener类
package com.blu.conf;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("容器启动了...");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("容器销毁了...");
}
}
- 在配置类中添加Bean
/**
* 注册监听器
*/
@Bean
public ServletListenerRegistrationBean<MyListener> myListener(){
ServletListenerRegistrationBean<MyListener> bean
= new ServletListenerRegistrationBean<MyListener>(new MyListener());
return bean;
}
- 启动项目时,控制台打印:
容器启动了...
- 终止项目时,控制台打印:
容器销毁了...