javaweb基础——一些相对路径

背景

初次接触javaweb是在大二的软件系统开发实训,当时老师给我们培训了几节课,一些路径啥的也都是模模糊糊就那么跟着些了,对一些相对路径的理解就是:我也不知道,我也没地方问。为了加深对相对路径的理解,也方便后来人,总结了一下javaweb中的一些相对路径。还有一个重点:就是希望能通过这一篇文章,举一反三,以后能大概推导相对路径大概是怎样?为什么是那样?
 

 总概

  1. 页面跳转的相对路径
  2. class文件的相对路径 
  3. 重定向中网页的相对路径


页面跳转的相对路径

我们在做第一个servlet和网页的交互时,一般就是如下的登录界面。在action那填的login代表什么?为什么是这样写了?

账号:
密码:

 

有从基础学servlet的同学应该知道下面这段代码是干什么的(没学过的自行百度servlet的配置,这里就不说了哈)


LoginServlet
com.hy.servlet.LoginServlet


LoginServlet
/LoginServlet

 

看到这可能很多人就会想,第一段代码的会不会是第二段代码中的那个了?那到底是哪个了?是servlet-name?还是servlet的类名?还是url-pattern? 揭晓谜底的时候到了,其实第一段代码的LoginServlet的绝对路径 http://localhost:8080/Demo4/LoginServlet 在我们学习servlet定义和配置时一定有直接访问过这样的地址,不知道你们有没有了解到,访问这个地址会在Demo4的web.xml查找/LoginServlet的,有则找到它的servlet-name,然后通过servlet-name找到servlet-class,最终找到servlet类所在。

 

 class文件的相对路径

首先创建了一个file文件夹和文件夹下的config.properties文件,如下所示

javaweb基础——一些相对路径_第1张图片

不知道有没有用getClassLoader加载过文件资源了?如下代码是getClassLoader加载config.properties文件的代码,还没用过的可以先不看。

/**
* 使用ClassLoad加载资源
* @return InputStream
*/
private InputStream read01() {
    return 
    this.getClass().getClassLoader().getResourceAsStream("../../file/config.properties");
}

这里为什么我们要用../../了?看tomcat下的项目文件可知,class的所在路径为D:\tomcat7\webapps\demo4\WEB-INF\classes

而config.properties所在路径为D:\tomcat7\webapps\demo4\file。到这基本就可以看出了。在this.getClass()的路径下,要想访问config.properties,首先就得退出两个文件夹(classes和WEB-INF),然后再访问file文件夹,然后才能访问file文件夹下的文件。

重定向中网页的相对路径

req.getRequestDispatcher("WEB-INF/showAll.jsp").forward(req, resp);

showAll.jsp文件的路径如下图

javaweb基础——一些相对路径_第2张图片

在tomcat发布项目的文件夹中, 则是这样的

javaweb基础——一些相对路径_第3张图片

可以看出,servlet请求转发时,是从stu路径下开始找的 

你可能感兴趣的:(随笔,java)