浅 谈 Servlet

一、传统 Servlet配置与Java EE 7 Servlet 之间的比较

    我们都知道,传统创建一个Servlet后,都需要在web.xml文件中进行相关的配置。即需要在web.xml

文件中添加以下代码:

    
First_Servlet
    
servlet.First_Servlet
  
  
    
First_Servlet
    
/hello
  

    而在Java EE 7 中,每当我们创建一个新的Servlet时,不需要再e.xml文件中进行相关配置了,只

需要将Servlet类继承HttpServlet,并在该类前声明 @WebServlet("/hello")注解,启动Tomcat服务器

后,在本机即可通过  http://localhost:8080/Java_Web/hello  对该Servlet进行访问。

    注意点:

    

    1、@WebServlet 注解是用来标识一个类是一个Servlet类的。

    

    2、该注解使用时,一般包含 urlPatterns、value 属性,但是,当该注解只是用来声明Servlet的

访问路径时,即声明urlPatterns时,只需指定value值即可。否则,当需要以上两个属性外的其他属性

时,需要显示指定urlPatterns属性,而不能只指定value值。

二、传统 Servlet初始化参数配置与Java EE 7 Servlet 之间的比较

    在Java web中,我们可以配置至少两种类型的参数。

    第一种是web全局初始化参数,该参数对整个web应用生效。第二种是servlet初始化参数。但在以前

都是在web.xml文件中进行配置,相关详细配置如下:

  
 
      
user
      
root
  
    
    
    
First_Servlet
    
servlet.First_Servlet
    
      
user
      
root
    
  
  
    
First_Servlet
    
/hello
  

    以上两种参数在一个Servlet中可以通过以下方式获得:

    

String userName = request.getServletContext().getInitParameter("user");		System.out.println("=="+userName);				public void init(ServletConfig config) throws ServletException {		// TODO Auto-generated method stub		super.init(config);				System.out.println(config.getInitParameter("user"));	}或者:ServletConfig p = this.getServletConfig();	String value = p.getInitParameter("name");		System.out.println(value);		//注意:不能通过request对象直接获取初始化参数的值,但可以通过request获取ServletContext对///象然后获取全局初始化变量的值,如        request.getServletContext().getInitParameter("user")

    当然除了以上两种参数,我们也可以根据需要配置其他的参数,如Filter过滤器参数。

    在Java EE 7 中,允许使用Java注解来定义Servlet初始化参数(非全局参数)

//在声明Servlet路径的同时也声明了该Servlet的一个初始化参数@WebServlet(urlPatterns="/a",initParams=@WebInitParam(name="name",value="a"))

    我们或许会问,那如果我想声明多个Servlet初始化参数呢?

//在声明Servlet路径的同时也声明了该Servlet的2个初始化参数@WebServlet(urlPatterns="/a",initParams={@WebInitParam(name="name",value="a"),@WebInitParam(name="age",value="13")})

    在@WebServlet注解中,initParams属性可以传入一个@WebInitParam注解数组,每个@WebInitParam

注解相当于定义了一个初始化参数,但注意,多个参数要以中括号{}包裹着。