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

}

備注:這種方式雖然麻煩一點,但是可以得到當前讀取資源文件的名稱

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM