javaweb中关于引用css和image的路径问题

今天,遇到了一个很奇怪的现象,首页的jsp可以使用相对路径来访问样式表和图片(类似这种的:image/xx.png),可是另一个jsp必须用request.getContextPath()/image/xxx.png才能访问到,知道是路径问题。想了N久,终于知道,原来我的首页是servlet的request.getRequestDispatcher("jsp/layout/main.jsp").forward(request, response);这个玩意转过来的,这种方法转向类似管道,即使跳转main.jsp,但是你的地址还是定位在基于servlet的,而servlet的地址在服务器已解析,是基于项目名的,所以你可以直接使用image/xx.png。

而我的另一个jsp,则是正常的jsp之间的跳转,此时如果再使用image/xx.png,客户端就会在jsp所在的目录中来寻找,就是基于这个jsp的地址来相对寻找,所以在这个jsp中你就要获取项目的根路径,在根路径下来相对寻找。


为了项目易维护,建议别轻易使用相对路径,建议如下:

方法一(利用base  ):

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    

		<link rel="stylesheet" type="text/css" href="css/style.css">

  </head>

方法二:标签

<c:set var="path" value="${pageContext.request.contextPath}"/>
<link href="${path}/css/layout/style.css" rel="stylesheet" type="text/css" />

好了,如果还有其它问题,共同交流哈,如果有问题请指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值