Servlet ServletContext

简介

WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。可以通过ServletConfig.getServletContext方法获得ServletContext对象。
由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。

getRequestDispatcher()

参考这篇博客
http://twilight.net.cn/2017/04/09/Servlet-%E4%BD%BF%E7%94%A8RequestDispathcher%E8%B0%83%E6%B4%BE%E8%AF%B7%E6%B1%82/

getResourcePaths(“url”)

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("<img src='"+temp+"' width=200 height=200></img>");
        }
    }

getResourceAsStream(“url”)

获取文件流,返回类型是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();
    }

这是从服务器端向客户端发送文件,如果需要接受客户端发来的文件,具体操作方式请参考
Servlet 上传文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值