문제

내 서블릿에서 일부 JavaScript 축소를 수행할 수 있도록 컨텍스트의 루트에 액세스하고 싶습니다.

설치 프로세스의 일부로 축소를 수행하는 것이 가능하지만 구현 비용을 줄이기 위해 서블릿 시작 시 축소를 수행하고 싶습니다.

디스크에 파일을 로드하고 쓸 수 있도록 컨텍스트 디렉터리를 가져오는 방법을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

그러면 파일을 추출/편집하는 데 사용할 수 있는 실제 경로가 제공됩니다.

Javadoc 링크

우리는 컨텍스트 리스너에서 비슷한 작업을 수행하고 있습니다.

public class MyServlet extends HttpServlet {

    public void init(final ServletConfig config) {
        final String context = config.getServletContext().getRealPath("/");
        ...
    }

    ...
}

다른 팁

내 서블릿에서 JavaScript 축소를 수행할 수 있도록 컨텍스트의 루트에 액세스하고 싶습니다.

다음을 통해 WebContent의 파일에 액세스할 수도 있습니다. ServletContext#getResource().예를 들어 JS 파일이 다음 위치에 있는 경우 WebContent/js/file.js 그런 다음 다음을 사용할 수 있습니다. Servlet 얻기 위해 File 그것의 처리:

File file = new File(getServletContext().getResource("/js/file.js").getFile());

또는 InputStream:

InputStream input = getServletContext().getResourceAsStream("/js/file.js");

즉, JS 파일을 얼마나 자주 축소해야 합니까?나는 요청 기반 축소의 필요성을 본 적이 없으며, 이는 불필요하게 많은 오버헤드를 추가할 뿐입니다.아마도 응용 프로그램 시작 중에 한 번만 수행하고 싶을 것입니다.그렇다면 Servlet 왜냐하면 이것은 나쁜 생각이기 때문입니다.더 나은 사용 ServletContextListener 그리고 네 일을 해라 contextInitialized().

나는 결과를 인터넷 검색하고 있었고 어디에도 없었습니다.현재 액세스하기 위해 Java Script를 사용해야 하는 JSP 페이지에서 컨텍스트 경로 실제로는 매우 쉽습니다.

다음 줄을 HTML 헤드 안에 script 차단하다.

// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}" 

다음을 의미합니까?

public class MyServlet extends HttpServlet {

    public void init(final ServletConfig config) {
        final String context = config.getServletContext();
        ...
    }

    ...
}

아니면 좀 더 복잡한 것인가요?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top