路径问题

什么是类路径?

在这里插入图片描述
在项目中创建在src目录下的文件都会出现在Tomcat目录下的/项目名/WEB-INF/classes目录下。其中类文件会编译成.class文件,其他文件则原封不动的放在该路径下。
在这里插入图片描述

java代码中获取类路径(classes文件夹)

方案一:classload

package cn.itcast.web.servlet;

public class Hservlet extends HttpServlet {


	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
               ClassLoader classLoader=this.getClass().getClassLoader();
               InputStream isInputStream=classLoader.getResourceAsStream("a.txt");
                 
                 
}
	}

方案二: class

package cn.itcast.web.servlet;
public class Hservlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		Class c = this.getClass();
		//获取classes路径下文件
		InputStream isInputStream = c.getResourceAsStream("/a.txt");
		// 获取该类路径下的文件/classes/cn/itcast/web/servlet
		// InputStream isInputStream2=c.getResourceAsStream("a.txt");

	}
}

这里要注意加/和不加/的区别。
方案三:SercletContext
ServletContext默认是在WEB-INF目录

package cn.itcast.web.servlet;


public class Hservlet extends HttpServlet {

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

		ServletContext servletContext = this.getServletContext();

		InputStream isInputStream = servletContext
				.getResourceAsStream("/classes/a.txt");
		Set<String> set = servletContext.getResourcePaths("/");
		System.out.println(set);
	}
}

另外ServletContext还有一个方法:servletContext.getResourcePaths("/");
可以获取所有文件路径,以Set<String>的形式返回。
注:该方法参数要带“/”

Tips:可在src中加../跳到上一级目录

WEB.XML中的(Servlet路径)

以/开头相对于当前项目路径

转发和包含

以/开头相对于当前项目路径,不以/开头相对于当前Servlet

重定向、页面超链接、表单路径

以"/"开头相对于当前主机,即http://localhost:8080/,所以要手动添加项目名

ServletContext

相对于当前项目目录,即index.jsp所在目录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值