在我的Web应用程序中,我得到了包含默认标头内容的Header.jsp文件.我在所有其他页面中使用jsp:include标签将其包含在每个页面的body标签内.
Header.jsp包含自己的HEAD标记,用于指定默认元标记,链接样式表,脚本和一些HTML元素.同时,我将在所有其他单个页面中使用另一组HEAD标记来定义标题,页面特定脚本和样式表.
例如:
header.jsp中
<head>
<link rel="shortcut icon" href="<%=request.getContextPath()%>/images/favicon.ico" type="image/x-icon" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<script src="js/jquery.js"></script>
<link rel=stylesheet type="text/css" href="dashboard.css" >
</head>
<h2>Dashboard</h2>
Run Code Online (Sandbox Code Playgroud)
main.jsp中
<!DOCTYPE html>
<html>
<head>
<title>Main page</title>
<script src="main.js"></script>
</head>
<body>
<jsp:include page="Header.jsp" flush="true" />
.....
other HTML contents specific to main page
.....
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这样做是否有效?
dke*_*ner 55
让我用"是和否"来扩展答案.
人们通常在理论上回答这些问题,比如"不,因为它不符合标准".没错,事实并非如此.未来的浏览器可能不支持它,一些源解析器可能会混淆,HR/IT专家检查您的投资组合可能认为您比Jon Snow知道的更少,以及各种不好的事情.从理论上讲.
然而.
是的,它确实发生在现实世界中 - 是的,几乎所有浏览器都以同样的方式对待这种情况:它们接受两个头标记并按预期工作.这有三个很好的理由:
1.头标签是可选的.浏览器甚至在其外部接受标题内容,因此实际上它们完全忽略了标签本身.如果他们忽略了一个,他们也可能会忽略几个.
浏览器希望你享受你的时间.他们希望向您展示他们可以从他们所拥有的混乱中组成的最佳页面. 这是他们的意图,他们想告诉你互联网有效,而不是教你最喜欢的网站有多糟糕.如果他们能够找出html代码想要表达的内容(并且结构中没有致命的歧义),他们将尽力修复页面.
3.糟糕的标记容差是一件事.浏览器不只是耐心和宽容,但有时他们会做杂技动作来让你的东西工作.看看这个可怕的烂摊子:
<!-- no doctype! -->
<!-- no HTML tag! we're all gonna die! -->
<head>
<style>
body {background:#002233;}
</style>
</head>
<head><!-- let's twist again! -->
<style>
body {color:white}
</style>
<!-- we didn't even close the second one!! -->
See this text?<br>
With the background AND color properly set?<br>
<br>
Your browser's quite a badass.
Run Code Online (Sandbox Code Playgroud)
关于浏览器容差,这里有更多丑陋的例子 - 确保你忘记了你回来时看到的一切!)
所以是的,当然,原则是"成为您浏览器的好朋友",无论它如何巧妙地修复您的错误.但是,如果你在一个黑暗的地牢中醒来,周围有饥饿的狮子,你唯一的出路是使用两个<head>标签 - 好吧,不要犹豫!它没有破坏语法,它不是严重违反HTML5规则 - 它只不过是一种方便的欺骗.并且不要因为非标准的,非整洁的网站繁荣更加普遍的普遍神话:人们通常只是不确定并且想要保持安全.通常情况下,他们将地狱描述为验证者失败的网络作者所在的地方.
TLDR:在实践中,两个头标签工作.
现在请尽可能只有一个.