首页 > 代码库 > 浅 谈 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