7.2 页面初始化标签
7.2.1 <html:html>标签
该标签对应HTML中的<html>元素。<html:html>标签中的lang属性设置为“true”时,<html:html>标签会先在当前会话中查找Locale对象,并根据该Locale对象输出网页使用的语言。如果不存在session会话或者当前会话中没有Locale对象,则根据客户端的HTTP请求头中的accept-language属性值来输出网页使用的语言。若HTTP请求头中不存在accept-language属性,此时<html:html>标签会根据默认的Locale来输出网页使用的语言。
在Struts 1.2版本中,<html:html>标签通过增加的lang属性来实现与Struts以前版本中locale属性相同的功能。但是在不存在session会话的情况下,使用locale属性的<html:html>标签会创建一个session会话,用来保存来自HTTP请求中的Locale对象。该种方法要求应用必须支持session,已逐渐被lang属性取代。
说明如下。
① 在程序中可通过内置对象request的getHeader("accept-language")方法查看请求头中包含的语言种类,这些语言可在浏览器菜单的“工具”/“因特网选项”命令下单击【语言】按钮出现的“语言首选项”对话框中进行添加或删除。当清空该对话框内的所有语言种类后,来自客户端的HTTP请求头中将不存在accept-language属性。
② 默认的Locale对象是在JVM启动时查询操作系统而设置的。
例如:应用程序中某一JSP页面包含如下代码。
<%@ taglib uri="struts-html" prefix="html"%>
<html:html lang="true">
<body>Hello world!</body>
</html:html>
若客户端浏览器使用中文语言,则上述的JSP代码将被解析为如下HTML代码。
<html lang="zh-CN">
<body>Hello world!</body>
</html:html>
若客户端浏览器使用英语(美国)语言,则上述的JSP代码将被解析为如下HTML代码。
<html lang="en-US">
<body>Hello world!</body>
</html:html>
7.2.2 <html:base>标签
该标签对应HTML中的<base>元素。<html:base>标签中的server属性可以改变当前请求链接中服务器的名称;target属性指定打开目标页面的窗口或框架。
若当前应用为Logon,其根目录下的index.jsp文件包含如下代码。
<html:html lang="true">
<head><html:base/></head>
<body>
<a href="default.jsp">链接到XXX网站</a>
</body>
</html:html>
则<html:base/>标签会生成如下HTML元素。
<base href="http://localhost:8080/Logon/index.jsp">
加上server和target属性的<html:base/>标签,
<html:base server="192.168.1.17" target="_blank"/>
则会生成如下HTML元素。
<base href="http://192.168.1.17:8080/Logon/index.jsp" target="_blank">
此时页面中超链接的URL为“http://192.168.1.17:8080/Logon/default.jsp”,单击“链接到XXX网站”链接后会在新的窗口中显示响应信息。






