zoukankan      html  css  js  c++  java
  • 通过ServletContext获得工程根目录路径、读取文件以及获得classpath目录下的文件

    HttpServletDemo02.java:

    package com.fl.servlet;
    
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.util.Properties;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    
    public class HttpServletDemo02 extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            
        }
        @Override
        public void init(ServletConfig config) throws ServletException {
            ServletContext sc = config.getServletContext();
            //不管根目录下是否有temp.txt,在这里不会检测。
            String path = sc.getRealPath("temp.txt");
            //不管根目录下有没有upload目录,这里也不会报错,而是会
            //直接输出根目录的完整目录后,再在后面加上upload。
            String path1 = sc.getRealPath("/upload");
            //因此一般getRealPath用于获取根目录路径。
            String path2 = sc.getRealPath("/");
            System.out.println(path);
            System.out.println(path1);
            System.out.println(path2);
            //这里通过完整路径,把文件放入流中。
            InputStream in = sc.getResourceAsStream("/WEB-INF/temp.txt");
            Properties prop = new Properties();
            
            try {
                prop.load(in);
                System.out.println(prop.get("key"));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    }

    web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <servlet>
        <servlet-name>HttpServletDemo02</servlet-name>
        <servlet-class>com.fl.servlet.HttpServletDemo02</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      
      <servlet-mapping>
        <servlet-name>HttpServletDemo02</servlet-name>
        <url-pattern>/servlet/HttpServletDemo02</url-pattern>
      </servlet-mapping>
    </web-app>

    temp.txt:

        key=dddd;

     

    输出结果:

    获得classpath目录下的文件:

    下面有两种方法:

    InputStream in = sc.getResourceAsStream("/WEB-INF/classes/temp.txt");//这种方式不太好
    InputStream in = this.getClass().getClassLoader().getResourceAsStream("temp.txt");//类加载方式,不依赖ServletCntext,任何类都可以获得classpath下的文件。

  • 相关阅读:
    07_Go语言 ( 切片)
    06_Go语言( 数组)
    05_Go语言( 流程控制)
    04_Go语言( 运算符)
    02_Go语言(变量和常量)
    01_Go语言(环境的搭建)
    云电脑直播简单指南
    统信UOS共享打印机配置
    #插头dp#洛谷 5074 Eat the Trees
    #状压dp#洛谷 3959 [NOIP2017 提高组] 宝藏
  • 原文地址:https://www.cnblogs.com/cq0143/p/10668331.html
Copyright © 2011-2022 走看看