Servlet3.0中Servlet的使用(注解&&配置文件)

版权声明:欢迎大家转载,转载请注明出处blog.csdn.net/tantexian。 https://blog.csdn.net/tantexian/article/details/50414368

Servlet3.0中Servlet的使用

目录

1.注解配置

2.异步调用

3.文件上传

 

       相对于之前的版本,Servlet3.0中的Servlet有以下改进:

l  支持注解配置。

l  支持异步调用。

l  直接有对文件上传的支持。

 

       在这篇文章中我将主要讲这三方面的应用示例。

 

1.注解配置

       在以往我们的Servlet都需要在web.xml文件中进行配置(Servlet3.0同样支持),但是在Servlet3.0中引入了注解,我们只需要在对应的Servlet类上使用@WebServlet注解进行标记,我们的应用启动之后就可以访问到该Servlet。对于一个@WebServlet而言,有一个属性是必须要的,那就是它的访问路径。@WebServlet中有两个属性可以用来表示Servlet的访问路径,分别是value和urlPatterns。value和urlPatterns都是数组形式,表示我们可以把一个Servlet映射到多个访问路径,但是value和urlPatterns不能同时使用。如果同时使用了value和urlPatterns,我们的Servlet是无法访问到的。下面是一个使用@WebServlet的简单Servlet示例。

Java代码  收藏代码
   
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;  
   
/** 
 * 
 * Servlet3.0支持使用注解配置Servlet。我们只需在Servlet对应的类上使用@WebServlet进行标注, 
 * 我们就可以访问到该Servlet了,而不需要再在web.xml文件中进行配置。@WebServlet的urlPatterns 
 * 和value属性都可以用来表示Servlet的部署路径,它们都是对应的一个数组。 
 */  
@WebServlet(name="exampleServlet", urlPatterns="/servlet/example")  
public class ExampleServlet extends HttpServlet {  
   
   private static final long serialVersionUID = 1L;  
   
   @Override  
   protected void doGet(HttpServletRequest request,  
         HttpServletResponse response) throws ServletException, IOException {  
      this.doPost(request, response);  
   }  
   
   @Override  
   protected void doPost(HttpServletRequest request,  
         HttpServletResponse response) throws ServletException, IOException {  
      response.getWriter().write("Hello User.");  
   }  
   
}  
  

初始化参数

       使用@WebServlet时也可以配置初始化参数,它是通过@WebServlet的initParams参数来指定的。initParams是一个@WebInitParam数组,每一个@WebInitParam代表一个初始化参数。

Java代码  收藏代码
   
import java.io.IOException;  
import java.util.Enumeration;  
   
import javax.servlet.ServletException;  
import javax.servlet.annotation.WebInitParam;  
import javax.servlet.annotation.WebServlet;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
   
/** 
 * 带初始化参数的Servlet 
 * WebServlet的属性initParams可以用来指定当前Servlet的初始化参数,它是一个数组, 
 * 里面每一个@WebInitParam表示一个参数。 
 */  
@WebServlet(value="/servlet/init-param", initParams={@WebInitParam(name="param1", value="value1")})  
public class WebInitParamServlet extends HttpServlet {  
   
   /** 
    * 
    */  
   private static final long serialVersionUID = 1L;  
   
   @Override  
   protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
         throws ServletException, IOException {  
      this.doPost(req, resp);  
   }  
   
   @Override  
   protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
         throws ServletException, IOException {  
      Enumeration<String> paramNames = this.getServletConfig().getInitParameterNames();  
      String paramName;  
      while (paramNames.hasMoreElements()) {  
         paramName = paramNames.nextElement();  
         resp.getWriter().append(paramName + " = " + this.getServletConfig().getInitParameter(paramName));  
      }  
      resp.getWriter().close();  
   }  
    
}  

Servlet3.0提供了注解(annotation),使得不再需要在web.xml文件中进行Servlet的部署描述。

在Servlet3.0中,可以使用@WebServlet注解将一个继承于javax.servlet.http.HttpServlet的类标注为可以处理用户请求的Servlet。

 

@WebServlet注解的相关属性
NO. 属性名 描述
1 asyncSupported 声明Servlet是否支持异步操作模式
2 description Servlet的描述信息
3 displayName Servlet的显示名称
3 initParams Servlet的初始化参数
5 name Servlet的名称
6 urlPatterns Servlet的访问URL
7 value Servlet的访问URL

  Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。
  像上面的Servlet3Demo可以描述成@WebServlet(name="Servlet3Demo",value="/Servlet3Demo")。
  也定义多个URL访问:
  如@WebServlet(name="Servlet3Demo",urlPatterns={"/Servlet3Demo","/Servlet3Demo2"})
  或者@WebServlet(name="AnnotationServlet",value={"/Servlet3Demo","/Servlet3Demo2"})

展开阅读全文

没有更多推荐了,返回首页