2017-09-26 17 views
0

web.xmlファイルを介していくつかのinit-param値をserevletにロードしようとしていますが、それらはnullを表示し続けます。私はうまく動作する2つのコンテキストパラメータを持っています。誰かが私が間違っていることを知っていますか?Servel init-paramはnullを返します

これは私のアプリケーションに使用しているweb.xmlファイルです。

<?xml version="1.0" encoding="UTF-8"?> 

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
          http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1" 
     > 

     <display-name>Hello World Application</display-name> 
     <servlet> 
      <servlet-name>contextxParameterServlet</servlet-name> 
      <servlet-class>com.wrox.HelloServlet</servlet-class> 
      <init-param> 
       <param-name>database</param-name> 
       <param-value>CustomerSupport</param-value> 
      </init-param> 
      <init-param> 
       <param-name>server</param-name> 
       <param-value>10.0.12.5</param-value> 
      </init-param> 
      <load-on-startup>1</load-on-startup> 
     </servlet> 
     <servlet-mapping> 
      <servlet-name>contextxParameterServlet</servlet-name> 
      <url-pattern>/contextParameters</url-pattern> 
     </servlet-mapping> 
     <context-param> 
      <param-name>settingOne</param-name> 
      <param-value>foo</param-value> 
     </context-param> 
     <context-param> 
      <param-name>settingTwo</param-name> 
      <param-value>bar</param-value> 
     </context-param> 
     <servlet> 
      <servlet-name>servletParameterServlet</servlet-name> 
      <servlet-class>com.wrox.initParams</servlet-class> 
      <init-param> 
       <param-name>database</param-name> 
       <param-value>CustomerSupport</param-value> 
      </init-param> 
      <init-param> 
       <param-name>server</param-name> 
       <param-value>10.0.12.5</param-value> 
      </init-param> 
     </servlet> 
     <servlet-mapping> 
      <servlet-name>servletParameterServlet</servlet-name> 
      <url-pattern>/servletParameter</url-pattern> 
     </servlet-mapping> 
</web-app> 

これは、servletParameterServletにマップされたページです。

package com.wrox; 

import javax.servlet.http.HttpServlet; 
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.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.Enumeration; 
import java.util.List; 

public class initParams extends HttpServlet{ 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException 
    { 
     ServletContext c = this.getServletContext(); 
     PrintWriter writer = response.getWriter(); 
     Enumeration<String> temp = c.getInitParameterNames(); 

     while(temp.hasMoreElements()) { 
      writer.append(temp.nextElement()); 
     } 



     writer.append("database: ").append(c.getInitParameter("database")) 
       .append(", server: ").append(c.getInitParameter("server")); 
    } 

    @Override 
    public void init(ServletConfig config) throws ServletException 
    { 
     super.init(config); 
     System.out.println("Servlet " + this.getServletName() + " has started."); 
    } 

    @Override 
    public void destroy() { 
     System.out.println("Servlet " + this.getServletName() + " has stopped."); 
    } 
} 

答えて

0

あなたは物事を初期化してきた方法は、私が

this.getServletConfig().getInitParameter("foo"); 

で利用可能であるべきであるためにあなたが大まかJVM内部のサーブレットで共有されているサーブレットコンテキストを話して探しているものだと思いますが、このオブジェクトは、内部に存在します特定のサーブレットのサーブレット設定、<init-param>はServletConfigに入ります。 詳細については、ドキュメントを読むことを強くお勧めします。

関連する問題