JavaWeb项目的文件目录

java 相对路径转换为绝对路径 javaweb相对路径_javaweb

在地址栏输入:http://localhost:8080/route/loginServlet

java 相对路径转换为绝对路径 javaweb相对路径_根目录_02

可以直接访问到配置的Servlet

在地址栏输入:http://localhost:8080/route/index.jsp

可以访问到webapp下面的index.jsp文件

java 相对路径转换为绝对路径 javaweb相对路径_服务器_03

(可以理解webapp下面的index.jsp文件和LoginServlet是在同一目录下)

总结:

以下概念解释以示例项目为例!!!

服务器(站点)根目录: http://localhost:8080/

Web应用根目录: http://localhost:8080/route(项目名)/

前端页面在服务器上的地址:

1.前端页面直接在WebContent目录(可能不同)下: Web应用的根目录/前端页面名

2.前端页面直接在WebContent目录下的一级或者多级文件夹下: Web应用的根目录/文件夹层级/前端页面名

Servlet在服务器上的地址:

Web应用的根目录/servlet名

相对路径

若在访问路径的最前端没有加上“/”,那就是使用相对路径

相对路径就是相对于当前文件的路径

测试例子:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进入LoginServlet的doGet方法");
    }
<servlet>
    <servlet-name>loginServlet</servlet-name>
    <servlet-class>com.kuang.servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>loginServlet</servlet-name>
    <url-pattern>/loginServlet</url-pattern>
  </servlet-mapping>

例子:

java 相对路径转换为绝对路径 javaweb相对路径_服务器_04

在webapp文件夹下面的index.jsp文件中

java 相对路径转换为绝对路径 javaweb相对路径_服务器_05

点击提交按钮后,就会提交到LoginServlet中,结果可以访问到LoginServlet

java 相对路径转换为绝对路径 javaweb相对路径_javaweb_06

在webapp文件下面的sys文件夹中建login.jsp文件(内容和index,jsp文件中的一样)

java 相对路径转换为绝对路径 javaweb相对路径_服务器_07

点击提交按钮:

java 相对路径转换为绝对路径 javaweb相对路径_java 相对路径转换为绝对路径_08

报404错误:

http://localhost:8080/route/sys/loginServlet

因为使用的是相对路径,所以前面就有/sys,但这个路径下没有文件与之对应,所以报404错误

java 相对路径转换为绝对路径 javaweb相对路径_javaweb_09

和前面的:http://localhost:8080/route/loginServlet比较发现多个**/sys**

绝对路径

若在访问路径的最前端加上“/”,那就是使用绝对路径

相对路径就是相对于当前问价的路径,那相对路径前缀就会被“清零”,路径从最初位置开始。

绝对路径的最初位置路径是什么呢?就是服务器的IP地址+端口号,比如在本机访问,那就是http://localhost:8080。也就是说使用绝对地址,那访问所写的路径将会被拼接到http://localhost:8080之后。

在web.xml的url-pattern标签:标签中的 "/"放在首位,代表的是Web应用根地址

在jsp与servlet页面中 “/” 有着不同的意思

  • 在JSP中: “/” 代表服务器(站点)根目录
  • 在Servlet中: “/” 代表Web应用的根目录

需要注意的是:

("/"在浏览器端被解析成服务器根目录

"/"在服务器端被解析成Web应用的根目录)

请求转发与请求重定向的用法有所不同

request.getRequestDispatcher("/a/a.jsp").forward(request,response);

“/a/a.jsp"中的第一个”/" 是Web应用根路径—相当于–>http://localhost:8080/route/a/a.jsp

response.sendRedirect("/b/b.jsp");

因为重定向中的方法是传递给浏览器,用于重新发送请求的,而在浏览器端 "/"代表 服务器目录 ,所以上述会重定向到 http://localhost:8080/b/b.jsp

response.sendRedirect("/route/b/b.jsp")这样浏览器重新请求的地址就为:http://localhost:8080/route/b/b.jsp

拿前面报404的例子来说明

在action的前面加上**"/"**:

java 相对路径转换为绝对路径 javaweb相对路径_Web_10

点击提交后:

java 相对路径转换为绝对路径 javaweb相对路径_Web_11

提交后的路径就是:

http://localhost:8080 +/loginServlet

改进:在 /loginServlet前面加上/route(/+工程名)

java 相对路径转换为绝对路径 javaweb相对路径_服务器_12

点击提交后可以访问到LoginServlet配置的LoginServlet:

java 相对路径转换为绝对路径 javaweb相对路径_服务器_13

控制台输出:

java 相对路径转换为绝对路径 javaweb相对路径_根目录_14

总结:

1、绝对路径就是在路径开头加“/”,那路径的起始就是服务器IP地址;

2、而相对路径就是开头**不加“/”,**而起始就是发起跳转的文件的所在路径;