Java Servlet web.xml 配置詳解

要從瀏覽器訪問Java servlet,必須告訴servlet容器要部署哪些servlet以及要將servlet映射到哪個URL。 這是在Java Web應用程序的web.xml文件中完成的。

配置和映射Servlet

我們來看一個例子:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

  <servlet>
    <servlet-name>controlServlet</servlet-name>
    <servlet-class>com.xxx.ControlServlet</servlet-class>
  </servlet>

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

首先配置servlet。 這是使用<servlet>元素完成的。 在這里給servlet一個名字,并寫下servlet的類名。

其次,將servlet映射到URL或URL模式。 這在<servlet-mapping>元素中完成。 在上面的例子中,所有以.html結尾的URL都被發(fā)送到servlet。

我們一般還可能使用的servlet URL映射是:

/myServlet

/myServlet.do

/myServlet*

是通配符,意思是任何文本。 如您所見,您可以使用通配符()將servlet映射到單個特定的URL或URL的模式。 你將使用什么取決于servlet的功能。

Servlet初始參數(shù)

您可以從web.xml文件將參數(shù)傳遞給servlet。 servlet的init參數(shù)只能由該servlet訪問。
如何在web.xml文件中配置它們的方法:

<servlet>
    <servlet-name>controlServlet</servlet-name>
    <servlet-class>com.xxxControlServlet</servlet-class>
    
        <init-param>
        <param-name>myParam</param-name>
        <param-value>paramValue</param-value>
        </init-param>
</servlet>

如何從Servlet內部讀取init參數(shù)的方法 - 在Servlet init()方法中:

public class SimpleServlet 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>");
  }
}

servlet容器首次加載servlet時會調用servlets init()方法。 在加載servlet之前,是不會允許訪問該servlet。

Servlet加載啟動

<servlet>元素有一個名為<load-on-startup>的子元素,您可以使用它來控制何時servlet容器應該加載servlet。 如果不指定<load-on-startup>元素,那么servlet容器通常會在第一個請求到達時加載servlet。

通過設置<load-on-startup>元素,可以告訴servlet容器在servlet容器啟動后立即加載servlet。 請記住,在加載servlet時調用Servlet init()方法。

這里是一個<load-on-startup>配置的例子:

<servlet>
    <servlet-name>controlServlet</servlet-name>
    <servlet-class>com.xxx.xxx.ControlServlet</servlet-class>
    <init-param><param-name>container.script.static</param-name>
                <param-value>/WEB-INF/container.script</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<load-on-startup>元素中的數(shù)字告訴servlet容器應該按什么順序加載servlet。 較低的數(shù)字首先被加載。 如果該值為負數(shù)或未指定,則servlet容器可以隨時加載servlet。

Context 參數(shù)

可以設置一些上下文參數(shù),這些參數(shù)可以從應用程序中的所有servlet中讀取。
那該如何配置呢?

<context-param>
    <param-name>myParam</param-name>
    <param-value>the value</param-value>
</context-param>

如果獲得這些參數(shù)呢?

String myContextParam =
        request.getSession()
               .getServletContext()
               .getInitParameter("myParam");
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容