2013-01-08 4 views
1

서블릿을 사용하여 웹을 개발하는 첫 걸음을 내딛고 있습니다. 이제는 서블릿의 init 매개 변수와 컨텍스트 매개 변수를 검색하려고합니다.getInitParameterNames()는 init-parameters를 얻지 못합니다.

<?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> 
... 

나는이처럼의 doGet 방법에서, GreeterServlet 내에서 그것을 얻으려고 :

예상대로
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); 
    } 
... 

은 콘솔이 이름을 보여줍니다 다음과 같이 그들은의 web.xml에 선언 "contextParam". 그러나 "servletParam"이름은 인쇄하지 않습니다.

저는 몇 시간 동안 고민 중이며 노드가 내부에 있으며 어떤 방법 으로든 GreeterServlet의 init() 메서드를 재정의하지 않을 것이라고 확신합니다 (일부 경우에는 문제의 원인으로보고 됨). 많은 토론 목록). 나는 웹에서 유사한 사건을 발견하지 못했다. 아마 내가 너무 초보적인 너무 단순한 문제이기 때문일 것이다. 어쨌든, 고맙게 여기는 누군가를위한 감사합니다!

그런데 도움이된다면 TomCat 7.0.34와 Eclipse Helios를 사용하고 있습니다.

답변

-1

이 내용을 주석으로 추가해야하지만 어떻게 든이 질문에 대한 "의견 추가"링크가 나타나지 않아 답변으로 게시됩니다.

귀하가 게시 한 doGet() 메소드는 어떤 서블릿입니까? GetParameterValuesServlet의 일부인 것처럼 보이며 GreeterServlet에 초기화 매개 변수를 추가했습니다.

+0

감사합니다. 실제로 GreeterServlet의 doGet 메소드입니다. – TitoFHR

+0

원래 게시물에 올린 코드와 정확히 똑같은 코드를 사용하고 "servletParam"과 "contextParam"이 모두 인쇄되었습니다. 왜 같은 결과물을 얻지 못하고 있는지 확신 할 수 없습니다. –

1

내가 (위의 문제에 대한) 서블릿의 초기화 파라미터는 다음과 같은 방법을 액세스 할 수 있다는 것을 발견이 문제에 작업하기 :

ServletContext context = config.getServletContext(); 
ServletRegistration register = context.getServletRegistration("GreeterServlet"); 
String servletParam = register.getInitParameter("servletParam"); 
System.out.println(servletParam); 

예상 servletValue을 인쇄 할 것.

이전의 질문에 답을주지는 못했지만 실제로 해결책입니다. 다른 사람이 비슷한 문제로 우연히 만나는 경우 시도해보십시오! 그리고 누군가가 원래의 문제에 대한 해결책을 찾아 내면, 그것은 여전히 ​​분명히 잘 될 것입니다! ;-)

관련 문제