SpringBoot 工程中三大JAVAEE组件注册及应用
监听器(Listener)
定义监听器
package com.jt.listener;
import org.springframework.stereotype.Component;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* 这里的监听器用于监听服务的启动和销毁
*/
public class DemoListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("服务启动了");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("服务销毁了");
}
}
注册监听器
package com.jt.config;
/**
* 在这里配置javaee规范中的三大组件
*/
@Configuration
public class ComponentConfig {
......
//注册监听器
@Bean
public ServletListenerRegistrationBean servletListenerRegistrationBean(){
ServletListenerRegistrationBean bean=
new ServletListenerRegistrationBean(new DemoListener());
return bean;
}
}
启动服务测试
启动服务,检测服务日志输出,监听器方法是否执行
过滤器(Filter)
定义过滤器
package com.jt.filter;
import javax.servlet.*;
import java.io.IOException;
/**
* javaee规范中的过滤器,对请求和响应数据进行过滤
* 1)统一数据的编码
* 2)统一数据格式校验 (今日头条的灵犬系统)
* 3)统一身份认证
*/
public class DemoFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
System.out.println("==doFilter==");
servletRequest.setCharacterEncoding("UTF-8");
String id= servletRequest.getParameter("id");
System.out.println("id="+id);
filterChain.doFilter(servletRequest,servletResponse);
}
}
注册过滤器
package com.jt.config;
/**
* 在这里配置javaee规范中的三大组件
*/
@Configuration
public class ComponentConfig {
....
//注册过滤器
@Bean
public FilterRegistrationBean filterRegistrationBean(){
FilterRegistrationBean bean=
new FilterRegistrationBean(new DemoFilter());
bean.addUrlPatterns("/hello");//对哪个请求进行处理
return bean;
}
}
访问过滤器
启动服务,对于以/hello开头的url进行访问,检测日志输出
处理器(Servlet)
定义处理器
package com.jt.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* JavaEE规范中的Servlet
*/
public class DemoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("==doGet==");
resp.getWriter().println("hello client");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
//...
}
注册处理器
package com.jt.config;
/**
* 在这里配置javaee规范中的三大组件
*/
@Configuration
public class ComponentConfig {
.....
//注册servlet
@Bean
public ServletRegistrationBean servletRegistrationBean(){
ServletRegistrationBean bean=new ServletRegistrationBean();
bean.setServlet(new DemoServlet());
bean.addUrlMappings("/hello");
return bean;
}
}
访问处理器
启动服务,对于以/hello开头的url进行访问,检测日志输出。
总结(Summary)
本章节重点讲解了在SpringBoot工程中JavaEE三大组件的注册以及应用。
原文链接:
链接: link