zoukankan      html  css  js  c++  java
  • 使用ServletContext对象读取资源文件

    备注:本文以properties文件为例

    一、通过ServletContext读取文件

    1.通过ServletContext读取放置在src下的properties文件

    package com;

    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    @WebServlet("/Test_ServletContext")
    public class Test_ServletContext extends HttpServlet {

      protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {

        InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/test.properties"); //项目的目录结构和部署在服务器上的目录结构并不一    致,src对应的是/WEB-INF/classes


        Properties props = new Properties();
        props.load(in);

        String key= props.getProperty("key"); //获取key所对应的字符串
        System.out.println(key);

      }


      protected void doPost(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
        doGet(request, response);
      }

    }

    2.通过ServletContext读取放置在WebRoot下的properties文件

    package com;

    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    @WebServlet("/Test_ServletContext")
    public class Test_ServletContext extends HttpServlet {

      protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {

        InputStream in = this.getServletContext().getResourceAsStream("/test.properties"); 

        Properties props = new Properties();
        props.load(in);

        String key= props.getProperty("key"); //获取key所对应的字符串
        System.out.println(key);

      }


      protected void doPost(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
        doGet(request, response);
      }

    }

    备注:其实1和2的方式一样,但是因为项目的目录结构和部署在服务器上的目录结构不一致这个细节,所以就还是写出来了

    二、用FileInputStream读取资源文件

    package com;

    import java.io.FileInputStream;

    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    @WebServlet("/Test_ServletContext")
    public class Test_ServletContext extends HttpServlet {

      protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
        

        String path = this.getServletContext().getRealPath("/WEB-INF/classes/test.properties");//通过ServletContext对象获取该资源的绝对路径
        FileInputStream in = new FileInputStream(path);

        Properties props = new Properties();
        props.load(in);

        String key= props.getProperty("key"); //获取key所对应的字符串
        System.out.println(key);

      }


      protected void doPost(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
        doGet(request, response);
      }

    }

    备注:这种方式虽然麻烦一点,但是可以得到当前读取资源文件的名称

     

  • 相关阅读:
    彻底理解多态
    变量可以存储在堆中,栈中,方法区中。哪里都可以啊。对象只能存储在堆中
    json序列化后的是字符串,不是二进制。是字符串!!!确定不是二进制!!!
    线程流程理解
    增加一个类的功能可以采用继承或者代理模式或者装饰者模式
    Java 代理模式和装饰者模式的区别
    异常不管咋样,只要抛出了,不管是方法级别抛出,还是类级别抛出。终究有一个地方要对异常进行处理
    汉高澳大利亚sinox为什么不能下载源代码,因为sinox执行unix/linux/windows规划
    使用Visual Studio将Objective-C编译C++
    百度编辑器ueditor简单易用
  • 原文地址:https://www.cnblogs.com/summertime-wu/p/6819423.html
Copyright © 2011-2022 走看看