서블릿에서 Tomcat 컨텍스트 경로에 액세스
문제
내 서블릿에서 일부 JavaScript 축소를 수행할 수 있도록 컨텍스트의 루트에 액세스하고 싶습니다.
설치 프로세스의 일부로 축소를 수행하는 것이 가능하지만 구현 비용을 줄이기 위해 서블릿 시작 시 축소를 수행하고 싶습니다.
디스크에 파일을 로드하고 쓸 수 있도록 컨텍스트 디렉터리를 가져오는 방법을 아는 사람이 있습니까?
해결책
그러면 파일을 추출/편집하는 데 사용할 수 있는 실제 경로가 제공됩니다.
우리는 컨텍스트 리스너에서 비슷한 작업을 수행하고 있습니다.
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();
...
}
...
}
아니면 좀 더 복잡한 것인가요?