本文共 1760 字,大约阅读时间需要 5 分钟。
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。可以通过ServletConfig.getServletContext方法获得ServletContext对象。
由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。参考这篇博客
url 必须以/开头
for(String temp : getServletContext().getResourcePaths("/")){ output.println(temp); }
效果如下
/JSP-useBean//FormTest.html/AutoLogin.jsp/Hello.jsp/Cookie//Main.html/CheckNum//META-INF//index.jsp/test.html/WEB-INF//includes//JSP-Include//AutoLogin.html/error.jsp
获取webRoot下的所有图片
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8"); PrintWriter output = resp.getWriter(); ServletContext context = getServletContext(); // '/' 表示 WebRoot for(String temp : context.getResourcePaths("/img")){ temp = temp.substring(temp.indexOf("/")+1); output.println(""); } }
获取文件流,返回类型是InputStream,URL必须以”/”开头
向页面中发送图片
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context = req.getServletContext(); // 获取输入流 InputStream input = context.getResourceAsStream("/img/P70114-101325.jpg"); // 获取输出流 OutputStream output = resp.getOutputStream(); byte [] data = new byte [1024]; int len = 0 ; while(-1 != (len = input.read(data))){ output.write(data,0,len); } output.close(); input.close(); }
这是从服务器端向客户端发送文件,如果需要接受客户端发来的文件,具体操作方式请参考