精华内容
下载资源
问答
  • basePath

    2019-08-31 20:15:45
    %=basePath%>">的作用 来源于:http://fanshuyao.iteye.com/blog/2097229 首先了解是什么是<base href=""> 这是设置基础路径的,basepath为变量 <base href="value">为页面上所有相对 URL 规定基准...

    JSP中<base href="<%=basePath%>">的作用
    来源于:http://fanshuyao.iteye.com/blog/2097229

    首先了解是什么是<base href="">

    这是设置基础路径的,basepath为变量

    <base href="value">为页面上所有相对 URL 规定基准 URL:

    Html代码 收藏代码

    <head>  
    <base href="http://www.w3school.com.cn/i/" />  
    </head>  
      
    <body>  
    <img src="eg_smile.gif" />  
    </body>  
    

    定义和用法
    href 属性规定页面中所有相对链接的基准 URL。

    语法

    <base href="value">
    

    属性值
    值 描述

    URL作为基准 URL 的绝对 URL(比如 “http://www.example.com/”)

    Java代码 收藏代码

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

    获取当前项目的路径,如:http://localhost:8080/项目名称/。

    设置基础路径的,basePath为变量,简单的静态网页的话你设置比如:

    ,那你下面的href属性就会以你上面设的为基准,

    :<a href="http://www.baidu.com/xxx.htm"></a>,你现在就只需要写<a href="xxx.htm"></a>

    展开全文
  • 关于basePath

    千次阅读 2019-01-18 18:45:27
    什么是basePath basePath是我们声明的一个变量,这个变量是通过request对象分别获取协议,IP,端口和应用上下文,并把它们组合在一起后形成的字符串。把该字符串设定为HTML的base标签的href属性的值,可以达到这样...

    1. 什么是 basePath

    basePath 是我们声明的一个变量,这个变量是通过 request 对象分别获取协议,IP,端口和应用上下文,并把它们组合在一起后形成的字符串。把该字符串设定为 HTML 的 base 标签的 href 属性的值,可以达到这样的效果:在当前 JSP 页面中,凡是出现相对引用的地方,相对引用的路径都是相对于 basePath 来说的。换句话说,所有的相对引用都不再是相对于当前 JSP 页面的所在位置,而是相对于当前应用上下文的根目录来说的。

    2. basePath 的写法

    <%String basePath = request.getScheme() + "://" + request.getServerName()+ ":" + request.getServerPort() + request.getContextPath() + "/";%>
    
    2.1 注意点1

    request.getContextPath() 得到的结果中开头包含了一个斜杠/,所以端口和应用上下文之间不用再加斜杠了。
    在这里插入图片描述

    2.2 注意点2

    最后一个斜杠一定要加上,不然 basePath 和相对路径结合以后会出错。
    比如:basePath 是 http://localhost:8080/day190117 ,当前页面中有个相对路径是 jsp/a.jsp。当发送请求的时候,浏览器其实是把 basePath 直接和相对路径合并,结果就变成了 http://localhost:8080/day190117jsp/a.jsp 而不是我们期望的 http://localhost:8080/day190117/jsp/a.jsp

    3. 为什么要使用 basePath

    使用 basePath 的理由很简单,就是为了解决页面跳转中出现的找不到目标网页的问题。

    3.1 正常情况

    比如我们有如下目录结构:
    在这里插入图片描述
    a.jsp 和 target.jsp 在 web 应用根目录下的 jsp 文件夹里,b.jsp 在 web 应用根目录下的 jsp/jsp1 文件夹里。
    在 a.jsp 中,我们设定通过超链接访问 b.jsp。相对于 a.jsp,b.jsp 在当前目录的 jsp1 文件夹里,所以相对路径为 jsp1/b.jsp
    在这里插入图片描述
    在 b.jsp 中,我们设定通过超链接访问 target.jsp。相对于 b.jsp,target.jsp 在当前目录的上一层目录里,所以相对路径为 ../target.jsp
    在这里插入图片描述
    运行的结果是通过在 a.jsp 点击超链接确实能到达 b.jsp,在 b.jsp 中点击超链接也确实能到达 target.jsp。
    在这里插入图片描述
    在这里插入图片描述

    3.2 异常情况

    现在把从 a.jsp 到 b.jsp 的跳转方式改变一下,a.jsp 如下:
    在这里插入图片描述
    通过 web.xml 进行拦截如下:
    在这里插入图片描述
    在对应的 Servlet 中通过 转发 的方式响应 b.jsp 页面给浏览器:
    在这里插入图片描述
    结果是从 a.jsp 通过转发确实能够到达 b.jsp。但是从 b.jsp 没法到达 target.jsp 了。
    在这里插入图片描述
    在这里插入图片描述

    3.3 原因分析

    注意看上图中的地址栏,浏览器发送请求的时候是从 web 应用的根目录下找 target.jsp,这一点异常很重要。
    其实问题出在 转发 上。
    最开始的路径是 http://localhost:8080/day190117/jsp/a.jsp 。在 a.jsp 中点击了链接,在后台转发到 jsp/jsp1/b.jsp 了。但是对于浏览器来说,它并不知道后台是经过了几次转发,在后台的目录结构上是往上走了几层还是往下深入了几层。浏览器只是发送了一个请求地址:http://localhost:8080/day190117/jsp/login.do ,服务器只是给浏览器响应了一个 HTML 页面 b.jsp 而已。既然当前在 b.jsp 页面,当前的 URL 为: http://localhost:8080/day190117/jsp/login.do ,那么浏览器只能把 login.do 看做一个静态资源(相当于 login.do 就是 b.jsp),把 http://localhost:8080/day190117/jsp 作为当前目录。因此在b.jsp中通过超链接中的相对路径向上一层去找 target.jsp,浏览器就会发送一个这样的请求 URL:http://localhost:8080/day190117/target.jsp 。很显然,在服务器端,web 应用 day190117 的根目录下并没有 target.jsp。
    这里出现了一个前端和后端的不一致,从后端看target.jsp在b.jsp的上一层,但是从前端看,由于浏览器不知道a.jsp到b.jsp在后端是怎么转发的,只能以 http://localhost:8080/day190117/jsp/login.do 所在的目录作为当前 HTML 页面中相对路径的起点。

    4. 解决办法——basePath 配合 HTML 的 base 标签

    HTML 中有一个 base 标签,它的 href 属性可以规定当前 HTML 页面中所有相对路径的基准。
    那么,通过 request 对象获取相关的信息,拼接成一个字符串代表当前 web 应用的根目录,然后把这个根目录作为 href 的属性值,就可以保证当前页面中所有的相对路径都是以 web 应用根目录为起点。
    既然是从 b.jsp 到 target.jsp 的过程中发生了问题,那么我们在 b.jsp 中作如下修改:
    在这里插入图片描述可以看到,我们新加了一个 basePath 变量,并把它作为 base 标签的 href 属性的值。这样,b.jsp 中所有的相对路径都是以这个 basePath 为基准的。那么,我们要想从 b.jsp 到 target.jsp,就不需要考虑 b.jsp 和 target.jsp 的相对关系了,而是需要考虑目标文件即 target.jsp 和 web 应用根目录的相对关系。target.jsp 位于当前 web 应用根目录下的 jsp 文件夹里,那么相对路径就是 jsp/target.jsp。
    测试一下,确实能从 b.jsp 跳转到 target.jsp。注意看 URL,和我们预想的也一样。
    在这里插入图片描述

    5. 其它事项

    5.1 不用每个相对路径前都加 basePath 变量

    从网上看到的其它文章中,有一些设置了 basePath 变量,但是没有设定 HTML 的 base 标签,所以在 JSP 页面中的每一个相对路径前都加了 <%=basePath%>。这样相当于替代了浏览器,我们自己主动把每一个相对路径都变换成绝对路径。画面跳转确实没有问题,只不过在每一个相对路径前面都加 basePath 变量显得有些麻烦了,应该充分利用 HTML 的 base 标签。在 JSP 页面中设置了 base 标签的 href 属性后,每一个相对路径都不需要加 basePath 变量了。

    5.2 页面中的相对路径都是以当前 web 应用的根目录为基准的

    再次强调一下而已。如果设置了 basePath 变量和 base 标签的 href 属性,所有的相对路径都应该相对于当前 web 应用的根目录去写。

    5.3 作为根目录的斜杠在 JSP(HTML)和 Servlet 中的不同含义

    首先说明,在路径的开头写斜杠/代表当前路径为绝对路径。这一点在 JSP(HTML)和 Servlet 中是一样的。
    我们平常理解的绝对路径是以盘符开头的,如:C:\AppData\Roaming,这是以 windows 系统为基础的。但是 web 应用真正上线的时候,往往部署在 LINUX 服务器上。在 LINUX 服务器上,斜杠/代表根目录。所以 JSP(HTML)和 Servlet 应该都是考虑到这一点所以有这样的设计。
    问题是,在前端(浏览器)和后端(服务器)中这个斜杠/所代表的根目录是不同的。浏览器把当前访问的站点作为根目录,而服务器中,由于当前处理 HTTP 请求的 Servlet 是某个具体的 web 应用下的 Servlet,所以它把当前 web 应用的根目录作为根目录。
    一个网站上面可以部署很多个 web 应用,JSP 页面中的路径既可以在本次访问的 web 应用内部跳转,也可以跳转当前访问站点的其它 web 应用里,甚至可以跳转到其它站点,所以折中的办法是把斜杠当做当前访问站点的根目录。如:http://localhost:8080。而服务器端,Servlet 中写的斜杠肯定不能代表当前站点的根目录,那样几乎没有任何意义,用斜杠代表当前 web 应用的根目录则是合情合理的。如:http://localhost:8080/day190117。在上面的 TestServlet 类中,我们写的转发到的 path 是 “/jsp/jsp1/b.jsp”,这里就是绝对路径的写法,斜杠代表当前 web 应用 day190117 的根目录。
    比如:我们把上面的 b.jsp 页面修改一下。
    在这里插入图片描述其中,basePath 最后的斜杠取消了,超链接的相对路径的开头加一个斜杠。我们的预期是,basePath 和超链接的相对路径拼在一起正好是要访问的 URL。
    但是测试的结果是访问不了。
    在这里插入图片描述注意看一下地址栏的 URL,浏览器是去 localhost 这个站点的根目录下去找 jsp 文件夹里的 target.jsp 的。也就是说,超链接中的斜杠是绝对路径,代表当前站点的根目录,浏览器就不再以相对路径的方式去拼接 URL 进行 HTTP 请求了。

    5.4 把 base 标签放在所有相对引用的前面

    请把 <base> 标签排在 <head> 元素中第一个元素的位置,这样 head 区域中其他元素就可以使用 <base> 元素中的信息了。 ---- 菜鸟教程

    展开全文
  • Basic basepath support

    2021-01-07 04:11:17
    <div><p>Added super-basic support of <code>basepath</code> option. <p>There are two ways to setup a basepath: - Global: <code><Router basepath="/app"> - Single location: <code>use...
  • path basePath

    2019-12-25 15:42:07
    String basePath = request.getScheme()+"????/"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> 这个语句是用来拼装当前网页的相对路径的。 http://localhost:8080/...

    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    这个语句是用来拼装当前网页的相对路径的。

    http://localhost:8080/yanglaoyuan/AdminServlet

    1.request.getScheme(); 返回当前页面使用的协议"http"
    2.request.getServletName() 返回当前页面所在服务器的名字"localhost"
    3.request.getServletServletPort() 返回当前页面所在服务器使用的端口 “8080”
    4.request.getContextPath() 返回当前页面所在应用的名字。“yanglaoyuan”
    这四个拼起来就是当前应用的根路径了

    展开全文
  • basePath 方便

    2019-10-02 04:35:44
    String path = request.getContextPath()+"/";String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path ; 转载于:https://www.cnblogs.com/yanjunwu...

    String path = request.getContextPath()+"/";
    String basePath = request.getScheme() + "://"
      + request.getServerName() + ":" + request.getServerPort()
      + path ;

    转载于:https://www.cnblogs.com/yanjunwu/p/3504102.html

    展开全文
  • basePath 的使用

    千次阅读 2017-12-25 12:04:22
    basePath 的使用
  • html页面调用BasePath项目路径

    千次阅读 热门讨论 2018-04-20 14:09:19
    BasePath项目路径,是特别游泳的类,放到request里面,...request.setAttribute(“basePath”, BasePath.getBasePath(request)); //html页面用freemarker去调用 ${basePath}xxxx/xxx去调用, 例如我请求http://1...
  • jsp获取basePath

    2021-02-22 13:09:26
    定义 <...charset=UTF-8" language="java" %>... String basePath = request.getScheme()+"://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/"; %> 使.
  • 在jsp中,我们可以用el表达式直接获取basePath,但是在单独js文件中不能用el表达式,下面与大家分享下js文件中如何获取basePath,感兴趣的朋友可以参考下
  • JSP_BASEPATH

    2019-09-26 12:35:23
    Eclipse 新建 jsp页面里自动生成以下代码: <...String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%> 作用相当生成了以下路径...
  • 每个jsp页面中都要获取basePath,怎么一次性为所有jsp都设置basePath变量 1、新建一个basePath.jsp 2、在其他页面如main.jsp把basePath.jsp页面包含进去 注意包含页面路径,这里的main.jsp和basePath.jsp在同...
  • basepath的使用

    千次阅读 2017-03-21 22:16:24
    basepath的使用 basePath 的使用 <在JSP中的如果使用 “相对路径” 则有可能会出现问题. 因为 网页中的 “相对路径” , 他是相对于 “URL请求的地址” 去寻找资源. 上面这句话是什么意思呢 ? 举个例子: ...
  • basepath的作用

    2019-04-01 17:06:58
    在谈basePath之前,先来讨论一下相对路径与绝对路径的区别。 相对路径-以引用文件之网页所在位置为参考基础,而建立出的目录路径。 绝对路径-以Web站点根目录为参考基础的目录路径。 在web应用程序中绝对路径不是...
  • JSP之basePath

    2017-09-08 21:18:36
    在JSP页面中创建basePath步骤:步骤1:在页面开头位置加入以下代码:&lt;% String basePath = request.getScheme() + "://" + request.getServerName() + ":" +request.getServerPort() + ...
  • jsp中basePath

    2017-10-23 18:00:27
    String path=request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path; %>
  • routes_basepath not set

    2020-12-09 01:25:23
    <div><p>Without changing config it got ...There must be something wrong in setting the basepath or prepending from core-bundle.</p><p>该提问来源于开源项目:symfony-cmf/routing-bundle</p></div>
  • js如何获取 basePath

    2019-10-29 21:12:09
    在jsp中,获取basePath 的脚本是这样的: <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> ...
  • composer require selective/basepath 推荐的目录结构: public/ Web服务器文件, .htaccess前端控制器的Apache重定向规则 index.php前端控制器 .htaccess内部重定向到public /目录 Slim 4应用程序必须执行以下...
  • JavaWeb之basePath

    2017-11-09 11:27:04
    问:有这样的语句 ...String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  "> 答:这个语句是用来拼装当前网页的相对路径的
  • JSP BASEPATH

    2012-04-24 12:36:18
    如果JSP页面没有写BASEPATH,没有指定HREF=,那么路径默认就是以该路径为基准的相对路径,比如当前:http://localhost:8080/Test/back ,那么连接路径就是上面路径+页面路径!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,922
精华内容 25,568
关键字:

basepath