当视图层(jsp页面)需要用到资源时,需要获取资源的路径,引用的资源一般不会在同一个目录下,这时如果采用传统路径去找对应的css,js文件,可以会采用../的方式,../代表上一层目录,如在jsp页面引用mybody.css文件。路径../../css/mybody.css就是当前jsp文件的上一层目录的上一层目录对应的image下的123.jpg文件。
<link href="../../css/mybody.css" type="text/css"/ rel="stylesheet">
![]()
但是这种方式显然不合理,需要一层层后退比较繁琐,而且如果同个jsp页面多处引用也不方便。所以实际开发一般很少用../来找资源。
那么我们可以采用绝对路径,如../../css/mybody.css我们可以采用"http://127.0.0.1:8080/crm/../../css/mybody.css"类似这样的路径。
<link href="http://127.0.0.1:8080/crm/css/mybody.css" type="text/css"/ rel="stylesheet">
但是这样又显得很复杂,所以我们可以利用<base/>标签,这样在之后的路径书写时都会基于这个base路径
<base href="http://127.0.0.1:8080/crm">
<link href=css/mybody.css" type="text/css"/ rel="stylesheet">
![]()
实际方法——动态获取路径: 协议,ip地址,端口号和应用名称都不应该写死,所以我们可以采用动态获取的方式来获取
<%
String basePath
=request.getScheme+"://"+request.getServerName+":"+request.getServerPort()+request.getContextPath+"/"/>
%>
<base href="<%=basePath%>">
request.getScheme():返回当前页面使用的协议;默认返回的是http,但是当SSL时返回https;
request.getServerName():返回当前页面所在的服务器的ip地址
request.getServerPort():返回当前页面所在的服务器使用的端口,如8080
request.getContextPath():返回当前应用的名字,如/crm
根据以上方法结合base标签就可以简单方便地实现路径的获取了。
文章讲述了在JSP页面中引用资源时,如何避免繁琐的相对路径和复杂的绝对路径。推荐使用<base>标签结合动态获取当前应用的基路径,通过request对象的getScheme(),getServerName(),getServerPort()和getContextPath()方法来构建路径,使得路径管理更加简洁和灵活。
697

被折叠的 条评论
为什么被折叠?



