java积累--获取客户端访问的url和域名--EL表达式获取地址栏地址以及jsp如何获取服务器信息

访问网页的主机ip为:123.10.23.12

部署网页的服务器ip为:10.0.4.214

 

JAVA获取域名或者ip相关信息的方法

request.getServerName()

返回被请求服务器域名,如果没有域名则返回IP地址:10.0.4.214

request.getServerPort()

返回被请求服务器端口:8081

request.getRemoteHost()

返回远程主机(客户端)域名,没有域名就返回IP:123.10.23.12,如果服务端和客户端在同一台机子上且使用了localhost进行访问,那么此处得到的将是0:0:0:0:0:0:0:1,这是由于host文件导致的。

request.getRemoteAddr()

返回远程主机(客户端)IP地址:123.10.23.12,同上

request.getLocalName()

返回本地(服务端)域名,没有域名就返回IP:10.0.4.214,如果服务端和客户端在同一台机子上且使用了localhost进行访问,那么此处得到的将是0.0.0.0,这是由于host文件导致的。

request.getLocalAddr()

返回本地(服务端)域名,没有域名就返回IP:10.0.4.214,同上

request.getLocalPort()

返回本地(服务端)端口:8081

InetAddress.getLocalHost().getAddress()

返回本地(服务端)IP(数组形式):[10, 0, 2, 88] 

此处需要注意:如果服务器用的是windows那么可以正确获取到IP,但,如果服务器是linux,则只能获取到[127, 0, 0, 1] 。

request.getRequestURL()

获取请求的网址全路径:https://10.0.4.214:8081/vasportal/index.action

request.getRequestURI()

获取工程名和请求路径:vasportal/index.action

request.getContextPath()

获取当前请求的上下文(可以理解为工程名): /vasportal

request.getServletContext().getRealPath("/temp")

获取项目中webapp下的temp文件夹


request.getServletPath()

得到当前服务器servlet映射的路径:index.action

request.getProtlcol()

得到当前请求的协议版本:HTTP/1.1

request.getScheme()

得到当前请求的协议类型:https

 

 

使用方式--后端

@Controller
@RequestMapping(value="/test")
public class TestControllor {

    Logger logger = Logger.getLogger(TestControllor.class);

    @ResponseBody
    @RequestMapping(value="/blog", method=RequestMethod.GET)
    public String operation(HttpServletRequest request){
         
String url = "http://" + request.getServerName() //服务器地址
                    
+ ":" 
                    
+ request.getServerPort()//端口号
                    
+ httpRequest.getContextPath()      //项目名称
                   
 + httpRequest.getServletPath()      //请求页面或其他地址
               
 + "?" + (httpRequest.getQueryString()); //参数
        
        System.out.println(url);
        
        return "";
    }
}

使用方式--前端


 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>  
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<c:out value="<%=request.getServerName()%>"></c:out>
<c:set value="<%=request.getServerName()%>" var="host" scope="request"/>
<c:out value="${host}"></c:out>
<c:if test="${host!='www.525.life'}"   var="xx"  scope="request">

满足条件则显示本行文字
 </c:if>

有时候我们需要在jsp页面获取当前地址。(非js获取)

 

获取浏览器地址栏输入的地址

EL表达式获取

 

 ${requestScope['javax.servlet.forward.request_uri']}

或者

 

 

${pageContext.request.getAttribute("javax.servlet.forward.request_uri")}

 

 

 

 

 

 

 

 

java脚本获取

 

<% 
String url=request.getAttribute("javax.servlet.forward.request_uri").toString();

%>
<%=url%>

 

 

 

 

 

 

ps注意事项

Tomcat和Was7对servlet标准的实现不尽相同的。差异很大,导致最终结果也有些差异了。本文中要说的request.getAttribute("javax.servlet.forward.request_uri")调用结果就是其中的一个差异。
在Tomcat环境下javax.servlet.forward.request_uri存放的是当前请求路径,但在was7下存放的却是上一个请求的路径。

 

 

 

 

获取浏览器地址栏输入地址的请求参数

例如:http://localhost:8080/test/hello?name=joe获取name

EL表达式获取

 

${param.name}

 

 

 

 

 

java脚本获取

 

<% 
String name = request.getParameter("name");
%> 
<%=name%> 

 

 

 

 

 

 

 

 

 

获取当前页面绝对路径

java脚本

 

 

<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
String  url  =  "http://"  +  request.getServerName()  +  ":"  +  request.getServerPort()  +  request.getContextPath()+request.getServletPath().substring(0,request.getServletPath().lastIndexOf("/")+1);  

if(request.getQueryString()!=null) 
{   
    url+="?"+request.getQueryString();           
} 
System.out.println("path:"+path); 
System.out.println("basePath:"+basePath);    
System.out.println("URL:"+url);   

System.out.println("URL参数:"+request.getQueryString());  
%>

或者

 

 

String   url=request.getScheme()+"://";   
  url+=request.getHeader("host");   
  url+=request.getRequestURI();   
  if(request.getQueryString()!=null)   
      url+="?"+request.getQueryString(); 

 

 

EL表达式

 

 

 

 

${pageContext.request.requestURL}

 

 

 

 

 

 

 

获取服务器的相关信息

EL表达式

 

${pageContext.request}                  |取得请求对象<br>  
${pageContext.session}                  |取得session对象<br>  
${pageContext.request.queryString}      |取得请求的参数字符串<br>  
${pageContext.request.requestURL}       |取得请求的URL的服务器路径,但不包括请求之参数字符串<br>  
${pageContext.request.contextPath}      |服务的web application的名称<br>  
${pageContext.request.method}           |取得HTTP的方法(GET、POST)<br>  
${pageContext.request.protocol}         |取得使用的协议(HTTP/1.1、HTTP/1.0)<br>  
${pageContext.request.remoteUser}       |取得用户名称<br>  
${pageContext.session.new}              |判断session是否为新的,所谓新的session,表示刚由server产生而client尚未使用<br>  
${pageContext.session.id}               |取得session的ID<br>  
  
${header["User-Agent"]}|用户浏览器的版本<br/>  
${header["Host"]}|IP<br/>  
${pageContext.request.remoteAddr }      |取得用户的IP地址<br>  
${pageContext.servletContext.serverInfo}|取得主机端的服务信息<br>  
${pageContext.request.serverPort}|端口信息<br>  
${pageContext.request.serverName}|服务器名称<br>  
${pageContext.request.remoteHost}|客户机名称<br>  

 

 

 

 

 

java脚本

 

<%  
  
String SERVER_NAME = request.getServerName();  
  
String SERVER_SOFTWARE = getServletContext().getServerInfo();  
  
String SERVER_PROTOCOL = request.getProtocol();  
  
Integer SERVER_PORT = request.getServerPort();  
  
String REQUEST_METHOD = request.getMethod();  
  
String PATH_INFO = request.getPathInfo();  
  
String PATH_TRANSLATED = request.getPathTranslated();  
  
String SCRIPT_NAME = request.getServletPath();  
  
String DOCUMENT_ROOT = request.getRealPath("/");  
  
String QUERY_STRING = request.getQueryString();  
  
String REMOTE_HOST = request.getRemoteHost();  
  
String REMOTE_ADDR = request.getRemoteAddr();  
  
String AUTH_TYPE = request.getAuthType();  
  
String REMOTE_USER = request.getRemoteUser();  
  
String CONTENT_TYPE = request.getContentType();  
  
Integer CONTENT_LENGTH = request.getContentLength();  
  
String HTTP_ACCEPT = request.getHeader("Accept");  
  
String HTTP_USER_AGENT = request.getHeader("User-Agent");  
  
String HTTP_REFERER = request.getHeader("Referer");  

%>

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张小凡vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值