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);
      }

    }

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

     

  • 相关阅读:
    初學C#窗口事件
    Visual Studio 2005.net 代码段(Snippet)丢失的解决方案
    使用C#代码段,提高工作效率(C# code snippet)
    同时拥有静态IP和动态IP
    让XP启动时不加载Autoexec.bat
    C#中构造函数和析构函数的用法
    C# 輸入關鍵字後按Tab鍵無法帶出相關內容
    C# 打開文件
    system.net.mail 與system.web.mail的區別
    C#中的建立事件
  • 原文地址:https://www.cnblogs.com/summertime-wu/p/6819423.html
Copyright © 2011-2022 走看看