在我的Servlet中,我想访问上下文的根,以便我可以做一些JavaScript缩小。
可以将minify作为安装过程的一部分进行,但我想在Servlet启动时进行,以降低实现成本。
有没有人知道获取上下文目录的方法,以便我可以加载文件并将文件写入磁盘?
答案 0 :(得分:13)
这应该为您提供可用于提取/编辑文件的真实路径。
我们在上下文监听器中做了类似的事情。
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext().getRealPath("/");
...
}
...
}
答案 1 :(得分:2)
在我的Servlet中,我想访问上下文的根,以便我可以做一些JavaScript缩小
您还可以通过ServletContext#getResource()
访问WebContent中的文件。因此,如果您的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()
上完成您的工作。
答案 2 :(得分:0)
我在google搜索结果并且没有在哪里。在需要使用Java Script访问当前 contextPath 的JSP页面中,它实际上非常简单。
只需将以下几行放入script
块内的 html head 即可。
// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}"
答案 3 :(得分:-1)
你的意思是:
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext();
...
}
...
}
还是更复杂的东西?