访问网页的主机ip为:123.10.23.12
部署网页的服务器ip为:10.0.4.214
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 + "/";
%>
满足条件则显示本行文字
有时候我们需要在jsp页面获取当前地址。(非js获取)
${requestScope['javax.servlet.forward.request_uri']}
或者
${pageContext.request.getAttribute("javax.servlet.forward.request_uri")}
<%
String url=request.getAttribute("javax.servlet.forward.request_uri").toString();
%>
<%=url%>
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
${param.name}
<%
String name = request.getParameter("name");
%>
<%=name%>
<%
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();
${pageContext.request.requestURL}
${pageContext.request} |取得请求对象
${pageContext.session} |取得session对象
${pageContext.request.queryString} |取得请求的参数字符串
${pageContext.request.requestURL} |取得请求的URL的服务器路径,但不包括请求之参数字符串
${pageContext.request.contextPath} |服务的web application的名称
${pageContext.request.method} |取得HTTP的方法(GET、POST)
${pageContext.request.protocol} |取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} |取得用户名称
${pageContext.session.new} |判断session是否为新的,所谓新的session,表示刚由server产生而client尚未使用
${pageContext.session.id} |取得session的ID
${header["User-Agent"]}|用户浏览器的版本
${header["Host"]}|IP
${pageContext.request.remoteAddr } |取得用户的IP地址
${pageContext.servletContext.serverInfo}|取得主机端的服务信息
${pageContext.request.serverPort}|端口信息
${pageContext.request.serverName}|服务器名称
${pageContext.request.remoteHost}|客户机名称
<%
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");
%>