import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Field;
@WebServlet(name = “TomcatServletTest”, urlPatterns = “/tomcatServletTest”)
public class TomcatServletTest extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
try {
ServletContext servletContext = request.getServletContext();
ApplicationContextFacade applicationContextFacade = (ApplicationContextFacade) servletContext;
Class<ApplicationContextFacade> applicationContextFacadeClass = ApplicationContextFacade.class;
Field applicationContextField = applicationContextFacadeClass.getDeclaredField("context");
applicationContextField.setAccessible(true);
Object applicationContextObj = applicationContextField.get(applicationContextFacade);
ApplicationContext applicationContext = (ApplicationContext) applicationContextObj;
Class<ApplicationContext> applicationContextClass = ApplicationContext.class;
Field standardContextField = applicationContextClass.getDeclaredField("context");
standardContextField.setAccessible(true);
Object standardContextObj = standardContextField.get(applicationContext);
writer.append("ServletContext instance's class is: ")
.append(servletContext.getClass().getCanonicalName())
.append("\r\n")
.append("\r\n")
.append("ApplicationContext instance's class is: ")
.append(applicationContextObj.getClass().getCanonicalName())
.append("\r\n")
.append("\r\n")
.append("StandardContext instance's class is:")
.append(standardContextObj.getClass().getCanonicalName());
} catch (Exception e) {
e.printStackTrace(writer);
}
}
}

### 0x01 通过servlet动态创建一个filter
Servlet0811.java
import org.apache.catalina.Context;
import org.apache.catalina.core.ApplicationContext;
import org.apache.catalina.core.ApplicationContextFacade;
import org.apache.catalina.core.ApplicationFilterConfig;
import org.apache.catalina.core.StandardContext;
import org.apache.tomcat.util.descriptor.web.Fil