要從瀏覽器訪問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");