zoukankan      html  css  js  c++  java
  • html base 又一重大发现

    base 一个曾经不记得的标签,虽然接触Javaweb这么久了,但是还有很多基础性的东西都被我忽略掉了,还有很多基础但实用的技巧应该没有被我发现,虽然不使用这些技巧对功能实现没有多大影响。但是,发现这些技巧的时候还是有一种醍醐灌顶的感觉的,这也许是我之前的无知造成的,若你已知,不好意思浪费了你的时间,若从我这里得知的,那我不胜荣幸!

    <base> 标签为页面上的所有链接规定默认地址或默认目标。
    通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白。
    使用 <base> 标签可以改变这一点。浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有的相对 URL。这其中包括 <a>、<img>、<link>、<form> <script>等标签中的 URL。

    在jsp开发中,为了页面的复用,更健壮,更加的可移植,经常会在写img、form、script、link等这些标签的时候使用绝对路径,以降低之后目录改变等带来的影响:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
    	<link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/styles.css">
    	<script type="text/javascript" src="<%=request.getContextPath() %>/jquery-1.8.0.js"></script>

    而使用base标签同样可以实现同样的功能,而不用去改变之前的相对地址:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=path+"/"%>">
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	<script type="text/javascript" src="jquery-1.8.0.js"></script>
    
    

    
    !注意
    

    新建jsp的时候,会默认有base这个标签,但是路径中包含了实际的端口等完整路径

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

    ,这样有时候会有问题(路径是通过交换机虚拟映射的时候),我今天就在这里摔了跟头。更好的是要自己改写在html中base标签
    <base href="<%=path+"/"%>">不使用原来的basePath

    今天上线的时候遇到一个问题,就是端口是虚拟映射的;

    但是页面上使用了<base href="">,href中指出的是实际的端口号,所以就造成这个页面中加载js、css、image等时出错;
    不使用base或者base指向正确的路径;
  • 相关阅读:
    Dual Quaternion Knowledge Graph Embeddings——对偶四元数知识图谱嵌入
    Python argparse模块
    Pythonvirtualenv创建虚拟环境
    KBGAN:用于知识图谱嵌入的对抗学习
    anaconda简单使用
    二分查找详解
    Quaternion Knowledge Graph Embeddings —— 基于四元数的知识图谱嵌入
    ConvR——用于多关系学习的自适应卷积模型
    Under Any Linux: install bypy tool
    PRUNE_BIND_MOUNTS="yes"不好用, 什么原因呢?
  • 原文地址:https://www.cnblogs.com/vvch/p/4027568.html
Copyright © 2011-2022 走看看