在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ Servlet ServletContext配置信息
Servlet web.xml welcome-file-list
Servlet從數據庫讀取記錄性能優(yōu)化
Servlet URL重寫帶參數
War文件
Web技術基礎
Servlet GenericServlet類
Servlet API
Servlet ServletInputStream類
使用MyEclipse創(chuàng)建Servlet
Servlet增刪改查
Servlet ServletConfig配置信息
Servlet Cookies
Servlet重定向
Servlet生命周期
Servlet HttpSession會話
Servlet HttpServlet類
Servlet注冊表單示例
Servlet表單隱藏字段
Servlet下載文件
Servlet教程
Servlet身份驗證過濾器
Servlet ServletOutputStream類
Servlet HttpSession登錄注銷實例
Servlet啟動時加載
Servlet事件和監(jiān)聽器
使用Eclipse創(chuàng)建Servlet
Servlet ServletContextEvent事件
Servlet HttpSessionEvent統(tǒng)計在線用戶數實例
Servlet RequestDispatcher請求轉發(fā)
Servlet使用注釋
Servlet過濾器示例
Servlet過慮器
Servlet ServletContext配置信息
Servlet登錄注銷Cookies實例
Servlet工作流程
Servlet會話跟蹤
Servlet登錄實例
Servlet ServletRequest接口
Servlet ServletRequestEvent類和接口
Servlet入門程序
Servlet查詢搜索數據示例
Servlet FilterConfig應用示例
Servlet顯示所有頭信息
Servlet屬性設置
使用NetBeans創(chuàng)建Servlet
Servlet接口實現(xiàn)
Servlet上傳文件

Servlet ServletContext配置信息

ServletContext的對象由Web容器在部署項目時創(chuàng)建。 該對象可用于從web.xml文件獲取配置信息。 每個Web應用程序只有一個ServletContext對象。

如果有信息要共享給多個servlet使用,最好在web.xml文件中使用<context-param>元素提供它。

ServletContext的優(yōu)點

如果有任何信息要共享給所有的servlet使用,并且要讓它容易維護,最好的辦法就是在web.xml文件中提供這些信息,所以如果信息要更改直接在web.xml中修改,而不需要修改servlet代碼。

ServletContext接口的使用

有很多ServletContext對象可以使用。 其中一些如下:

  • ServletContext對象提供容器和servlet之間的接口。
  • 使用ServletContext對象在web.xml文件獲取配置信息。
  • ServletContext對象可用于設置,獲取或刪除web.xml文件中屬性。
  • ServletContext對象可用于提供應用程序間通信。

參考以下示意圖 -

常用的ServletContext接口方法

給出了一些常用的ServletContext接口方法。

序號 方法 描述
1 public String getInitParameter(String name) 返回指定參數名稱的參數值。
2 public Enumeration getInitParameterNames() 返回上下文的初始化參數的名稱。
3 public void setAttribute(String name,Object object) 在應用程序范圍內設置給定的對象。
4 public Object getAttribute(String name) 返回指定名稱的屬性。
5 public Enumeration getInitParameterNames() 返回上下文的初始化參數的名稱,作為String對象的枚舉。
6 public void removeAttribute(String name) 從servlet上下文中刪除給定名稱的屬性。

如何獲取ServletContext接口的對象?

  • 通過ServletConfig接口的getServletContext()方法返回ServletContext對象。
  • 通過GenericServlet類的getServletContext()方法返回ServletContext對象。

getServletContext()方法的語法

public ServletContext getServletContext()

getServletContext()方法的示例

//We can get the ServletContext object from ServletConfig object  
ServletContext application=getServletConfig().getServletContext();  

//Another convenient way to get the ServletContext object  
ServletContext application=getServletContext();

在Context范圍內提供初始化參數的語法

Web應用程序的context-param元素的子元素用于定義應用程序范圍中的初始化參數。 參數名稱和參數值是context-param的子元素。param-name元素定義參數名稱,param-value定義其值。參考以下配置代碼片段 -

<web-app>  
 ......  
  <context-param>  
    <param-name>parameter_name</param-name>  
    <param-value>parameter_value</param-value>  
  </context-param>
 ......  
</web-app>

獲取初始化參數的ServletContext示例

這個例子中,從web.xml文件獲取初始化參數并打印初始化參數的值。請注意,ServletContext的對象表示應用程序范圍。所以如果從web.xml文件中更改參數的值,所有的servlet類都將獲得更改的值。所以不需要修改每個servlet中的值。最好通過web.xml文件中的context-param元素為多個servlet提供公共信息。下面來看一個簡單的例子:

打開Eclipse,創(chuàng)建一個動態(tài)Web項目,其項目結構如下所示 -

以下是幾個主要的代碼文件 -

文件:ContextServlet.java -

package com.yiibai;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ContextServlet
 */
public class ContextServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();

        // creating ServletContext object
        ServletContext context = getServletContext();

        // Getting the value of the initialization parameter and printing it
        String driverName = context.getInitParameter("dname");
        pw.println("driver name is = <b>'" + driverName+"'</b>");

        pw.close();
    }

}

文件:web.xml -

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">
    <display-name>ServletContext</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>ContextServ</servlet-name>
        <servlet-class>com.yiibai.ContextServlet</servlet-class>
    </servlet>

    <context-param>
        <param-name>dname</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </context-param>
    <servlet-mapping>
        <servlet-name>ContextServ</servlet-name>
        <url-pattern>/context</url-pattern>
    </servlet-mapping>
</web-app>

在編寫完成上述代碼后,部署這個Web應用,打開瀏覽器訪問URL: http://localhost:8080/ServletContext/context ,如果程序沒有錯誤,應該會看到以下結果 -

獲取所有初始化參數的ServletContext示例

在這個例子中,我們將從web.xml文件中獲取所有初始化參數。要獲取所有參數,需要在servlet類中使用getInitParameterNames()方法。

在上面項目中,新建一個名稱為:ContextServletAll.java 的Servlet,其代碼如下 -

package com.yiibai;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ContextServletAll
 */
public class ContextServletAll extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        ServletContext context = getServletContext();
        Enumeration<String> e = context.getInitParameterNames();
        String str = "";
        while (e.hasMoreElements()) {
            str = e.nextElement();
            out.print("<br> " + context.getInitParameter(str));
        }
    }

}

文件:web.xml -

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">
    <display-name>ServletContext</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>ContextServ</servlet-name>
        <servlet-class>com.yiibai.ContextServlet</servlet-class>
    </servlet>
    <context-param>
        <param-name>dname</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </context-param>
    <servlet-mapping>
        <servlet-name>ContextServ</servlet-name>
        <url-pattern>/context</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>ContextServAll</servlet-name>
        <servlet-class>com.yiibai.ContextServletAll</servlet-class>
    </servlet>
    <context-param>
        <param-name>dname</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </context-param>
    <context-param>
        <param-name>username</param-name>
        <param-value>root</param-value>
    </context-param>

    <context-param>
        <param-name>password</param-name>
        <param-value>mypasswd</param-value>
    </context-param>
    <servlet-mapping>

        <servlet-name>ContextServAll</servlet-name>
        <url-pattern>/contextall</url-pattern>
    </servlet-mapping>
</web-app>

在編寫完成上述代碼后,部署這個Web應用,打開瀏覽器訪問URL: http://localhost:8080/ServletContext/contextall ,如果程序沒有錯誤,應該會看到以下結果 -