2010-12-13 2 views
0

내 서블릿의 webcontent 폴더에서 (.properties) 파일을로드하는 데 문제가 있습니다. 찾은 해결책이 효과적이지 않습니다. 파일을 읽을 때 예외가 발생합니다. 내 폴더 및 패키지 구조와 코드 부분 아래.webcontent 폴더의 .properties 파일에 액세스 서블릿 프로젝트 양식

내가 뭘 잘못하고 있니?

웹 콘텐츠 폴더 구조

WebContent 
- WEB-INF 
- languages 
    -- language.properties 
- .... 

패키지 구조

package x.y.z.aa 
- Servlet.java 
package x.y.z.ab 
- PropertyLoader.java 

Servlet.java 코드

public void init(ServletConfig config) throws ServletException {  
    super.init(config); 
    servletContext = this.getServletContext(); 
    PropertyLoader = new PropertyLoader(servletContext); 
} 
14, PropertyLoader.java

public PropertyLoader(ServletContext context) { 
    super(); 
    try{ 
     properties.load(context.getResourceAsStream("/languages/language.properties")); 
     System.out.println(languages.get("test")); 
    } catch (Exception e){ 
     System.out.println("Error reading properties file"); 
     System.out.println(e.getMessage()); 
    } 
} 

죄송합니다. Properties 인스턴스 변수를 인스턴스화하는 것을 잊었다. 그것이 현재 위치에있을 때 HTTP 액세스에 관한 팁을 주셔서 감사합니다. 이것은 WEB-INF 폴더 아래에 넣을 때 해결되어야합니까?

+2

예외는 무엇입니까? – JOTN

+0

사소한'NullPointerException'이 될 것입니다. – BalusC

+0

'servletContext'가 null이 아닌지 확인하십시오. – Bozho

답변

0

속성 파일 위치를 변경하는 것이 좋습니다. 현재 위치에서 보안 문제로 간주 될 수있는 간단한 HTTP GET 요청 (http://host:8080/AppContext/languages/language.properties)을 통해 콘텐츠에 액세스 할 수 있습니다.

예외를 게시 할 수 있다면 코드를 통해 어떤 일이 일어나는지 더 많은 도움을 얻을 수 있습니다.

+0

사실,이 질문에 대답하지 않습니다. 이것은 코멘트로 게시되어 있어야합니다. – BalusC

2

WEB-INF에 이러한 파일을 배치하는 것이 좋습니다. 그러면 파일이 있으면 다음 작업이 수행되어야합니다 (실제로 현재 설정에서 작동해야 함). 파일이 올바른 형식인지, 즉 파일이 실제 속성 파일인지 확인하십시오.

properties.load(context 
    .getResourceAsStream("/WEB-INF/languages/language.properties")); 
0

예, 일반적으로이 항목을 WEB-INF 폴더에 넣습니다. 어떤 이유로 든 HTTP를 통해 액세스 할 수 없도록하려는 경우가 아니면

관련 문제