サーブレットを使用したWeb開発の最初の一歩を踏み出しました。現在、サーブレットの初期化パラメータとコンテキストパラメータを取得しようとしています。これらは、web.xmlで次のように宣言されています。
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>JediWebTutorial</display-name>
**<context-param>
<param-name>contextParam</param-name>
<param-value>contextValue</param-value>
</context-param>**
<servlet>
<servlet-name>GreeterServlet</servlet-name>
<servlet-class>jedi.servlets.GreeterServlet</servlet-class>
**<init-param>
<param-name>servletParam</param-name>
<param-value>servletValue</param-value>
</init-param>**
</servlet>
<servlet>
<servlet-name>GetParameterValuesServlet</servlet-name>
...
次のように、GreeterServlet内のdoGetメソッドで取得しようとしています。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletConfig config = getServletConfig();
ServletContext context = config.getServletContext();
Enumeration<String> servletParams = config.getInitParameterNames();
Enumeration<String> contextParams = context.getInitParameterNames();
for (String param : Collections.list(servletParams)) {
System.out.println(param);
}
for (String param : Collections.list(contextParams)) {
System.out.println(param);
}
...
予想どおり、コンソールには「contextParam」という名前が表示されます。ただし、「servletParam」名は出力されません。
私は何時間も苦労していて、ノードが内部にあり、GreeterServletのinit()メソッドをオーバーライドしていないことを確認しました(多くのディスカッションリストで問題の原因として報告されているため) 。私はウェブ上で同様のケースを見つけていません-多分それは私があまりにも初心者であるというのはあまりにも単純な問題だからです。とにかく、それを見てわざわざしてくれた人に感謝します!
ちなみに、役に立ったら、TomCat7.0.34とEclipseHeliosを使用しています。