request.getcontextPath() 详解

<%=request.getContextPath()%>是为了解决相对路径的问题,可返回站点的根路径。

但不用也可以,比如<a href="<%=request.getContextPath()%>/catalog.jsp">,可以直接用<a href="catalog.jsp">也行,这两个文件是在同一个目录下的。比如你要生成一个文件放在服务器上得一个目录下,可以使用request.getContextPath()+/dir,组成一个完整得目录结构!

但在JSP文件里,有时通过request.getContextPath()得到的路径却为空,为什么?

context中没有配置path属性,所以你的工程文件就是在根目录下,相当于path="";

即是你直接在浏览器中输入你的服务器ip就会到你的jsp页面,而不是tomcat的默认页面;所以你通过request.getContextPath()得到的字符串是为空的;它是获得虚目录的;
如果你想得到工程文件的实际物理路径,可通过:<%=request.getRealPath("/")%>,这样页面就会输出:d:/web。

参考servlet中的接口:

request.getScheme();
返回的协议名称,默认是http

request.getServerName()
返回的是你浏览器中显示的主机名,你自己试一下就知道了

getServerPort()
获取服务器端口号

request.getContextPath()应该是得到项目的名字,如果项目为根目录,则得到一个"",即空的字条串。如果项目为abc, <%=request.getContextPath()% > 将得到abc,服务器端的路径则会自动加上,<a href="XXXX.jsp"> 是指当前路径下的这个xxx.jsp页面,有时候也可以在head里设置html:base来解决路径的问题,不过用的最多的还是request.getContextPath。

js文件中得到request.getContextPath()的值,不想在JSP中写太多的JavaScript代码:

一种方法是用hidden:

<input type=hidden name=contextPath value=<%= request.getContextPath()>

再就是在本页面的js里面也是可以使用Scriptlet来赋值的:
var a = ‘<%= request.getContextPath()>‘
或者你赋值给一个hidden的控件都是可以的,然后js取,这样js可以不用写在jsp里。

实际应用中,一般用来解决jsp测试和生产环境路径不同的问题:

<%
 String appContext = request.getContextPath();
 String basePath = request.getScheme()+"://"+request.getServerName()+":"+ request.getServerPort() + appContext; 
%>

时间: 2024-10-09 23:02:00

request.getcontextPath() 详解的相关文章

JSP request.setAttribute()详解及实例

 javascript request.setAttribute()详解 request.setAttribute()怎么用的? JSP1代码 ? 1 2 3 4 5 String [] test=new String[2]; test[0]="1"; test[1]="2"; request.setAttribute("test",test) ; response.sendRedirect("jsp2.jsp"); JSP2

Flask request 属性详解

Flask request 属性详解 一.关于request在Flask的官方文档中是这样介绍request的:对于 Web 应用,与客户端发送给服务器的数据交互至关重要.在 Flask 中由全局的 request 对象来提供这些信息. 从Flask模块导入request:from flask import requestrequest的属性:下面是request可使用的属性,其中黑体是比较常用的. 二.常用方法的使用 #代码示例,仅仅是为了测试request的属性值 @app.route('/

HTTP request/respond详解及响应状态码

一.http request 详解(客户端告诉服务端) 一个http请求指从客户端到服务器的请求消息,可以通过浏览器F12键,可以看到以下信息: 1.请求地址:url 2.请求方法:head.get‘.post.put.options.delete.patch 3.http协议/版本:可以打开浏览器f12仔细看 4.请求头 5.请求参数 二.HTTP respond 详解(服务端告诉客户端) 一个http respond (http响应) 只得是从服务端到客户端的响应消息 1.响应状态码 2.响

response对象和request对象详解

request方法列举:request.getAuthType() // 获取保护servlet的认证方案名(BASIC或SSL),未受保护的servlet返回的就是nullrequest.getCharacterEncoding() // 获取字符编码request.getContentLength()// 返回请求体内容的长度request.getContentType() // 获取内容类型request.getContextPath() // 获取上下文路径,就是"/"+工程名

django的views里面的request对象详解大全

简介 HTTP 应用的信息是通过 请求报文 和 响应报文 传递的,关于更多的相关知识,可以阅读<HTTP权威指南>获得. 其中 请求报文 由客户端发送,其中包含和许多的信息,而 django 将这些信息封装成了 HttpRequest 对象,该对象由 HttpRequest 类创建.每一个请求都会生成一个 HttpRequest 对象,django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象. 例如: def index(request):

jmeter jdbc request使用详解

1.在使用 jdbc request之前需要加载一个jar包 在test plan中将jar包引入到classpath中 2.创建一个JDBC Connection Configuration Variable Name: 变量名称,需要变量名绑定到池.需要唯一标识.与JDBC取样器中的相对应,决定JDBC取样的配置.简单理解就是在JDBC request的时候确定去哪个绑定的配置. MaxNumber of Connection: 数据库最大链接数 PoolTimeout: 数据库链接超时,单

Django中的request对象详解

URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将  HttpRequest对象  作为第一个参数传入该函数. 下面说说HttpRequest对象: 他其实是一个实例对象,属性有: 1 HttpRequest.scheme 请求的协议,一般为http或者https,字符串格式(以下属性中若无特殊指明,均为字符串格式) 2 HttpRequest.body http请求的主体,二进制格式. 3 HttpRequest.path 所请求页面的完整路径(但不包括协议以及域名),也

Yii2的Html,Request组件详解

1.Request组件 Request封装了$_SERVER,统一了不同Web服务器的变量 , 并且提供$_POST,$_GET,$_COOKIES ,还包括HTTP中PUT.DELETE等方法 2.调用Request组件 1) 直接调用Request类 : \Yii::$app->request    2) 常用Request方法及属性 判断是不是Ajax请求:\Yii::$app->request->isAjax        判断是不是Post请求:\Yii::$app->r

JSP中Out和Request对象详解

内置表示不需要new便可直接使用. 一.基础知识 1.缓冲区:IO最原始是一个一个字节的读取,这就像吃米饭的时候一粒一粒的吃,很没有效率,这时候就有了碗,一碗一碗的吃,岂不痛快. 2.Get提交不能超过2k,安全性不高,查询.搜索时做,效率高,Post提交的信息在Html header里,信息量大,在注册.修改.上传时候. 二.out内置对象 向客户端输出信息,是JspWriter的对象,常用的有println.flush和clear和clearbuffer,后两者的区别是,潜着在flush调用