一、servlet初始化參數
使用標籤初始化的參數是被應用程序中所有的servlet所共享。但是有時候我們需要爲某一個特定的servlet配置參數,這個時候我們就需要使用servlet初始化參數。下邊介紹兩種servlet參數初始化的方法。
- (1)配置web.xml文件
在web.xml文件中爲當前web應用添加兩個名爲admin-email和admin-tel的ServletContext初始化參數,在ConfigDemoServlet中獲取這兩個參數的參數值,使用ServletContext對象將admin-email和admin-tel的參數值寫入日誌文件中,並查看日誌文件。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>homework01</display-name>
<!-- 配置servlet -->
<servlet>
<servlet-name>ConfigDemoServlet</servlet-name>
<servlet-class>com.configDemo.ConfigDemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ConfigDemoServlet</servlet-name>
<url-pattern>/configDemo.do</url-pattern>
</servlet-mapping>
<!-- 配置整個web應用的初始化參數 -->
<context-param>
<param-name>admin-email</param-name>
<param-value>123456@qq.com</param-value>
</context-param>
<context-param>
<param-name>admin-tel</param-name>
<param-value>1234567890</param-value>
</context-param>
</web-app>
- (2)使用註解完成servlet初始化參數:
編寫ConfigDemoServlet程序,通過註釋爲其添加初始化參數email、telephone,在Servlet中讀取該servlet的名稱和初始化參數email、telephone,並將這兩個參數的值在響應在頁面上。- 下邊代碼所演示的是註釋進行servlet的參數初始化:
@WebServlet(
name = "ConfigDemoServlet",
urlPatterns="/configDemo.do",
initParams = {
@WebInitParam(name= "email", value="telephone")
})
二、完整代碼如下:
package com.configDemo;
import java.io.FileReader;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Properties;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ConfigDemoServle
* servlet的註釋初始化
*/
@WebServlet(
name = "ConfigDemoServlet",
urlPatterns="/configDemo.do",
initParams = {
@WebInitParam(name= "email", value="telephone")
})
public class ConfigDemoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
//ServletContext 的應用:作爲整個web範圍中的共享數據
private ServletContext servletContext;
/**
* @see HttpServlet#HttpServlet()
*/
public ConfigDemoServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
//獲取servlet參數
ServletConfig config = this.getServletConfig();
Enumeration<String> enumeration = config.getInitParameterNames();
String name = (String) enumeration.nextElement();//獲取對應的值
String value11 = config.getInitParameter(name);//利用名字獲取值
//將信息打印在界面上
response.getWriter().println("servlet名稱 : "+ config.getServletName());
response.getWriter().println("<br><br>");
response.getWriter().println("Email 地址: "+ name);
response.getWriter().println("<br><br>");
response.getWriter().println("電話號碼:" + value11);
response.getWriter().println("<br><br>");
//獲取web.xml文件中的初始化參數值,並且顯示在頁面上
this.servletContext = config.getServletContext();
String adminEmail = servletContext.getInitParameter("admin-email");//利用名字獲取值
String adminTel = servletContext.getInitParameter("admin-tel");//利用名字獲取值
response.getWriter().println("web.xml文件中的初始化參數值admin-email: " + adminEmail);
response.getWriter().println("<br><br>");
response.getWriter().println("web.xml文件中的初始化參數值admin-tel: " + adminTel);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
三、頁面顯示結果