web.xml中的servlet配置

web.xml是部署配置文件,告诉web容器如何部署web应用程序。

例如,web容器在部署servlet时必须做好网址映射,我们才能通过网址访问该servlet。

Servlet配置与网址映射

在web.xml文件中配置servlet:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
        version="2.4">

<web-app>
  <servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>com.qikegu.demo.MyServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>
</web-app>   

上面代码中,首先在<servlet>元素中配置servlet的名称,类名。
然后,在<servlet-mapping>元素中配置servlet的网址映射,这里的配置表明所有以.html结尾的URL都将被映射到myServlet

网址映射还可以使用通配符(*),匹配任意文本:

/myServlet*

Servlet 初始化参数

可以从web.xml文件中给servlet设置初始化参数,参数只限该servlet访问,如下面所示:

<servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>com.qikegu.demo.MyServlet</servlet-class>

        <init-param>
            <param-name>myParam</param-name>
            <param-value>paramValue</param-value>
        </init-param>
</servlet>

下面是从servlet的init()方法中读取初始化参数:

public class MyServlet extends GenericServlet {

  protected String myParam = null;

  public void init(ServletConfig servletConfig) throws ServletException{
    this.myParam = servletConfig.getInitParameter("myParam");
  }

  public void service(ServletRequest request, ServletResponse response)
        throws ServletException, IOException {

    response.getWriter().write("<html><body>myParam = " + this.myParam + "</body></html>");
  }
}

web容器首次加载servlet时会调用init()方法,在servlet成功初始化之前不能访问servlet。

Servlet Load-on-Startup

<servlet>有一个<load-on-startup>配置项,可以用来控制web容器何时加载servlet。如果没有设置<load-on-startup>,web容器通常会在首个请求到达时加载servlet,反之如果设置了<load-on-startup>,web容器启动时会立即加载servlet。请记住,servlet加载时会调用init()方法。

<load-on-startup>配置示例:

<servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>com.qikegu.demo.MyServlet</servlet-class>

    <load-on-startup>1</load-on-startup>
</servlet>

<load-on-startup>1</load-on-startup>中的数字指明servlet加载顺序,数字小的先加载。如果值为负或未指定,web容器可以在任何时候加载servlet。

Context 参数

context参数的作用范围是整个web应用,web应用内的所有servlet都可以访问,关于ServletContext可参考使用ServletContext存取全局信息

示例:

<context-param> 
    <description>管理员邮件地址</description> 
    <param-name>webmaster</param-name> 
    <param-value>admin@qikegu.com</param-value> 
</context-param> 

下面所示是在HttpServlet子类中访问Context参数:

String myContextParam =
        request.getSession()
               .getServletContext()
               .getInitParameter("webmaster");


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载