当前位置 : 主页 > 编程语言 > java >

jsp – 如何使用“<%= request.getContextPath()%>”比“../”

来源:互联网 收集:自由互联 发布时间:2021-06-25
我已经在数量的J2EE项目中工作,其中视图层是JSP.在大多数项目中,我看到我们使用scriptlet中的contextPath来引用外部资源,即图像, javascript,jsp,css等. 代码如下, %@page contentType="text/html" pageEnc
我已经在数量的J2EE项目中工作,其中视图层是JSP.在大多数项目中,我看到我们使用scriptlet中的contextPath来引用外部资源,即图像, javascript,jsp,css等.

代码如下,

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>GC Demo Using HandlebarsJS</title>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/jqueryUI-AutoComplete/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/jqueryUI-AutoComplete/jquery-ui-1.10.3.custom.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/handlebarsJS/handlebars.js"></script>
    <link rel="stylesheet" type="text/css" href="${pageContext.servletContext.contextPath}/js/jqueryUI-AutoComplete/jquery-ui-1.10.3.custom.css">

在上面的jsp中,我正在导入在同一个项目包中的外部资源,即在我的战争中.

现在同样以上JSP可以写成如下代码,

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>GC Demo Using HandlebarsJS</title>
    <script type="text/javascript" src="../js/jqueryUI-AutoComplete/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="../js/jqueryUI-AutoComplete/jquery-ui-1.10.3.custom.js"></script>
    <script type="text/javascript" src="../js/handlebarsJS/handlebars.js"></script>
    <link rel="stylesheet" type="text/css" href="../js/jqueryUI-AutoComplete/jquery-ui-1.10.3.custom.css">

在第二个例子中,我也参考了我战争中的资源.

现在考虑上述两种情况,第一种情况作为最佳实践具有更重要的意义.

为什么?

使用第二种情况有什么缺点?

使用第二种情况,我们的项目与上下文路径更紧密耦合吗?

请向我解释

request.getContextPath() – 返回应用程序的根路径
../ – 返回文件的父目录.

您使用request.getContextPath(),因为它将始终指向您的应用程序的根目录.如果要将jsp文件从一个目录移动到另一个目录,则无需更改.
现在考虑第二种方法.如果要将jsp文件从一个文件夹移动到另一个文件夹,则必须在引用文件的每个位置进行更改.

另外,使用request.getContextPath()的更好的方法是在变量中设置’request.getContextPath()’,并使用该变量来引用你的路径.

<c:set var="context" value="${pageContext.request.contextPath}" />
<script src="${context}/themes/js/jquery.js"></script>

PS-这是我能弄清楚的一个原因.不知道是否有更重要的意义.

网友评论