很多同学容易搞混getContextPath、getServletPath、getRequestURI、getRealPath、getRequestURL这几个的区别,我一一实验了下。
JSP种实验代码如下:
<%
out.println("getContextPath: "+request.getContextPath()+"<br/>");
out.println("getServletPath: "+request.getServletPath()+"<br/>");
out.println("getRealPath: "+request.getRealPath("/")+"<br/>");
out.println("getRequestURL: "+request.getRequestURL()+"<br/>");
out.println("getRequestURI: "+request.getRequestURI()+"<br/>");
%>
出来的输出效果为:
getContextPath: /ckswzl
getServletPath: /admin/login.jsp
getRealPath: D:\document\EclipseWorkSpace2\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ckswzl\
getRequestURL: http://localhost:8080/ckswzl/admin/login.jsp
getRequestURI: /ckswzl/admin/login.jsp
可以看出来。
getContextPath是返回的项目上下文的名字(其实也就是项目名);
getServletPath是返回的是项目名到当前jsp文件的路径(意思就是在这个项目首页到文件的路径)
getRequestURI是返回的是项目名到整个文件的请求路径
getRealPath是返回的文件所在的绝对路劲。相对于当前计算机的真实路径
getRequestURL是返回的整个URL的路径请求(意思就是返回的浏览器地址栏的整个地址)