في ملف تكوين Servlet، يمكنك استخدام علامة <init-param> واحدة أو أكثر لتكوين بعض معلمات التهيئة لـ servlet. عندما يتم تكوين servlet بمعلمات التهيئة، ستقوم حاوية الويب تلقائيًا بتغليف معلمات التهيئة هذه في كائن ServletConfig عند إنشاء كائن مثيل servlet، وعند استدعاء طريقة init الخاصة بـ servlet، سيتم تمرير كائن ServletConfig إلى servlet. علاوة على ذلك، يمكن للمبرمجين الحصول على معلومات معلمة التهيئة لـ servlet الحالي من خلال كائن ServletConfig.
رمز العينة كما يلي:
انسخ رمز الكود كما يلي:
الحزمة com.yyz.servletconfig;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
الطبقة العامة ServletConfigDemo1 تمتد HttpServlet {
تكوين ServletConfig؛
doGet الفراغ العام (طلب HttpServletRequest، استجابة HttpServletResponse)
يلقي ServletException، IOException {
// احصل على معلمات التهيئة المحددة
قيمة السلسلة = config.getInitParameter("xxx");
Response.getOutputStream().write(value.getBytes());
// احصل على كافة معلمات التهيئة
التعداد e = cofig.getInitParameterNames();
بينما(e.hasMoreElements()){
اسم السلسلة = (سلسلة) e.nextElement();
value = config.getInitParameter(name);
Response.getOutputStream().write((name+"="+value+"<br/>").getBytes());
}
}
doPost باطلة عامة (طلب HttpServletRequest، استجابة HttpServletResponse)
يلقي ServletException، IOException {
doGet(request,response);
}
@تجاوز
init الفراغ العام (تكوين ServletConfig) يطرح ServletException {
this.config = config;
}
}
web.xml المقابل هو كما يلي:
انسخ رمز الكود كما يلي:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
الإصدار = "2.5">
<سيرفلت>
<servlet-name>ServletConfigDemo1</servlet-name>
<servlet-class>com.yyz.servletconfig.ServletConfigDemo1</servlet-class>
<init-param>
<param-name>xxx</param-name>
<param-value>yyy</param-value>
</init-param>
<init-param>
<param-name>الاسم</param-name>
<param-value>yyz</param-value>
</init-param>
<init-param>
<param-name>كلمة المرور</param-name>
<param-value>yyy</param-value>
</init-param>
</سيرفلت>
<رسم الخرائط servlet>
<servlet-name>ServletConfigDemo1</servlet-name>
<url-pattern>/servlet/ServletConfigDemo1</url-pattern>
</servlet-mapping>
</web-app>
نتائج الاختبار هي كما يلي:
في الكود أعلاه، يوجد كائن ServletConfig في كائن ServletConfigDemo1، وهو في الواقع غير ضروري. لأن ServletConfigDemo1 يرث HttpServlet، والذي بدوره يرث GenericServlet. يحتفظ GenericServlet بالفعل بكائن ServletConfig داخليًا. التطبيقات ذات الصلة هي كما يلي:
انسخ رمز الكود كما يلي:
فئة مجردة عامة GenericServlet
تنفذ Servlet، ServletConfig، java.io.Serializable
{
… …
تكوين ServletConfig الخاص العابر؛
public ServletConfig getServletConfig() {
عودة التكوين؛
}
}
لذلك، يمكننا الحصول مباشرة على كائن ServletConfig من خلال طريقة getServletConfig() لكائن Servlet الذي كتبناه، نموذج التعليمات البرمجية كما يلي:
انسخ رمز الكود كما يلي:
الحزمة com.yyz.servletconfig;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
الطبقة العامة ServletConfigDemo2 تمتد HttpServlet {
doGet الفراغ العام (طلب HttpServletRequest، استجابة HttpServletResponse)
يلقي ServletException، IOException {
قيمة السلسلة = this.getServletConfig().getInitParameter("name");
System.out.println(value);
}
doPost باطلة عامة (طلب HttpServletRequest، استجابة HttpServletResponse)
يلقي ServletException، IOException {
doGet(request, Response);
}
}
ملف web.xml:
انسخ رمز الكود كما يلي:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
الإصدار = "2.5">
<سيرفلت>
<servlet-name>ServletConfigDemo2</servlet-name>
<servlet-class>com.yyz.servletconfig.ServletConfigDemo2</servlet-class>
<init-param>
<param-name>الاسم</param-name>
<param-value>yyz</param-value>
</init-param>
</سيرفلت>
<رسم الخرائط servlet>
<servlet-name>ServletConfigDemo2</servlet-name>
<url-pattern>/servlet/ServletConfigDemo2</url-pattern>
</servlet-mapping>
</web-app>