Servlet3.0使用

HttpServlet抽象类专注接收Http请求
HttpServletRequest 接口继承ServletRequest接口 处理Http请求

@WebServlet("/webServlet")  //请求路径
public class WebServlet3 extends HttpServlet {
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		resp.getWriter().write("@WebServlet HttpServlet");
	}
}

ServletContainerInitializer Web容器启动时给第三方组件提供初始化工作,如添加Filter过滤器等,前提必须在对应的jar包的META-INF/services 目录创建一个名为javax.servlet.ServletContainerInitializer的file文件,该文件中指定实现ServletContainerInitializer 接口的子类路径 类上声明@HandlesTypes指定类,重写onStartup方法获取由@HandlesTypes感兴趣的类作为参数传进来

@HandlesTypes(value={AService.class})
public class SpringServletContainerInitlializer implements ServletContainerInitializer {

	@Override
	public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("onStartup..");
		for (Class<?> clazz : c) {
			System.out.println(clazz); //实现或继承AService感兴趣类
		}
	}
	//添加自定义servlet组件
		Dynamic servlet = ctx.addServlet("myServlet", MyServlet.class);
		//添加listener监听器
		ctx.addListener(MyListenner.class);
		//添加过滤器
		javax.servlet.FilterRegistration.Dynamic filter = ctx.addFilter("myFilter", MyFilter.class);
		//设置过滤规则
		filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");

}

Filter接口 过滤器
public class MyFilter implements Filter {

@Override
public void init(FilterConfig filterConfig) throws ServletException {
	// TODO Auto-generated method stub

}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
		throws IOException, ServletException {
	// TODO Auto-generated method stub
	System.out.println("拦截过滤请求");
	//过滤请求放行
	chain.doFilter(request, response);
}

@Override
public void destroy() {
	// TODO Auto-generated method stub
	
}

ServletContextListener 接口 容器监听器
servlet启动时进行监听或者添加自定义组件

public class MyListenner implements ServletContextListener {

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		ServletContext context = sce.getServletContext(); //servlet上下文 全局共享
		System.out.println("ServletContextListecontextInitializedner  contextInitialized");
	}

	@Override
	p8ublic void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		System.out.println("ServletContextListecontextInitializedner  contextDestroyed");
	}
}

发布了19 篇原创文章 · 获赞 8 · 访问量 789

猜你喜欢

转载自blog.csdn.net/ysl_20190905/article/details/104245576