JavaWeb的项目访问路径问题(相对路径和绝对路径)

本文详细介绍了JavaWeb项目中相对路径和绝对路径的区别及使用场景。通过实例展示了如何通过相对路径和绝对路径访问Servlet和JSP文件,并分析了在web.xml配置、JSP和Servlet中'/'的不同含义。最后总结了绝对路径和相对路径的特征及其在请求转发和重定向中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaWeb项目的文件目录

image-20210416184444057

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

image-20210416185249923

可以直接访问到配置的Servlet

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

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

image-20210416185336701

(可以理解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>

例子:

image-20210416184749413

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

image-20210416184842063

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

image-20210416185118179

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

image-20210416185721254

点击提交按钮:

image-20210416185803525

报404错误:

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

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

image-20210416190110114

和前面的: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的前面加上**"/"**:

image-20210416190954767

点击提交后:

image-20210416191022135

提交后的路径就是:

http://localhost:8080 +/loginServlet

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

image-20210416191258513

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

image-20210416191354751

控制台输出:

image-20210416191449635

总结:

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

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值