我以前从未见过 实际使用过的<base>HTML标签.它的使用存在缺陷,这意味着我应该避免它吗?
事实上我从来没有注意到它在现代生产网站(或任何网站)上的使用让我对它持怀疑态度,尽管看起来它可能有用于简化我网站链接的有用应用程序.
使用基本标签几周后,我最终找到了使用基本标签的一些主要问题,这使得它比最初出现时更不可取.从本质上讲,变化href='#topic'和href=''基本标签下是非常有它们的默认行为不兼容,并可以从默认行为,这种变化很容易使第三方库的控制范围之外的非常不可靠的 以意想不到的方式,因为它们在逻辑上依赖于默认行为.通常,这些更改是微妙的,并且在处理大型代码库时会导致不那么明显的问题.我已经创建了一个回答,详细说明了我在下面遇到的问题.因此,在您进行广泛部署之前,请自行测试链接结果<base>,这是我的新建议!
当我将servlet转发到JSP时,我在加载CSS和图像以及创建指向其他页面的链接方面遇到了麻烦.具体而言,当我把我的<welcome-file>给index.jsp的CSS被加载并正在显示我的图片.但是,如果我将我设置<welcome-file>为HomeServlet哪个转发控制index.jsp,则不应用CSS并且不显示我的图像.
我的CSS文件在web/styles/default.css.
我的照片在web/images/.
我像这样链接到我的CSS:
<link href="styles/default.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
我正在显示我的图像如下:
<img src="images/image1.png" alt="Image1" />
Run Code Online (Sandbox Code Playgroud)
这个问题是怎么造成的,怎么解决?
更新1:我添加了应用程序的结构,以及其他一些可能有用的信息.

该header.jsp文件是包含CSS链接标记的文件.该HomeServlet设置为我welcome-file在web.xml:
<welcome-file-list>
<welcome-file>HomeServlet</welcome-file>
</welcome-file-list>
Run Code Online (Sandbox Code Playgroud)
servlet被声明并映射为web.xml:
<servlet>
<servlet-name>HomeServlet</servlet-name>
<servlet-class>com.brianblog.frontend.HomeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
更新2:我最终发现了问题 - 我的servlet映射不正确.显然当设置一个Servlet时,<welcome-file>它不能有一个URL模式/,我觉得有点奇怪,因为它不代表网站的根目录?
新映射如下:
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/HomeServlet</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud) 我对编写JSP/Servlet时使用的技巧感兴趣.我将开始:
我最近发现了如何在另一个标记的属性中包含一个JSP标记的输出:
<c:forEach items="${items}">
<jsp:attribute name="var">
<mytag:doesSomething/>
</jsp:attribute>
<jsp:body>
<%-- when using jsp:attribute the body must be in this tag --%>
</jsp:body>
</c:forEach>
Run Code Online (Sandbox Code Playgroud) 有时您需要在servlet/JSP /基于内容的任何内容中构建Web应用程序上下文的完整URL HttpServletRequest.像http://server.name:8080/context/这样的东西.Servlet API没有一种方法可以实现这一点.
直接的方法是将所有URL组件附加到a StringBuffer,例如
ctxUrl = sb.append(req.getScheme()).append("://")
.append(req.getgetServerName()).append(":")
.append(req.getServerPort()) etc
Run Code Online (Sandbox Code Playgroud)
我想知道这个替代方案是否有任何问题(速度提高了10倍):
ctxUrl = req.getRequestURL();
ctxUrl = ctxUrl.substring(0, ctxUrl.lastIndexOf("/")));
Run Code Online (Sandbox Code Playgroud)
以上两种方法总会产生相同的结果吗?
我的java webapp中有以下结构
-- main
-- java
-- resources
-- lib
-- css
-- style.css
-- webapp
-- WEB-INF
-- web.xml
--index.jsp
Run Code Online (Sandbox Code Playgroud)
如何将style.css链接到我的索引jsp?
<link rel="stylesheet" href="???">
Run Code Online (Sandbox Code Playgroud)
这应该是什么?
提前致谢
请帮助我理解<base>标签的 href 属性的功能。
我有一个网站托管在http://goodsite.org/bob. 其他网站托管在http://goodsite.org/others.
我打算将我的应用程序移至http://bettersite.org/bob.
为了支持这一点,我的标题中有一个基本网址。
<base href="/bob/">.
我的链接看起来像这样: <a href="thatonething.img">That one thing</a>
正如所希望的那样,我看到了预期的链接(例如"http://goodsite.org/bob/thatonething.img")
题:
<base>标签是否普遍支持根相对网址(即href="/bob/")?
这似乎在我的测试中有效,但我在阅读规范时遇到了一些麻烦。更一般地说,我想知道我是否滥用了这个标签。
我有一个名为Main.jsp的文件,位于"http://Mywebpage.com/Open/This/Folder/Main.jsp"的绝对URL路径.
在Main.jsp里面,有一个jsp包括:
<%@ include file="../../Top.jsp" %>
Run Code Online (Sandbox Code Playgroud)
现在,在Top.jsp页面中,我有其他jsp和javascript语句引用文件:
<%@ taglib uri="emonogram.tld" prefix="em" %>
...
<script type="text/javascript" src="HL.js"></script>
Run Code Online (Sandbox Code Playgroud)
emonogram.tld和HL.js存储在与Top.jsp相同的目录中,即"http://Mywebpage.com/Open/".
我需要Top.jsp足够灵活,这样任何文件都可以引用它,无论它在目录树中的哪个位置.这里的问题是我收到错误,因为无法找到Top.jsp中引用的文件.为什么?jsp包含路径将是Main.jsp的相对路径.所以,Top.jsp会失败,因为当我打电话给emonogram.tld时,我想要"http://Mywebpage.com/Open/emonogram.tld",但它实际上是"http://Mywebpage.com/Open" /This/Folder/emonogram.tld".
我尝试查看一些jsp选项,如getRequestURL,getServletPath,getRealPath和getContextPath,但这些方法似乎没有返回我想要的内容.
我当前的逻辑是检索Top.jsp的相对路径,并将其分别添加到emonogram.tld和HL.js.但我不知道该怎么做; 我想弄明白这一点.
更新:根据BalusC的答案,我安装了标签和Tomcat 5.5.我按照链接和web.xml包含相应的信息.我甚至更新到JSP 1.2,没有.如果${}它只相当于在<% %>标签内部进行,那么它不是一个成败的情况,在我得到原始问题后我可以担心它.但是谢谢你.
我按照这个链接尝试了所有以"get ..."开头的方法,但似乎都没有.
getContextPath()/Open即使Main.jsp位于/ Open/This/Folder /中,我也可以同时使用Top.jsp和Main.jsp."emonogram.tld"遗憾的是,这个问题正在影响加载,这是一个标记库,而不仅仅是javascript文件.
再次感谢你.
Update2:道歉,拼写错误; 我的意思是JSTL 1.2,而不是JSP 1.2.我在Tomcat 5.5.28,JSP 2.0和JSTL 1.2.
顺便说一句,谢谢你的帮助和知识.虽然不鼓励使用scriptlet,但它是相同的,这是好的.有了getcontextPath(),我期待/Open/This/Folder/Main.jsp和/Open/Top.jsp,但它会返回/Open/两个文件,这很奇怪.我会继续调查,希望能够解决问题,再次感谢你.
我有一个.xhtml页面列表,我保存在/ src/main/webapp/pages /文件夹中.现在我想创建它们的超链接.目前唯一有效的是默认主页:/src/main/webapp/pages/default.xhtml.
<!-- Welcome page -->
<welcome-file-list>
<welcome-file>/pages/default.xhtml</welcome-file>
</welcome-file-list>
<!-- JSF mapping -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map these files with JSF -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
对于其他人,如果我有一个链接,如:
<a href="/pages/page1.xhtml">Page 1</a>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
在ExternalContext中找不到/page1.xhtml作为资源
我的问题是:如何在相对于webapp根目录的href中指定我想要的页面.
我刚刚开始使用JSF 2.0并面临一个热烈欢迎的问题.我使用了模板和模板客户端,并将模板文件应用于CSS(应该提到我不是css专家)样式.当我运行应用程序时,一切都很好但是当页面被提交或重新加载或导航到另一个页面时,按下页面上的任何链接或按钮都不会应用样式,只显示纯HTML.我该如何克服这个问题?
模板文件:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="resources/css/default.css" rel="stylesheet" type="text/css" />
<link href="resources/css/cssLayout.css" rel="stylesheet" type="text/css" />
<title>
<ui:insert name="title">Facelets Template</ui:insert>
</title>
</h:head>
<h:body>
<div id="top" class="top">
<ui:insert name="top">Top</ui:insert>
</div>
<div id="left">
<ui:insert name="left">left</ui:insert>
</div>
<div id="content" class="left_content">
<ui:insert name="content">Content</ui:insert>
</div>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
客户端模板:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<body>
<ui:composition template="./../templates/TutorialsStructure.xhtml">
<ui:define name="title">
Start
</ui:define>
<ui:define name="top">
<h:graphicImage value="Image/butterfly.gif" style="alignment-adjust: central"/>
</ui:define>
<ui:define name="left">
</ui:define>
<ui:define name="content">
<h:form>
<div>
<p>
<div>
<h:outputLabel id="outputlabel_userName" …Run Code Online (Sandbox Code Playgroud)