jsp獲取伺服器地址
① jsp頁面中怎麼獲取上傳到tomcat伺服器中的文件地址,我後台上傳的圖片,在前台要動態獲取圖片地址並顯示
從資料庫中查出來然後返回到jsp頁面用el表達式可以獲取,或者是struts標簽也行1
② java如何獲取https協議的客戶端ip地址
嗨 你好
據網上了解到:
在JSP里,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等反向代理軟體就不能獲取到客戶端的真實IP地址了。
如果使用了反向代理軟體,將http://192.168.1.110:2046/ 的URL反向代理為 http://www.javapeixun.com.cn / 的URL時,用request.getRemoteAddr()方法獲取的IP地址是:127.0.0.1或192.168.1.110,而並不是客戶端的真實IP。
經過代理以後,由於在客戶端和服務之間增加了中間層,因此伺服器無法直接拿到客戶端的IP,伺服器端應用也無法直接通過轉發請求的地址返回給客戶端。但是在轉發請求的HTTP頭信息中,增加了X-FORWARDED-FOR信息。用以跟蹤原有的客戶端IP地址和原來客戶端請求的伺服器地址。當我們訪問http://www.javapeixun.com.cn /index.jsp/ 時,其實並不是我們瀏覽器真正訪問到了伺服器上的index.jsp文件,而是先由代理伺服器去訪問http://192.168.1.110:2046/index.jsp ,代理伺服器再將訪問到的結果返回給我們的瀏覽器,因為是代理伺服器去訪問index.jsp的,所以index.jsp中通過request.getRemoteAddr()的方法獲取的IP實際上是代理伺服器的地址,並不是客戶端的IP地址。
於是可得出獲得客戶端真實IP地址的方法一:
public String getRemortIP(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr(); } return request.getHeader("x-forwarded-for"); }
可是當我訪問http://www.5a520.cn /index.jsp/ 時,返回的IP地址始終是unknown,也並不是如上所示的127.0.0.1或192.168.1.110了,而我訪問http://192.168.1.110:2046/index.jsp 時,則能返回客戶端的真實IP地址,寫了個方法去驗證。原因出在了Squid上。squid.conf 的配製文件forwarded_for 項默認是為on,如果 forwarded_for 設成了 off 則:X-Forwarded-For: unknown
於是可得出獲得客戶端真實IP地址的方法二:
public String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; }
可是,如果通過了多級反向代理的話,X-Forwarded-For的值並不止一個,而是一串Ip值,究竟哪個才是真正的用戶端的真實IP呢?
答案是取X-Forwarded-For中第一個非unknown的有效IP字元串。
如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100用戶真實IP為: 192.168.1.110
希望可以幫到你的忙
祝你學習愉快
③ jsp中如何獲取本機ip
<%@page
contentType="text/html;charset=gb2312"基帶%><%InetAddress
addr
=
InetAddress.getLocalHost();
ip=addr.getHostAddress().toString;//獲得本機IP
pageContext.setAttribute("ip",ip);%>//改鋒御在下面引用核岩這個:${ip},就可以了</body
④ JSP獲取客戶端真實IP
String ip=(String)request.getRemoteAddr();自動獲取登錄這個jsp頁面的ip地址
⑤ 怎樣在jsp中記錄訪問網頁的IP地址
假如用代理伺服器,request.getRemoteAddr(); 只能得到代理伺服器地址,以下方法是得到正確所有ip的方法
在jsp聲明這個函數
<%!public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}%>
嵌入jsp網頁中,然後用<%String ip=getIpAddr(request);%>得到訪問者ip
ip就是訪問者的ip,你保存到資料庫或者緩存中,就由你自己了
⑥ 如何得到一個jsp頁面所在的項目的路徑
在jsp和class文件中調用的相對路徑不同。 在jsp里,根目錄是WebRoot 在class文件中,根目錄是WebRoot/WEB-INF/classes 當然你也可以用System.getProperty("user.dir")獲取你工程的尺宏做絕對路徑。
⑦ jsp怎麼獲取當前頁面的url
當一個url過來時,如:http://localhost:8080/demo/hello.jsp,在hello.jsp頁面,我們可以這樣得到url:
代碼如下:
<%Stringbasepath肆緩
=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort();
StringPath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"+request.getContextPath()+"/";
Stringuri=request.getRequestURI();
uri=uri.substring(uri.lastIndexOf("/")+1);//獲得是最後的hello.jsp
%>
(上例中,Path路徑就是圖中的)
說明:
1.request.getContextPath() 返回站點的根目錄,如:『』/demo『』
2.request.getRealpath("/")得到的是實際的物理路徑,也就是你的項目所在伺服器團雹檔中的路徑
3.request.getScheme() 等到的是協塌亂議名稱,默認是http
4.request.getServerName() 得到的是在伺服器的配置文件中配置的伺服器名稱 比如:localhost ..com 等等
5.request.getServerPort() 得到的是伺服器的配置文件中配置的埠號 比如 8080等等
OK,滿意的話請好評!O(∩_∩)O~
⑧ Linux下 jsp獲取伺服器ip地址
一樣 跟windows 正常獲取 沒有任何區別
⑨ jsp運行顯示找不到伺服器ip地址怎麼回事
jsp運行顯示找不到伺服器ip地址應該。進入路由器設置頁面,在里找到<高級設置>,進入後選擇<使用isp指定的ip和dns>,手工輸入ip和dns數值。
⑩ 請問jsp頁面如何獲取伺服器信息呢
request.getHeader(「User-agent」)返回客戶端瀏覽器的版本號、類型
getHeader(String name):獲得http協議定義的傳送文件頭信息,
request. getMethod():獲得客戶端向伺服器端傳送數據的方法有GET、POST、PUT等類型
request. getRequestURI():獲得物唯發出請求字元串的客戶端地罩鬧培址
request. getServletPath():獲得客戶端所請求的腳彎握本文件的文件路徑
request. getServerName():獲得伺服器的名字
request.getServerPort():獲得伺服器的埠號
request.getRemoteAddr():獲得客戶端的IP地址
request.getRemoteHost():獲得客戶端電腦的名字,若失敗,則返回客戶端電腦的IP地址
request.getProtocol():
request.getHeaderNames():返回所有request header的名字,結果集是一個Enumeration(枚舉)類的實例