Servlet配置包含Servlet的名字、Servlet的類(如果是JSP,那麼就指定JSP文件)、初始化參數、啓動裝入的優先級、Servlet的映射和運行的安全設置。Servlet配置的DTD如下
<!EKENENT servlet(icon?,servlet-name,display-name?,description?,
(servlet-class|jsp-file),init-param*,load-on-startup?,run-as?,security-role-ref*)>
下面結合一個實例
Servlet的名字、類和其他雜項
在配置Servlet時,首先必須指定Servlet的名字、Servlet的類(如果是JSP,必須指定JSP文件的位置)。另外,可以選擇性地給Servlet增加一定的描述,並且指定它在部署時顯示的名字和部署時顯示的Icon。
CounterServlet是這樣被配置的如下
如果要配置的Servlet是一個JSP文件,那麼可以這樣設置
初始化參數
在這個配置中,指定counter的參數值爲10000
啓動裝入優先級
啓動裝入優先級通過<load-on-startup>配置,例如
那麼可以保證NewUseServlet在HelloWorldServlet之前被載入,PrintServlet可以在服務啓動後的任何時候載入。
Servlet的映射
可以給一個Servlet做多個映射,這樣,我們可以通過不同的方式訪問這個Servlet。例如
通過這些配置,我們可以使用不同的方式訪問這個Servlet。有趣的是,對於第二種映射方式,可以通過/count開頭,都能訪問這個Servlet。
運行安全設置
關於Web應用的安全配置,這裏先給出一個簡單的例子:CounterServlet的安全配置
引用
<!EKENENT servlet(icon?,servlet-name,display-name?,description?,
(servlet-class|jsp-file),init-param*,load-on-startup?,run-as?,security-role-ref*)>
下面結合一個實例
- package com.test.ch8
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class CounterServlet extends HttpServlet{
- int counter=0;
- int org=0;
- //處理doGet請求
- public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
- response.setContentType("text/html;charset=gb2312");
- PrintWriter out=response.getWriter();
- counter++;
- out.println("Servlet載入,它被訪問"+counter+"次,加上初始化的配置,"
- +"這個Servlet共訪問了"+(org+counter)+"次");
- }
- //初始化方法,獲得初始參數
- public void init() throws ServletException
- {
- String c=getInitParameter("counter");
- try{
- org=Integer.parseInt(c);
- }
- catch(Exception e){
- e.printStackTrace();
- }
- }
- }
Servlet的名字、類和其他雜項
在配置Servlet時,首先必須指定Servlet的名字、Servlet的類(如果是JSP,必須指定JSP文件的位置)。另外,可以選擇性地給Servlet增加一定的描述,並且指定它在部署時顯示的名字和部署時顯示的Icon。
CounterServlet是這樣被配置的如下
- <servlet>
- <description>Servlet配置</description>
- <display-name>TestServletConfig</display-name>
- <servlet-name>CounterServlet</servlet-name>
- <servlet-class>com.test.ch8.CounterServlet</servlet-class>
- .........
- </servlet>
如果要配置的Servlet是一個JSP文件,那麼可以這樣設置
- <servlet>
- <servlet-name>NewUserServlet</servlet-name>
- <jsp-file>newUser.jsp</jsp-file>
- </servlet>
初始化參數
- <servlet>
- <init-param>
- <param-name>counter</param-name>
- <param-value>10000</param-value>
- </init-param>
- </servlet>
在這個配置中,指定counter的參數值爲10000
啓動裝入優先級
啓動裝入優先級通過<load-on-startup>配置,例如
- <servlet>
- <servlet-name>NewUserServlet</servlet-name>
- <jsp-file>newUser.jsp</jsp-file>
- <load-on-startup>10</load-on-starup>
- </servlet>
- <servlet>
- <servlet-name>HelloWorldServlet</servlet-name>
- <servlet-class>com.test.HelloWorldServlet</servlet-class>
- <load-on-startup>30</load-on-starup>
- </servlet>
- <servlet>
- <servlet-name>PrintServlet</servlet-name>
- <servlet-class>com.test.HelloWorldServlet2</servlet-class>
- <load-on-startup>AnyTime</load-on-starup>
- </servlet>
那麼可以保證NewUseServlet在HelloWorldServlet之前被載入,PrintServlet可以在服務啓動後的任何時候載入。
Servlet的映射
可以給一個Servlet做多個映射,這樣,我們可以通過不同的方式訪問這個Servlet。例如
- <servlet-mapping>
- <servlet-name>CounterServlet</servlet-name>
- <url-pattern>/count_servlet</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>CounterServlet</servlet-name>
- <url-pattern>/count/*</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>CounterServlet</servlet-name>
- <url-pattern>/test/counterservlet/count.html</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>CounterServlet</servlet-name>
- <url-pattern>/test/count.html</url-pattern>
- </servlet-mapping>
通過這些配置,我們可以使用不同的方式訪問這個Servlet。有趣的是,對於第二種映射方式,可以通過/count開頭,都能訪問這個Servlet。
運行安全設置
關於Web應用的安全配置,這裏先給出一個簡單的例子:CounterServlet的安全配置
- <servlet>
- <run-as>
- <role-name>admin</role-name>
- </run-as>
- <security-role-ref>
- <role-name>admin</role-name>
- <role-link>admin</role-link>
- </security-role-ref>
- </servlet>