A. 在java中怎麼訪問web-inf 目錄下的jsp頁面。
外部訪問來說,web-inf下的文件都是不可見的(即不能通過url獲得web-info下的任何文件),所以,直接訪問jsp是不可能的。可以使用view層框架(如struts)來提供jsp服務,將jsp文件放到web-info下避免客戶直接訪問到頁面,同時使用struts來進行jsp文件提取,並將編譯好的結果發送到客戶端。
WEB-INF是Java的WEB應用的安全目錄。所謂安全就是客戶端無法訪問,只有服務端可以訪問的目錄。如果想在頁面中直接訪問其中的文件,必須通過web.xml文件對要訪問的文件進行相應映射才能訪問。
(1)javaweb訪問路徑擴展閱讀:
WEB-INF 目錄的作用:
/WEB-INF/web.xml
Web應用程序配置文件,描述了 servlet 和其他的應用組件配置及命名規則。
/WEB-INF/classes/
包含了站點所有用的 class 文件,包括 servlet class 和非servlet class,他們不能包含在 .jar文件中(是該目錄不能包含在.jar文件中)。
/WEB-INF/lib/
存放web應用需要的各種JAR文件,放置僅在這個應用中要求使用的jar文件,如資料庫驅動jar文件。
/WEB-INF/src/
源碼目錄,按照包名結構放置各個java文件。
/WEB-INF/database.properties
資料庫配置文件
/WEB-INF/tags/
存放了自定義標簽文件,該目錄並不一定為 tags,可以根據自己的喜好和習慣為自己的標簽文件庫命名,當使用自定義的標簽文件庫名稱時,在使用標簽文件時就必須聲明正確的標簽文件庫路徑。
例如:當自定義標簽文件庫名稱為 simpleTags 時,在使用 simpleTags 目錄下的標簽文件時,就必須在 jsp 文件頭聲明為:<%@ taglibprefix="tags" tagdir="/WEB-INF /simpleTags" % >。
/WEB-INF/jsp/
jsp 1.2 以下版本的文件存放位置。改目錄沒有特定的聲明,同樣,可以根據自己的喜好與習慣來命名。此目錄主要存放的是 jsp 1.2 以下版本的文件,為區分 jsp 2.0 文件,通常使用 jsp 命名,當然你也可以命名為 jspOldEdition 。
/WEB-INF/jsp2/
與 jsp 文件目錄相比,該目錄下主要存放 Jsp 2.0 以下版本的文件,當然,它也是可以任意命名的,同樣為區別 Jsp 1.2以下版本的文件目錄,通常才命名為 jsp2。
META-INF
相當於一個信息包,目錄中的文件和目錄獲得Java 2平台的認可與解釋,用來配置應用程序、擴展程序、類載入器和服務
manifest.mf文件,在用jar打包時自動生成。
B. java web怎麼訪問伺服器指定路徑
可以把文件目錄配置在web.xml文件的初始化參數中, 通過ServletAPI讀取文件目錄
比如
定義一個Properties文件保存相關配置
#可以上傳文件的後綴名
extensions=pptx,docx.doc,txt,jpg,jar
#單個文件的大小1M
fileMaxSize=1048576
#總共上傳文件大小5M
totalFileMaxSize=5242880
#文件保存路徑
filePath=z:/temp
#臨時文件路徑
tempDir=z:/temp/temp
使用Listener在伺服器啟動時載入配置信息
1
2
3
4
5
6
7
8
9
10
11
ServletContext context = event.getServletContext();
InputStream inputStream = context
.getResourceAsStream("/WEB-INF/classes/file/upload/commons/uploadConfig.properties");
Properties properties = new Properties();
try {
properties.load(inputStream);
context.setAttribute("fileConfig", properties);
System.out.println("properties = " + properties.size());
} catch (IOException e) {
e.printStackTrace();
}
在你上傳文件時通過配置文件讀取路徑保存
String filePath = ((Properties) this.getServletContext().getAttribute("fileConfig"))
.getProperty(FileUploadConstants.FILE_PATH);
C. javaWeb項目路徑問題
你先搞清楚一個標準的 Java Web application 的目錄結構
所謂的 webroot 下面是可以放任何的可以展示的內容,包括 jsp 和圖片、css 之類的
WEB-INF 目錄下的內容是禁止最終用戶直接訪問的,裡面會有 classes 和 lib 目錄。分別放執行用到的 class 和 jar 包。標准來說執行的時候,是沒有 src 目錄的。
另外,也不明白你為啥需要獲取這些路徑
D. 關於java web href中地址兩邊加號
你得你的項目的訪問路徑名稱,有的項目是無路徑訪問,即直接h
t
t
p://ip:埠號/add.action,有的項目帶路徑發布,h
t
t
p://ip:埠號/路徑/add.action,所以你第一步得知道這個。
假如你的項目路徑叫test,你在html中a標簽就寫href="/test/add.action?id=1"
親,這么辛苦的回答,記得採納哦!
E. Java web項目訪問路徑問題。求解啊!
images的url寫成src="${pageContext.request.contextPath}/images/logo.jpg"
一般會把${pageContext.request.contextPath}這部分提取出來,在jsp寫成:
<% String path = request.getContextPath();%>
如圖:
則images路徑可以寫成src="<%=path%>/images/logo.jpg"
訪問login.jsp頁面的話,寫成http://ip:埠號/CityInfo/pages/login.jsp
F. java web項目 相對路徑怎麼寫
servlet裡面通過String basePath=session.getServletContext().getRealPath("/");獲取webRoot目錄真實路徑。
比如d:\tomcat 6\webapps\項目名
webRoot下面的resources目錄通過File path = new File(basePath, "resources");獲取
其它同理
如果是jsp的話,獲取resources目錄直接通過「<%=request.getContextPath()%>/resources」獲取
G. java web中的路徑問題
如果我沒猜錯,樓主應該建的是dynamic web project。這個和你在tomcat裡面的配置有關。
如果樓主用myeclipse建立dynamic web project,然後自動部署,它實際上是在
<Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
裡面添加了個上下文環境即:
<Context path="/工程訪問名(並不一定和你的工程名一致,url訪問時需採用此訪問名)" reloadable="true" docBase="你的工程目錄" />,這樣你的工程訪問的時候,如果是在jsp的話,"/"就代表了工程所在的上下文環境localhost,此時你的工程就相當於localhost裡面的一級目錄而已,這個工程沒有獨立的訪問域名。
另外你tomcat裡面還有一種配置方式就是直接給你的工程創建一個獨立的訪問域名。
<Host name="工程域名" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" reloadable="true" docBase="你的工程所在的目錄" />
</Host>。這樣你的工程就可以通過一個獨立的域名訪問到,在jsp中,"/"依然是工程所在的上下文環境,但是由於你配置的工程不在依賴於其他Host的上下文環境,所以此時的"/"也就代表了你的工程根目錄,此時和struts裡面的"/"是一樣的用法。
再來說說struts裡面的"/",struts為了防止由於在上述tomcat配置中不同所導致的不同的訪問方式,它特地將"/"解析成當前工程,而不是獲取當前工程所在的上下文環境。
H. java web工程,讀取配置文件路徑問題
讀取配置文件 , xxx.properties放在webroot/WEB-INF/classes/目錄下
首先將配置文件轉換成InputStream,有兩種方式,原理一樣,都是通過類載入器得到資源:
(1)InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("xx.properties");
(2) InputStream inputStream =
this.getClass() .getClassLoader().getResourceAsStream( "xx.properties" );
調用對象的getClass()方法是獲得對象當前的類類型,這部分數據存在方法區中,
而後在類類型上調用 getClassLoader()方法是得到當前類型的類載入器,我們知道在Java中所有的類都是通過載入器載入到虛擬機中的,而且類載入器之間存在父 子關系,就是子知道父,父不知道子,這樣不同的子載入的類型之間是無法訪問的(雖然它們都被放在方法區中),所以在這里通過當前類的載入器來載入資源也就 是保證是和類類型同一個載入器載入的。
最後調用了類載入器的getResourceAsStream()方法來載入資源。
(3) 然後載入配置文件,讀取屬性值
Properties prop = new Properties();
prop.load(input);
String value = prop.getProperty("PropertyName");
input.close();
I. java web project 路徑問題
1、「/」表示網站的根目錄
2、"/"並非等於http:\\localhost:8080\工程名\WebRoot\ ,而是等於http://localhost:8080/(http://域名:埠號/)
3、對於WebRoot 而言,只是myeclipse的一個虛擬目錄,在編譯之後根本不存在
4、你不應該從myeclipse中看目錄結構,而是應該在tomcat中看目錄結構,因為tomcat中目錄的結構才真正是網站目錄結構的。