ServletContext读文件

传统读文件方法

package bull01.ServletContext.readfile;
/**
 * 这是传统读文件方法
 * 只能在tomcat的bin目录下建个目录(比如建个src,把db.properties放进去)把文件放进去才读的到。
 * 
 * 
 *  传统方式读取文件:
 * * 使用的是相对路径,相对的JVM的路径.
 * * 但是现在是一个web项目,相对于JVM的路径的.现在JVM已经交给tomcat管理.
 * @throws FileNotFoundException
 * @throws IOException
*/
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

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

public class ReadFileDemo1 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //两种读文件的方式,一种字节流,一种字符流。
        //InputStream is = new FileInputStream("src/db.properties");
        BufferedReader br = new BufferedReader(new FileReader("src/db.properties"));
        Properties prop = new Properties();
        //采用Properties和IO流结合的方式
        prop.load(br);

        String driverClass = prop.getProperty("driverClass");
        String url = prop.getProperty("url");
        String username = prop.getProperty("username");
        String password = prop.getProperty("password"); 

        System.out.println(driverClass);//com.mysql.jdbc.Driver
        System.out.println(url);//jdbc:mysql://localhost:3306/mydb
        System.out.println(username);//root
        System.out.println(password);//root
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    doGet(request,response);
    }

}

使用ServletContext中的getResourceAsStream读取.

package bull01.ServletContext.readfile;
/**
 * 
 * 使用ServletContext中的getResourceAsStream读取.
 * @throws FileNotFoundException
 * @throws IOException
 */

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

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 ReadFileDemo2 extends HttpServlet {


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //获取ServletContext对象
        ServletContext servletContext = this.getServletContext();
        //读取文件,返回一个流
        InputStream is =servletContext.getResourceAsStream("/WEB-INF/classes/db.properties");
        Properties prop = new Properties();
        prop.load(is);

        String driverClass = prop.getProperty("driverClass");
        String url = prop.getProperty("url");
        String username = prop.getProperty("username");
        String password = prop.getProperty("password");

        System.out.println(driverClass);//com.mysql.jdbc.Driver
        System.out.println(url);//jdbc:mysql://localhost:3306/mydb
        System.out.println(username);//root
        System.out.println(password);//root
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doGet(request,response);
    }

}

获取文件的磁盘绝对路径

package bull01.ServletContext.readfile;

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

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 ReadFileDemo3 extends HttpServlet {


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        //获取db.properties的磁盘绝对路径
        String realPath = servletContext.getRealPath("/WEB-INF/classes/db.properties");
        InputStream is = new FileInputStream(realPath);

        Properties prop = new Properties();
        prop.load(is);

        String driverClass = prop.getProperty("driverClass");
        String url = prop.getProperty("url");
        String username = prop.getProperty("username");
        String password = prop.getProperty("password");

        System.out.println(realPath);//D:\tomcat\apache-tomcat-7.0.69\webapps\Web10\WEB-INF\classes\db.properties
        System.out.println(driverClass);//com.mysql.jdbc.Driver
        System.out.println(url);//jdbc:mysql://localhost:3306/mydb
        System.out.println(username);//root
        System.out.println(password);//root


    }


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

}

采用类加载器方式读文件

package bull01.ServletContext.readfile;

import java.io.IOException;

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

public class ReadFileDemo4 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            ReadFileUtils.readFile();
    }


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

}
package bull01.ServletContext.readfile;

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

public class ReadFileUtils {

    public static void readFile() throws IOException {
        //使用类加载器来读取文件
        //类的加载器用来加载class文件,将class文件加载到内存中
        InputStream is = ReadFileUtils.class.getClassLoader().getResourceAsStream("db.properties");
        Properties prop = new Properties();
        prop.load(is);

        String driverClass = prop.getProperty("driverClass");
        String url = prop.getProperty("url");
        String username = prop.getProperty("username");
        String password = prop.getProperty("password");

        System.out.println(driverClass);//com.mysql.jdbc.Driver
        System.out.println(url);//jdbc:mysql://localhost:3306/mydb
        System.out.println(username);//root
        System.out.println(password);//root
    }

}

ServletContext读取全局初始化参数

package bull02.ServletContext.initparam;

import java.io.IOException;
import java.util.Enumeration;

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

public class ServletDemo1 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /**
         * 读取全局初始化参数
         */
        String username = this.getServletContext().getInitParameter("username");
        String password = this.getServletContext().getInitParameter("password");
        System.out.println(username + "---" + password);//root---123

        Enumeration<String> en = this.getServletContext().getInitParameterNames();
        while(en.hasMoreElements()) {
            //获取参数name
            String name = en.nextElement();
            //获取参数value
            String value = this.getServletContext().getInitParameter(name);
            System.out.println(name + "---" +value);
            //username---root
            //password---123
        }

        /**
         * 获得文件的MIME的类型
         */
        String type = this.getServletContext().getMimeType("1.jpg");
        System.out.println(type);//image/jpeg
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


    }

}

猜你喜欢

转载自blog.csdn.net/sinat_40662281/article/details/80377846