浅 谈 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
注解相当于定义了一个初始化参数,但注意,多个参数要以中括号{}包裹着。