2013-11-01 13 views
18

Görünüm katmanının JSP olduğu J2EE projelerinin sayısı üzerinde çalıştım. Çoğu projede, betikteki contextPath kullanarak harici kaynakları, yani görüntüleri, javascript, jsp, css vb. kod aşağıdaki gibidirNasıl kullanılır? "<% = Request.getContextPath()%>" daha iyi "../"

, yukarıdaki jsp itibaren

<%@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"> 

, burada benim savaşta benim aynı proje paket yani içindedir dış kaynaklar ithal ediyorum. Şimdi

kod aşağıdaki gibi yazılabilir JSP yukarıdaki aynı

, Burada da benim savaşta mevcut kaynakların referans am İkinci örnekte
<%@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"> 

. Şimdi yukarıdaki iki olgunun ikisi dikkate

, ilk vaka en iyi uygulama olarak daha çok önem verilir.

Neden?

ve ikinci davanın kullanılmasının sakıncaları nelerdir?

ikinci harf kullanarak mı, projemiz daha sıkı contextPath ile birleştiğinde olur?

Lütfen bana açıklayınız.

+0

İkinci durumda bağlam yolu nerede? –

+0

yanlış iş parçacığı xD –

cevap

45

request.getContextPath()- iadeler, uygulamanın kök yolunu, ../ iken - Bir dosyanın üst dizini döndürür. her zaman başvurunuzun kökü işaret edecek şekilde

Sen request.getContextPath() kullanın. Eğer jsp dosyanızı bir dizinden diğerine taşıyacak olursanız, hiçbir şeyin değiştirilmesine gerek yoktur. Şimdi, ikinci yaklaşımı düşünün. Eğer jsp dosyalarını bir klasörden diğerine taşıyacak olursanız, dosyalarınızı attığınız her yerde değişiklik yapmanız gerekir. Ayrıca

, request.getContextPath (kullanmanın daha iyi bir yaklaşım) bir değişkene '() request.getContextPath' ayarlayabilir ve yolunu atıfta için bu değişkeni kullanmak olacaktır.

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

PS- Anlayabildiğim tek neden budur. Daha fazla önemi olup olmadığını bilmiyorum.

+1

"$ {pageContext.servletContext.contextPath}" ve önerilerinizden farklı mı? Hangisi kullanılmalı ve neden? sunucu uygulaması kabı birden fazla bağlam yolları kullanarak erişilir için tek bir uygulama yani birden fazla içerik yoluna göre bir bağlam eşleşirse –

+0

$ {pageContext.servletContext.contextPath} ve $ {pageContext.request.contextPath}, bir şartla hariç aynı contextPath verecektir. Böyle bir durumda $ {pageContext.servletContext.contextPath} kullanılması önerilir. –

+0

Ayrıca, request.getContextPath() işlevini kullanmanın daha iyi bir yaklaşımı, 'request.getContextPath()' değişkenini bir değişkene ayarlamak ve bu değişkeni yolunuza başvurmak için kullanmak olacaktır. Birisi onun neden olduğunu vurgulayabilir mi? –

İlgili konular