您的位置:首页 > 编程语言 > Java开发

SpringBoot 从零开始学习(二) 之整合servlet/filter/listener

2020-03-08 12:25 477 查看

Servlet:

这里的servlet 继承的是: javax.servlet.http.HttpServlet;

一.通过注解扫描方式注册servlet

package com.cz.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@WebServlet(name = "MyServlet",urlPatterns = "/servlet")
public class MyServlet extends HttpServlet {

private static final Logger log = LoggerFactory.getLogger(MyServlet.class);

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
log.info("进入doGet方法");
super.doGet(req, resp);
}
}

启动类:

package com.cz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan//springBoot 启动时会扫描web*的组件,并将该类进行实例化
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

}

执行截图:

二.通过方法完成Servlet组建的注册

package com.cz.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyServletExtend extends HttpServlet {

private static final Logger log = LoggerFactory.getLogger(MyServletExtend.class);

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
log.info("进入 方法注册的 doGet方法");
super.doGet(req, resp);
}

}

启动类代码:

package com.cz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

import com.cz.filter.MyFIlterExtend;
import com.cz.listener.MyListenerExtend;
import com.cz.servlet.MyServletExtend;

@SpringBootApplication
public class ApplicationExtend {

public static void main(String[] args) {
SpringApplication.run(ApplicationExtend.class, args);
}

@Bean  //这个注解主要用来springboot 启动的时实例化对象
ServletRegistrationBean<MyServletExtend> getServletBean(){
ServletRegistrationBean bean = new ServletRegistrationBean<MyServletExtend>(new MyServletExtend());
bean.addUrlMappings("/servletExtend");
return bean;
}

执行截图:

Filter:

这里的servlet 继承的是: javax.servlet.http.HttpFilter;

一.通过注解扫描方式注册Filter

package com.cz.filter;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@WebFilter(filterName = "MyFIlter",urlPatterns = "/filter")
public class MyFIlter extends HttpFilter {

private static final Logger log = LoggerFactory.getLogger(MyFIlter.class);

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
super.doFilter(request, response, chain);
log.info("MyFIlter   doFilter  ");
}

@Override
protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
super.doFilter(request, response, chain);
log.info("MyFIlter  doFilter");
}
}

启动类:

package com.cz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan//springBoot 启动时会扫描web*的组件,并将该类进行实例化
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

}

执行效果:

二.通过方法完成Filter组建的注册

package com.cz.filter;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyFIlterExtend extends HttpFilter {

private static final Logger log = LoggerFactory.getLogger(MyFIlterExtend.class);

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
super.doFilter(request, response, chain);
log.info("MyFIlterExtend   doFilter  ");
}

@Override
protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
super.doFilter(request, response, chain);
log.info("MyFIlterExtend  doFilter");
}
}

启动类:

package com.cz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

import com.cz.filter.MyFIlterExtend;
import com.cz.listener.MyListenerExtend;
import com.cz.servlet.MyServletExtend;

@SpringBootApplication
public class ApplicationExtend {

public static void main(String[] args) {
SpringApplication.run(ApplicationExtend.class, args);
}

@Bean
FilterRegistrationBean getFilterBean(){
FilterRegistrationBean bean = new FilterRegistrationBean(new MyFIlterExtend());
bean.addUrlPatterns("/filterExtend");
return bean;
}

}

执行效果:

Listener

这里的servlet 实现的是: javax.servlet.ServletContextListener;
Listener和上面两个区别的地方就是不需要name+pattern。

一.通过注解扫描方式注册Listener

package com.cz.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@WebListener()
public class MyListener implements ServletContextListener{

private static final Logger log = LoggerFactory.getLogger(MyListener.class);

@Override
public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
ServletContextListener.super.contextInitialized(sce);
log.info("MyListener contextInitialized");
}

@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
ServletContextListener.super.contextDestroyed(sce);
log.info("MyListener contextDestroyed");
}
}

启动类:

package com.cz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan//springBoot 启动时会扫描web*的组件,并将该类进行实例化
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

}

二.通过方法完成Listener组建的注册

package com.cz.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyListenerExtend implements ServletContextListener{

private static final Logger log = LoggerFactory.getLogger(MyListenerExtend.class);

@Override
public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
ServletContextListener.super.contextInitialized(sce);
log.info("MyListenerExtend contextInitialized");
}

@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
ServletContextListener.super.contextDestroyed(sce);
log.info("MyListenerExtend contextDestroyed");
}

}

启动类:

package com.cz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

import com.cz.filter.MyFIlterExtend;
import com.cz.listener.MyListenerExtend;
import com.cz.servlet.MyServletExtend;

@SpringBootApplication
//@ServletComponentScan
public class ApplicationExtend {

public static void main(String[] args) {
SpringApplication.run(ApplicationExtend.class, args);
}

@Bean
ServletListenerRegistrationBean<MyListenerExtend> getListenerBean(){
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new MyListenerExtend());
return bean;
}
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
不二村长 发布了11 篇原创文章 · 获赞 0 · 访问量 159 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: