JavaWeb项目中用Servlet实现学生签到和下载文件功能,过程中遇到了一些路径上的问题,做个总结。
目录结构:
学生签到实验(将从前端收到的学生签到信息记录在指定文件中,向login.txt中记录学生签到信息):1、多次试验发现,用相对路径(String path="/login.txt")可以找到文件,但是写不进去内容;2、用String path=this.getServletContext().getRealPath("/login.txt")方法获取绝对路径,可以写入,但是内容是记录在部署目录中,原因如下:
输出this.getServletContext().getRealPath("/login.txt")(或去掉斜杠)语句,得到:D:\myapps\my-ideaworksapce\JavaWebProject\out\artifacts\testServlet_war_exploded\StudentLoginServlet
可以看到,绝对路径被定位到了部署路径中。因为tomcat上运行的项目是编译、部署完成的项目
3、指定绝对路径D:\myapps\my-ideaworkspace\JavaWebProject\web\login.txt,可以在该目录下的文件中写入内容,而且部署路径out/artifacts/testServlet_war_exploded/WEB-INF/classes/login.tx