和JSP中的<html:html>元素有什么区别?

时间:2018-11-08 05:31:47

标签: java html jsp struts-1

我正在开发一个简单的Struts 1.x Web应用程序,并且有一个名为success.jsp的文件,这是示例代码:

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>success.jsp</title>
<html:base/>
</head>
<body>
<a href="myStart.do">Go to myStart</a>
</body>
</html:html>

默认情况下,使用<html>代替<html:html>,我是否可以知道这两个元素之间的主要区别是什么?是否需要指定它们的用途?此外,<html:base/>元素的主要功能是什么?

顺便说一句,我为这些元素找到了一些定义,但我需要澄清一下:

  

<html:html>呈现一个HTML <html>元素,该元素具有从用户当前Locale对象中提取的语言属性(如果有)。

     

<html:base>呈现具有href属性的HTML元素,该href属性指向封闭的JSP页面的绝对位置。仅当嵌套在HTML <head>元素中时,此标记才有效。此标记很有用,因为它允许您使用页面中的相对URL引用,这些相对URL引用是基于页面本身的URL计算的,而不是最近一次提交所针对的URL(浏览器通常在该URL上解析相对引用)。

1 个答案:

答案 0 :(得分:1)

<html:html>标记是Struts 1.x JSP Taglib指令,在您的JSP页面的此行中声明:

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

这些自定义标签的格式通常为<prefix:tagname>。在prefix上声明的taglib是将您的taglib容器绑定到该taglib中可用的标记列表的一种方式。

实质上,<html:html>告诉标记为html的taglib在呈现JSP时呈现html元素。

因此,要回答您的问题,<html>是HTML指令,而<html:html>是Struts JSP taglib标记以生成HTML <html>指令。