首页 > 代码库 > 浅 谈 Servlet
浅 谈 Servlet
浅 谈 Servlet
一、传统 Servlet配置与Java EE 7 Servlet 之间的比较
我们都知道,传统创建一个Servlet后,都需要在web.xml文件中进行相关的配置。即需要在web.xml
文件中添加以下代码:
<servlet> <servlet-name>First_Servlet</servlet-name> <servlet-class>servlet.First_Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>First_Servlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
而在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文件中进行配置,相关详细配置如下:
<!-- 全局参数 --> <context-param> <param-name>user</param-name> <param-value>root</param-value> </context-param> <!-- Servlet参数 --> <servlet> <servlet-name>First_Servlet</servlet-name> <servlet-class>servlet.First_Servlet</servlet-class> <init-param> <param-name>user</param-name> <param-value>root</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>First_Servlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
以上两种参数在一个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",vhttp://www.mamicode.com/alue="a"))
我们或许会问,那如果我想声明多个Servlet初始化参数呢?
//在声明Servlet路径的同时也声明了该Servlet的2个初始化参数 @WebServlet(urlPatterns="/a",initParams={@WebInitParam(name="name",vhttp://www.mamicode.com/alue="a"),@WebInitParam(name="age",value="http://www.mamicode.com/13")})
在@WebServlet注解中,initParams属性可以传入一个@WebInitParam注解数组,每个@WebInitParam
注解相当于定义了一个初始化参数,但注意,多个参数要以中括号{}包裹着。
本文出自 “@coder” 博客,请务必保留此出处http://smallcoder.blog.51cto.com/11941149/1870185
浅 谈 Servlet