【Servlet3.0新特性】第02节_Servlet的动态注册以及使用注解编写监听器和过滤器
来源:互联网 发布:我知你好未再 妈妈网 编辑:程序博客网 时间:2024/05/29 12:14
这是一个Web Project
首先是web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><!-- Servlet3.0需要Tomcat7和JavaEE6,配置方法详见 --><!-- http://blog.csdn.net/jadyer/article/details/9164655 --><!-- http://blog.csdn.net/jadyer/article/details/9164737 --></web-app>
下面是一个普通的Java类(它即将在Servlet监听器中被动态注册为Servlet)
package com.jadyer.servlet;import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//这里并没有使用@WebServlet注解,但为了让这个类成为一个Servlet//我们可以采用Servlet3.0提供的动态注册机制把它动态注册为一个Servletpublic class HelloServlet extends HttpServlet {private static final long serialVersionUID = 759371432019399353L;@Overridepublic void init(ServletConfig config) throws ServletException {System.out.println(config.getInitParameter("logPath"));System.out.println(config.getInitParameter("savePath"));}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("http://blog.csdn.net/jadyer");}}
下面是采用注解编写的Servlet监听器
package com.jadyer.listener;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.ServletRegistration;import javax.servlet.annotation.WebListener;import com.jadyer.servlet.HelloServlet;/** * Servlet3.0新特性之Servlet监听器和Servlet动态注册 * @create Jun 24, 2013 10:39:47 AM * @author 玄玉<http://blog.csdn.net/jadyer> */@WebListenerpublic class HelloListener implements ServletContextListener {@Overridepublic void contextDestroyed(ServletContextEvent arg0) {System.out.println("服务器关闭时会调用该方法");}@Overridepublic void contextInitialized(ServletContextEvent contextEvent) {System.out.println("服务器启动时会调用该方法");ServletContext context = contextEvent.getServletContext();//注册一个没有使用@WebServlet注解的类为Servlet(第一个参数是Servlet的名字)ServletRegistration register = context.addServlet("helloServlet", HelloServlet.class);//为动态注册的Servlet设定访问URL(可设定多个)register.addMapping("/hello", "/servlet/hello");//为动态注册的Servlet设定初始参数(可选的,相当于以前的<init-param>)register.setInitParameter("logPath", "/app/log");register.setInitParameter("savePath", "/app/upload");}}
最后是采用注解编写的Servlet过滤器
package com.jadyer.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;import javax.servlet.annotation.WebInitParam;@WebFilter(urlPatterns="/*", initParams=@WebInitParam(name="encoding", value="UTF-8"))public class HelloFilter implements Filter {@Overridepublic void destroy() {System.out.println("destroy invoked");}@Overridepublic void init(FilterConfig config) throws ServletException {System.out.println("init invoked");System.out.println(config.getInitParameter("encoding"));}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("doFilter invoked");chain.doFilter(request, response);}}
- 【Servlet3.0新特性】第02节_Servlet的动态注册以及使用注解编写监听器和过滤器
- 【Servlet3.0新特性】第01节_Servlet注解及异步支持
- JAVAWEB开发之Servlet3.0新特性的使用以及注解的详细使用和自定义注解的方法、动态代理的使用、利用动态代理实现细粒度的权限控制以及类加载和泛型反射
- Servlet3.0新特性之动态注册
- Servlet3.0介绍~使用注解标注监听器(Listener)和过滤器(Filter)
- Servlet3.0介绍~使用注解标注监听器(Listener)和过滤器(Filter)
- Servlet3.0新特性@WebFilter与过滤器的初始化
- Servlet3.0注解新特性以及此模式下的文件上传
- [Servlet3.0新特性]注解替代配置文件
- servlet3.0新特性 Annotation注解配置
- JavaWeb-Servlet3.0新特性-注解
- 支持注解的Servlet3.0监听器
- 支持注解的Servlet3.0监听器
- Servlet3.0-使用注解定义过滤器(Filter)
- Servlet3.0的新特性
- servlet3.0的新特性
- servlet3.0新的特性
- Servlet3.0特性和过滤器顺序
- bash 变量作用域
- Android平台下OpenGL初步
- 从零开始学C++之构造函数与析构函数(一):构造函数、析构函数、赋值与初始化、explicit关键字
- 让面试官被你吸引的五个绝招
- 在线编程:最长有效括号的长度
- 【Servlet3.0新特性】第02节_Servlet的动态注册以及使用注解编写监听器和过滤器
- Linux信号
- HDOJ 2089 不要62
- 高效使用top
- 单源最短路径
- HDOJ 2095 find your present (2)
- LoadRunner11 安装&破解&汉化
- hdu 1088 Write a simple HTML Browser
- makefile