jsp页面路径问题

在编写jsp页面的时候经常会遇到调用静态资源问题,每当调用静态资源我们都需要填写相应的路径,首先我们来了解一下相对路径和绝对路径的概念:

相对路径:相对于当前页面的路径
下面给出案例
资源文件的目录如下:
在这里插入图片描述
测试页面的代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>创建超链接解决路径问题</title>
</head>
<body>
    <a href="a/login.jsp">aaaaa</a>
</body>
</html>

跳转页面的代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login</title>
</head>
<body>
    <a href="../test.jsp">bbbb</a>
</body>
</html>

解释:跳转页面与测试页面不在同一层目录下,跳转页面在a文件夹下,而a文件夹与测试页面在同一层,所以当测试页面到跳转页面,路径写为a/login.jsp,而当测试页面要跳转到测试页面,需要返回上一层目录,需要用到…/来返回上一层目录

缺点:
1、资源的位置不可以随便更改
2、需要使用…/的方式进行文件夹的跳出,如果目录结果比较深,可以操作起来比较麻烦



绝对路径: 在请求路径的前面加/,表示当前服务器的根路径,使用的时候要添加/虚拟项目名称/资源目录

查看当前服务器的根路径
在这里插入图片描述
测试页面的代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>创建超链接解决路径问题</title>
</head>
<body>
    <a href="/test/a/login.jsp">aaaaa</a>
</body>
</html>

跳转页面的代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login</title>
</head>
<body>
    <a href="/test/test.jsp">bbbb</a>
</body>
</html>

解释:不是通过当前页面进行跳转,所以不用考虑得十分复杂,直接/加服务器的根目录加上jsp页面的路径就可以了


改进版:

添加如下代码:

<%
   String path = request.getContextPath();
   System.out.println(path);
   String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
   System.out.println(basePath);
   %>
<base href="<%=basePath%>">

添加如下代码后,以后调用资源路径的时候就不需要添加服务器的根路径了,添加资源路径的时候,从当前项目的web目录下添加即可

样例:
测试页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String path = request.getContextPath();
    System.out.println(path);
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    System.out.println(basePath);

%>
<html>
<head>
    <base href="<%=basePath%>">
    <title>创建超链接解决路径问题</title>
</head>
<body>
    <a href="a/login.jsp">aaaaa</a>
</body>
</html>

跳转页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String path = request.getContextPath();
    System.out.println(path);
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    System.out.println(basePath);

%>
<html>
<head>
    <base href="<%=basePath%>">
    <title>login</title>
</head>
<body>
    <a href="test.jsp">bbbb</a>
</body>
</html>
发布了48 篇原创文章 · 获赞 0 · 访问量 673

猜你喜欢

转载自blog.csdn.net/weixin_44943485/article/details/105074270