一. WEB应用中的路径问题
1. 规律:
(1) 首先要全部加斜杠"/"。
(2) 思考下目标资源的地址target.html,要想清楚这个目标资源究竟是给谁用的,也就是说谁去跳转到这个html
页面。有两种可能:
① 是提供给服务器使用的:那么"/"表示在当前web应用的根目录。也就是说已经在WebRoot目录下,服务器内
部的行为一定是在当前项目下去跳转的,服务器不可能调到其他项目。
② 是给浏览器使用的:那么"/"表示在webapps的根目录下,webapps下还没有确定是具体哪一个项目。给浏览
器用前面一定要加上项目名称。
注意:最好不要去使用相对路径,比如:..
2. 实例
@WebServlet("/PathDemo")
public class PathDemo extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
/*
* 1.转发中的路径:目标资源是给服务器使用的。
*/
request.getRequestDispatcher("/target.html").forward(request, response);
/*
* 2.请求重定向中的路径,
*/
response.sendRedirect("/czjy_day11/target.html");
/*
* 3.html中的超链接href:超链接是浏览器发出超链接请求,
*/
response.getWriter().write("<html><body><a href = '/czjy_day11/target.html'>超链接</a></body></html>");
/*
* 4.html页面中的form提交地址:也是浏览器发出请求,而不是服务器内部跳转
*/
response.getWriter().write(
"<html><body><form action='/czjy_day11/target.html'><input type = 'submit'/></form></body></html>");
}
}
二. 读取WEB应用下的资源文件(比如:src目录下的properties)
1.“.”的含义
注意:Java项目和WEB项目,它们项目不一样,所以"."代表的含义也不一样。"."表示相对路径下的当前路
径,".."表示上一层路径。
(1) Java项目中,"."表示的相对路径是相对于Java命令运行的目录,"."代表在Java项目的根目录下开始。Java命
令运行的目录就是代表"."所在的目录。也就是说Java命令在哪里运行,那么这个"."就表示在哪里
(2)在WEB项目中,"."也是代表java命令运行的目录,java运行目录在哪里?在tomcat/bin目录下。所以,"."代
表在tomcat/bin目录下开始,所以不能使用这种相对路径。
2. 实例:
@WebServlet("/ResourceDemo")
public class ResourceDemo extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 读取文件
// File file = new File("./src/db.properties");报错,找不到
/*
* 使用web应用下加载资源文件的方法
*/
/*
* //1.使用getRealPath读取,返回资源文件的绝对路径。
* String path = this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");
* "/"代表在czjy_day11目录下。
* File file = new File(path);
* FileInputStream in = new FileInputStream(file);
*/
// 2.getResourceAsStream() 得到资源文件,返回的是输入流。
InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties prop = new Properties();
// 读取资源文件
prop.load(in);
String user = prop.getProperty("user");
String password = prop.getProperty("password");
System.out.println("user=" + user);
System.out.println("password=" + password);
}
}