A. java的監聽程序如何獲取系統訪問的URL路徑
ServletContextListener
這個類
在web.xml
配置完成後
在tomcat
等
開啟的時候
會自動執行
void
contextInitialized(ServletContextEvent
arg)
這個方法
在這裡面
arg.getServletContext().getResource("/").toString()這個
好像可以獲得
你說的那個東西
不知道對不對
這個輸出的結果是
jndi:/ip/部署名稱不知道是不是你想要的
B. java解析出url請求的路徑和參數鍵值對類
解析url,本想用正則表達式處理,但正則表達式速度較慢。用split處理一下就可以了。
packageRequestPackage;
importjava.util.HashMap;
importjava.util.Map;
publicclassCRequest{
/**
*解析出url請求的路徑,包括頁面
*@paramstrURLurl地址
*@returnurl路徑
*/
publicstaticStringUrlPage(StringstrURL)
{
StringstrPage=null;
String[]arrSplit=null;
strURL=strURL.trim().toLowerCase();
arrSplit=strURL.split("[?]");
if(strURL.length()>0)
{
if(arrSplit.length>1)
{
if(arrSplit[0]!=null)
{
strPage=arrSplit[0];
}
}
}
returnstrPage;
}
/**
*去掉url中的路徑,留下請求參數部分
*@paramstrURLurl地址
*@returnurl請求參數部分
*/
(StringstrURL)
{
StringstrAllParam=null;
String[]arrSplit=null;
strURL=strURL.trim().toLowerCase();
arrSplit=strURL.split("[?]");
if(strURL.length()>1)
{
if(arrSplit.length>1)
{
if(arrSplit[1]!=null)
{
strAllParam=arrSplit[1];
}
}
}
returnstrAllParam;
}
/**
*解析出url參數中的鍵值對
*如"index.jsp?Action=del&id=123",解析出Action:del,id:123存入map中
*@paramURLurl地址
*@returnurl請求參數部分
*/
publicstaticMap<String,String>URLRequest(StringURL)
{
Map<String,String>mapRequest=newHashMap<String,String>();
String[]arrSplit=null;
StringstrUrlParam=TruncateUrlPage(URL);
if(strUrlParam==null)
{
returnmapRequest;
}
//每個鍵值為一組www.2cto.com
arrSplit=strUrlParam.split("[&]");
for(StringstrSplit:arrSplit)
{
String[]arrSplitEqual=null;
arrSplitEqual=strSplit.split("[=]");
//解析出鍵值
if(arrSplitEqual.length>1)
{
//正確解析
mapRequest.put(arrSplitEqual[0],arrSplitEqual[1]);
}
else
{
if(arrSplitEqual[0]!="")
{
//只有參數沒有值,不加入
mapRequest.put(arrSplitEqual[0],"");
}
}
}
returnmapRequest;
}
}
測試類
packageRequestPackage;
importjava.util.Map;
publicclassTestCRequest{
/**用於測試CRequest類
*@paramargs
*/
publicstaticvoidmain(String[]args){
//請求url
Stringstr="index.jsp?Action=del&id=123&sort=";
//url頁面路徑
System.out.println(CRequest.UrlPage(str));
//url參數鍵值對
StringstrRequestKeyAndValues="";
Map<String,String>mapRequest=CRequest.URLRequest(str);
for(StringstrRequestKey:mapRequest.keySet()){
StringstrRequestValue=mapRequest.get(strRequestKey);
strRequestKeyAndValues+="key:"+strRequestKey+",Value:"+strRequestValue+";";
}
System.out.println(strRequestKeyAndValues);
//獲取無效鍵時,輸出null
System.out.println(mapRequest.get("page"));
}
}
測試代碼運行效果
index.jsp
key:id,Value:123;key:sort,Value:;key:action,Value:del;
null
C. java路徑獲得幾種方法.txt
Java獲取路徑的各種方法:
(1)、request.getRealPath("/");//不推薦使用獲取工程的根路徑
(2)、request.getRealPath(request.getRequestURI());//獲取jsp的路徑,這個方法比較好用,可以直接在servlet和jsp中使用
(3)、request.getSession().getServletContext().getRealPath("/");//獲取工程的根路徑,這個方法比較好用,可以直接在servlet和jsp中使用
(4)、 this.getClass().getClassLoader().getResource("").getPath();//獲取工程classes 下的路徑,這個方法可以在任意jsp,servlet,java文件中使用,因為不管是jsp,servlet其實都是java程序,都是一個 class。所以它應該是一個通用的方法。
D. Java獲取路徑的幾種方式
獲取當前類的絕對路徑;第1種:File directory = new File("");//參數為空
String courseFile = directory.getCanonicalPath() ;
System.out.println(courseFile);結果:C:\Documents and Settings\Administrator\workspace\projectName
獲取當前類的所在工程路徑;第2種:URL xmlpath = this.getClass().getClassLoader().getResource("selected.txt");
System.out.println(xmlpath);結果:file:/C:/Documents%20and%20Settings/Administrator/workspace/projectName/bin/selected.txt
獲取當前工程src目錄下selected.txt文件的路徑第3種:System.out.println(System.getProperty("user.dir"));結果:C:\Documents and Settings\Administrator\workspace\projectName
獲取當前工程路徑第4種:System.out.println( System.getProperty("java.class.path"));結果:C:\Documents and Settings\Administrator\workspace\projectName\bin獲取當前工程路徑
E. 在java中怎麼獲取頁面的路徑
這裡面我把se跟ee方面獲取路徑的給你列舉出來了,希望對你有用
Java中使用的路徑,分為兩種:絕對路徑和相對路徑。歸根結底,Java本質上只能使用絕對路徑來尋找資源。所有的相對路徑尋找資源的方法,都不過是一些便利方法。不過是API在底層幫助我們構建了絕對路徑,從而找到資源的!
在開發Web方面的應用時, 經常需要獲取伺服器中當前WebRoot的物理路徑。
如果是Servlet , Action , Controller, 或者Filter , Listener , 攔截器等相關類時, 我們只需要獲得ServletContext, 然後通過ServletContext.getRealPath("/")來獲取當前應用在伺服器上的物理地址。
如果在類中取不到ServletContext時,有兩種方式可以做到:
1)利用Java的類載入機制:調用 XXX.class.getClassLoader().getResource(""); 方法來獲取到ClassPath , 然後處理獲得WebRoot目錄。
這種方式只能是該class在WebRoot/WEB-INF/classes下才能生效, 如果該class被打包到一個jar文件中, 則該方法失效。這時就應該用下面一種方式。
2)spring框架的思路,在WEB-INF/web.xml中,創建一個webAppRootKey的param,指定一個值(默認為webapp.root)作為鍵值,然後通過Listener, 或者Filter,或者Servlet 執行String webAppRootKey = getServletContext().getRealPath("/"); 並將webAppRootKey對應的webapp.root 分別作為Key,Value寫到System Properties系統屬性中。之後在程序中通過System.getProperty("webapp.root")來獲得WebRoot的物理路徑。
根據第二種的思路,我們還可以再擴展一下。不過對於在部署在一台伺服器中的應用來說,若還不是你所需請再往下看。
下面是一些得到classpath和當前類的絕對路徑的一些方法。你可使用其中的一些方法來得到你需要的資源的絕對路徑:
1.DebitNoteAction.class.getResource("")
得到的是當前類FileTest.class文件的URI目錄。不包括自己!
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
atacarnet/src/com/evi/moles/atacarnet/action/
2.DebitNoteAction.class.getResource("/")
得到的是當前的classpath的絕對URI路徑。
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
3.Thread.currentThread().getContextClassLoader().getResource("")
得到的也是當前ClassPath的絕對URI路徑
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
推薦使用該方法獲取。
4.DebitNoteAction.class.getClassLoader().getResource("") 或ClassLoader.getSystemResource("")
得到的也是當前ClassPath的絕對URI路徑。
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
5.取得伺服器相對路徑
System.getProperty("user.dir")
例如:E:\apache-tomcat-5.5.16\apache-tomcat-5.5.16\bin
6.取得項目中的絕對路徑
一般用request.getRealPath("/")或request.getRealPath("/config/")
但現在不提倡使用request.getRealPath("/")了,大家可試用ServletContext.getRealPath("/")方法得到Web應用程序的根目錄的絕對路徑。
要取得src的文件非常容易,因為src是默認的相對目錄,比如你說要取得src下com目錄的test.java文件,你只需要這樣就夠了
File f = new File(com/test.java);
但如果我要取得不在src目錄或者WebRoot目錄下的文件呢,而是要從src或者WebRoot同級的目錄中取呢,比如說doc吧。
我的硬方法是這樣實現的:
String path = this.getServletContext().getRealPath("/");
Properties p = new Properties();
p.load(new FileInputStream(new File(path.substring(0,(path.lastIndexOf("\\WebRoot") + 1)) + "doc/db.properties")));
System.out.println(p.getProperty("driverName"));
-------------------------------
另:Request中getContextPath、getServletPath、getRequestURI、getRequestURL、getRealPath的區別
假定你的web application 名稱為news,你在瀏覽器中輸入請求路徑:http://localhost:8080/news/main/list.jsp
則執行下面向行代碼後列印出如下結果:
1、 System.out.println(request.getContextPath());
列印結果:/news
2、System.out.println(request.getServletPath());
列印結果:/main/list.jsp
3、 System.out.println(request.getRequestURI());
列印結果:/news/main/list.jsp
4、System.out.println(request.getRequestURL());
列印結果:http://localhost:8080/news/main/list.jsp
5、 System.out.println(request.getRealPath("/"));
列印結果:F:\Tomcat 6.0\webapps\news\test
F. java 中如果獲取來訪路徑
Javascript 中
1.獲得上一個頁面的URL地址
var url = document.referrer;
2.獲得當前頁面的URL地址
var ur = location.href ;
java 中
1.獲得上一個頁面的URL地址
Request.getHeader("Referer");
2 獲得當次請求的URI請求相對路徑和請求參數
request.getRequestURI()+"?"+request.getQueryString();
G. JAVA怎樣得到當前程序的路徑
1、利用System.getProperty()函數獲取當前路徑:
System.out.println(System.getProperty("user.dir"));//user.dir指定了當前的路徑
2、使用File提供的函數獲取當前路徑:
File directory = new File("");//設定為當前文件夾
try{
System.out.println(directory.getCanonicalPath());//獲取標準的路徑
System.out.println(directory.getAbsolutePath());//獲取絕對路徑
}catch(Exceptin e){}
File.getCanonicalPath()和File.getAbsolutePath()大約只是對於new File(".")和new
File("..")兩種路徑有所區別。
# 對於getCanonicalPath()函數,「."就表示當前的文件夾,而」..「則表示當前文件夾的上一級文件夾
# 對於getAbsolutePath()函數,則不管」.」、「..」,返回當前的路徑加上你在new File()時設定的路徑
# 至於getPath()函數,得到的只是你在new File()時設定的路徑
Java基礎知識教程:
H. java中filter怎麼獲取a標簽請求的路徑
當我們訪問index.jsp/時,其實並不是我們瀏覽器真正訪問到了伺服器上的index.jsp 文件,而是先由代理伺服器去訪問index.jsp。
代理伺服器再將訪問到的結果返回給我們的瀏覽器,因為是代理伺服器去訪問index.jsp的。
所以index.jsp中通過 request.getRemoteAddr()的方法獲取的IP實際上是代理伺服器的地址,並不是客戶端的IP地址。
於是可得出獲得客戶端真實IP地址 的方法:
public class Myfilter implements Filter {
public void destroy() {
}
private HttpServletRequest request;
private HttpServletResponse response;
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
request = (HttpServletRequest) arg0;
response = (HttpServletResponse) arg1;
System.out.println(request.getRequestURI());
System.out.println("===ff===="+request.getQueryString());
if("1".equals(request.getRequestURI().substring(("/"+request.getContextPath()).length()))){
request.getRequestDispatcher("/my.jsp").forward(request, response);
return;
}
arg2.doFilter(request, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
}
}
I. Java 獲取路徑的幾種方法
File f = new File(this.getClass().getResource("").getPath());
System.out.println(f);結果:C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin\com\test
獲取當前類的絕對路徑;第二種:File directory = new File("");//參數為空
String courseFile = directory.getCanonicalPath() ;
System.out.println(courseFile);結果:C:\Documents and Settings\Administrator\workspace\projectName
獲取當前類的所在工程路徑;第三種:URL xmlpath = this.getClass().getClassLoader().getResource("selected.txt");
System.out.println(xmlpath);結果:file:/C:/Documents%20and%20Settings/Administrator/workspace/projectName/bin/selected.txt
獲取當前工程src目錄下selected.txt文件的路徑第四種:System.out.println(System.getProperty("user.dir"));結果:C:\Documents and Settings\Administrator\workspace\projectName
獲取當前工程路徑第五種:System.out.println( System.getProperty("java.class.path"));結果:C:\Documents and Settings\Administrator\workspace\projectName\bin獲取當前工程路徑
J. 請問java如何獲取當前url路徑
1、利用System.getProperty()函數獲取當前路徑:
System.out.println(System.getProperty("user.dir"));//user.dir指定了當前的路徑
2、使用File提供的函數獲取當前路徑:
File directory = new File("");//設定為當前文件夾
try{
System.out.println(directory.getCanonicalPath());//獲取標準的路徑
System.out.println(directory.getAbsolutePath());//獲取絕對路徑
}catch(Exceptin e){}
File.getCanonicalPath()和File.getAbsolutePath()大約只是對於new File(".")和new File("..")兩種路徑有所區別。
# 對於getCanonicalPath()函數,「."就表示當前的文件夾,而」..「則表示當前文件夾的上一級文件夾
# 對於getAbsolutePath()函數,則不管」.」、「..」,返回當前的路徑加上你在new File()時設定的路徑
# 至於getPath()函數,得到的只是你在new File()時設定的路徑