Servlet--获取项目运行目录getRealPath(一)
Servlet--获取项目运行目录getRealPath(一)
一、getRealPath 作用
1、获取项目运行目录的路径。
二、没有获取项目运行目录存在的问题
1、项目在本地开发后,项目中的文件路劲写成本地的路径。例如:C://tomcat/files/wenjian.txt 在本地访问可以找到改文件。
2、项目部署到其他设备后,由于文件的路径指向本地路径,就会导致文件找不到报错。
三、解决文件找不到路径报错方法
1、在配置路径的时候,需要写一个相对路径。例如,先获得项目路径在获得文件路径 。这样不论项目放在什么路径下,访问的时候都会先去找项目路径,之后在项目路径下找到文件路径。
四、获取项目路径实现读取文件
1、创建一个servlet类,接受用户请求获得项目运行的路径,找到文件路径后读取文件内容。
-
package realpath;
-
-
import java.io.BufferedReader;
-
import java.io.FileInputStream;
-
import java.io.IOException;
-
import java.io.InputStreamReader;
-
import java.io.PrintWriter;
-
-
import javax.servlet.ServletException;
-
import javax.servlet.http.HttpServlet;
-
import javax.servlet.http.HttpServletRequest;
-
import javax.servlet.http.HttpServletResponse;
-
-
public class realServlet extends HttpServlet {
-
-
public void doGet(HttpServletRequest request, HttpServletResponse response)
-
throws ServletException, IOException {
-
-
response.setContentType("text/html;charset=UTF-8");
-
PrintWriter out = response.getWriter();
-
//获取项目的运行目录
-
String pathd = request.getRealPath("");
-
out.println("项目运行的目录"+pathd+"<br/>");
-
//获取项目运行目录下的文件
-
String pathtest = request.getRealPath("/files/test.txt");
-
out.println("项目运行目录下的文件路径"+pathtest+"<br/>");
-
//读取文件内容
-
BufferedReader br =
-
new BufferedReader(
-
new InputStreamReader(
-
new FileInputStream(pathtest),"UTF-8"));
-
String line = null;
-
while((line=br.readLine())!=null){
-
out.println(line+"<br/>");
-
}
-
}
-
-
-
public void doPost(HttpServletRequest request, HttpServletResponse response)
-
throws ServletException, IOException {
-
-
response.setContentType("text/html");
-
PrintWriter out = response.getWriter();
-
-
}
-
-
}
2、web.xml配置文件
-
<?xml version="1.0" encoding="UTF-8"?>
-
<web-app version="3.0"
-
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_3_0.xsd">
-
<servlet>
-
<description>This is the description of my J2EE component</description>
-
<display-name>This is the display name of my J2EE component</display-name>
-
<servlet-name>realServlet</servlet-name>
-
<servlet-class>realpath.realServlet</servlet-class>
-
</servlet>
-
-
<servlet-mapping>
-
<servlet-name>realServlet</servlet-name>
-
<url-pattern>/realservlet</url-pattern>
-
</servlet-mapping>
-
-
</web-app>
3、在项目上创建一个文件夹,并新建一个文件,输入内容(内容可以随意写)
4、访问测试是否能够输出项目运行路径和读取文件信息内容
5、注意:
如果读取文件内容中文是乱码,那么是由于系统默认新建文件都是本地的ANSI编码格式,项目都是UTF-8编码格式。处理方式如下:
在tomcat目录下找到files文件夹并使用记事本编辑创建的文件,选择另存为编码格式选择UTF-8.保存后,再次访问乱码解决
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/75565763
- 点赞
- 收藏
- 关注作者
评论(0)