天天看点

JSP 页面地址小解

HttpServletRequest API 提供了若干方法返回地址信息,使得我们可以了解请求信息如何。我们逐一看看哪些是需要的。

方法名:返回值

含义

getScheme():String

返回请求协议,如 http or https

getServerName():String

返回服务器名称,即主机名,可能是 ip 或域名

getServerPort():int

返回请求服务器的端口

由此,我们可以给出一方法,得出请求地址的前缀。

方法内默认 this 对象为 HttpServletRequest 类型,下面相同。

不过这个方法是不完整的,只是得到完整 url 的前缀。怎么获取完整的前缀呢?我们可以通过 getRequestURI()、getQueryString() 返回网址剩余部分。

有时候我们只是需要网站名称和项目所在名称,两者一起——这时候 getContextPath() 方法就派上用场了,它的作用是返回当前项目的目录名。

不知道大家还记得微软 ASP 时代的 Server.Mappath 方法吗?它可以把指定的路径影射到服务器上相应的物理路径上,非常有用。现在我们在 JSP 上也弄一个。

在写 Servlet MVC 的时候(request.getRequestDispatcher(path).forward(request, response)),JSP 模版虽然可以得到 request 等的对象,但是某些属性还是以 JSP 模板路径为准的,并不是 Servlet 请求的路径。为此,我们可以通过获取 JSP 变量 javax.servlet.forward.request_uri 得到真实的请求路径。

获取请求者 ip 则是如下。

需要注意的是,本文虽然说的在 JSP 环境下,但实际上在 Servlet 里面仍然通用。