假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下
获取方式 | 结果 | 解释 |
---|---|---|
request.getContextPath() | /WebDemo | 请求上下文 |
request.getScheme() | http | 请求协议 |
request.getServerName() | localhost | 请求地址 |
request.getServerPort() | 8683 | 端口 |
request.getRemoteAddr() | 127.0.0.1 | 请求地址 |
request.getServletPath() | /index.jsp | 页面名称 |
request.getRealPath("/")或request.getSession().getServletContext().getRealPath()(荐) | D:\apache-tomcat-6.0.13\webapps\WebDemo\ | 获取项目的绝对路径 |
request.getRemoteUser(); | null | 这个没太弄懂 |
request.getRequestURI() | /WebDemo/index.jsp | 获取页面的相对路径 |
request.getRequestURL() | http://localhost:8683/WebDemo/index.jsp | 获取页面的全路径 |
很多项目中会采用以下用法
页面 A.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@include file="/context/mytags.jsp" %><!--此处引入公共的文件-->
<!DOCTYPE html>
<html>
<!--请求URL一般会写成以下形式,这个webRoot实际上是在上面引入的公共JSP:mytags.jsp里面定义的-->
${webRoot}/xxx/xxxx
<!--省略其他代码-->
</html>
mytags.jsp
<%@ taglib prefix="t" uri="/easyui-tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
%>
<c:set var="webRoot" value="<%=basePath%>" /><!--此处引入webRoot共使用-->
后台使用
request也可以在后台使用,比如如下代码就是获取项目中的一张图片并拼接成html代码返回到前台
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
StringBuilder urlSb = new StringBuilder(request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/");
if (!StringUtils.isEmpty(request.getContextPath())) {
urlSb.append(request.getContextPath()).append("/");
}
urlSb.append("system/images/company_logo.png");
fhdTemplateDto.setLogo("<img src=" + urlSb.toString() + " height=\"81\" width=\"133\">");
HTML的JS中获取当前请求路径
var curPageUrl = window.document.location.href; //http://127.0.0.1:8099/index#/template/file/index
var rootPath = curPageUrl.split("//")[0]+"//"+ curPageUrl.split("//")[1].split("/")[0]; //http://127.0.0.1:8099