web开发过程中的路径问题

首先明白什么是绝对路径,什么是相对路径

简单来说:

绝对路径就是以电脑的盘符为根目录

相对路径是以项目文件为根目录

使用绝对路径还是相对路径是看开发的项目是否需要移动

以此为基础看下面内容

web应用开发下是WebRoot目录

一般用request.getContextPath()来解决,返回的是相对于项目的路径,在请求转发和请求重定向

注:  在web开发过程中,由于开发和部署使用的不是同一个路径,开发是在workspace下,部署是部署到服务器,由于不知道部署的绝对路径,在读取资源时,需要指定该资源的绝对路径,解决办法就是通过方法动态来动态获取当前应用所在的绝对路径

方法:  String path = this.getServletContext().getRealPath("相对于web应用的路径");返回的是该资源的绝对路径

如果没用Servlet则利用类加载器来加载资源,要求传入的文件路径必须是相对于类加载器的路径

xxx.class.getClassLoader().getResource("/资源文件").getPath()  这种方法只有在WebRoot/WEB-INF/classes下才能生效,如果打包,则失效

String path = this.getServletContext().getRealPath("相对于web应用的路径");

System.out.println("path:"+path);

String path1 = RegistServlet.class.getClassLoader().getResource("").getPath();

System.out.println("path1"+path1);

path:D:\tomcat\webapps\Test\

path1:/D:tomcat/webapps/Test/WEB-INF/classes/

两个方式产生的相对路径都是相对于上面的结果的路径

ServletContext方式生成的是基于Web项目的路径

类加载器生成的是相对于字节码文件的路径

注:  在用myeclipse工具开发过程中WEB-INF/classes是不可见的,只有在工作空间下可以找到

问题小解决:

使用mysql中遇到一个问题,rs.executeQuery()方式返回的结果集,在只有一条结果的情况下

next()指针遍历

if(rs.next()){

    如果上面输出了一次rs.next(),则第二次值为false,今天在这里栽了两个坑

}else{

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值