Servlet
注解方式创建
@WebServlet(urlPatterns = "/hello", name = "HelloServlet")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("这是springboot的HelloServlet");
out.flush();
out.close();
}
}
@ServletComponentScan("com.powernode.web")//加上SerlvetComponentScan注解
@SpringBootApplication
public class Lesson08ServletFilterApplication {
public static void main(String[] args) {
SpringApplication.run(Lesson08ServletFilterApplication.class, args);
}
}
编码方式实现
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("这是springboot的loginServlet");
out.flush();
out.close();
}
}
@Configuration
public class WebAppConfig {
@Bean
public ServletRegistrationBean servletRegistrationBean(){
//创建ServletRegistrationBean
ServletRegistrationBean registrationBean = new ServletRegistrationBean();
registrationBean.setServlet(new LoginServlet());
registrationBean.addUrlMappings("/login");
registrationBean.setLoadOnStartup(1);
return registrationBean;
}
}
Filter
过滤器的创建
@WebFilter(urlPatterns = "/*")
public class LoginFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
String uri = ((HttpServletRequest) servletRequest).getRequestURI().toString();
System.out.println("uri = " + uri);
filterChain.doFilter(servletRequest, servletResponse);
}
}
@Configuration
public class WebAppConfig {
@Bean
public FilterRegistrationBean filterRegistrationBean(){
//创建FilterRegistrationBean
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new LoginFilter());
registrationBean.addUrlPatterns("/*");
return registrationBean;
}
}
排序
多个 Filter 对象如果要排序,有两种途径:1.过滤器类名称,按字典顺序排列, AuthFilter-> LogFilterFilterRegistrationBean 登记 Filter,设置order 顺序,数值越小,先执行。
step1:创建两个Filter,使用之前的AuthFilter,LogFilter去掉两个 Filter 上面的注解
@Bean
public FilterRegistrationBean addLogFilter({
FilterRegistrationBean log = new FilterRegistrationBean()log;
setFilter(new LogFilter());
log.addUrTPatterns("/*");
Log.setorder(2); //设置顺序
return log;
}
@Bean
public FilterRegistrationBean addAuthFiter(){
FilterReqistrationBean auth = new FilterReqistrationBean();
auth.setFilter(new YuthFilter();
auth.addUriPatterns("/*");
auth.setorder(1); //越小越先执行
return auth;
}
登记框架内置的过滤器
//登记框架内置的Filter
@Bean
public FilterReqistrationBean addCommoneLogFilter(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
CommonsRequestLoggingFilter commonsRequestLoggingFilter = new CommonsRequestLoggingFilter();
//记录请求的uri地址
commonsRequestLoggingFilter.setIncludeQueryString(true);
registrationBean.setFilter(commonsRequestLoggingFiiter);
reqistrationBean.addUrTPatterns(("/*"));
return registrationBean:
}
listener
@WebListener用于注释监听器,监听器类必须实现下面的接口:
jakarta.servlet.http.HttpSessionAttributeListener
jakarta.servlet.http.HttpSessionListener
jakarta.servlet.ServletContextAttributeListener
jakarta.servlet.ServletContextListener
jakarta.servlet.ServletRequestAttributeListener
jakarta.servlet.ServletRequestListener
jakarta.servlet.http.HttpSessionIdListener
另一种方式用ServletListenerRegistrationBean 登记 Listener 对象
@WebListener("Listener 的描述说明")
public class MySessionListenerimplements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent se){
HttpSessionListener.super.sessionCreated(se);
}
}