您的位置:首页 > Web前端 > JavaScript

基于XML语法的JSP

2009-06-11 13:15 330 查看
最近公司想把普通的JSP转换为基于严格的xml语法来写jsp,google了一天,发现都是些零零碎碎的资料,不完整,现在根据自己的所查资料和实践,总结如下(另:基于XML语法的jsp成为jsp Document,下文中就这么称呼了,呵呵).

xml语法,格式统一,编写的文件结构清晰,并且易学易用。而用xml语法来编写jsp文件,则可以轻松编写出易于管理和阅读的jsp文件,并且升级方便,只需替换DTD文档即可。用xml语法编写的文件,由于少来很多<%%>等符号,整体看来较为美观并且结构清晰。本文介绍下转换的规则和步骤。

首先,转换规则如下表:

JSP 元素

XML相应元素
<%@ page ... %>
<jsp:directive.page ... />
<%@ taglib ... %>
使用<jsp:root>的xmlns属性设定
<%@ include ... %>
<jsp:directive.include .../>
<%! ... %>
<jsp:scriptlet> .... </jsp:scriptlet>
<% ... %>
<jsp:scriptlet> .... </jsp:scriptlet>
<%= ....%>
<jsp:expression> .... </jsp:expression>
转换的步骤基本上如下:

文件开头加上XML文档的标识:<?xml version="1.0" encoding="UTF-8" ?>

加入根元素<jsp:root></jsp:root>,这个不是必须的,但个人建议最好加上,这样就显得整个文件较有层次感,更接近XML文档的习惯语法。

taglib 标签库引入的转换。如果进行了第二步,即添加了根元素<jsp:root></jsp:root>,则可以通过其xmlns属性设置。例如,普通jsp语法:<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>;转换为jsp Document后变为:<jsp:root xmlns:f="http://java.sun.com/jsf/core">。当然,也可以不在根元素<jsp:root>内引入,而是在用到某个或某类标签时再引入,如<html xmlns="http://www.w3.org/1999/xhtml">

<%@ page %>的转换。转换为<jsp:directive.page ... />。例如,对于<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>,转换为<jsp:directive.page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" />。

<%= %>转换。对于在页面内用java代码编写的代码用<jsp:scriptlet> </jsp:scriptlet>及<jsp:expression> </jsp:expression>代替。但要注意只是java代码上述放在两个标签内。例如,<link href="<%= request.getContextPath() %>/css/grid.css"
rel="stylesheet" type="text/css" />应转换为:
<jsp:text>
<![CDATA[<link href="]]>
</jsp:text>
<jsp:expression>request.getContextPath()</jsp:expression>
<jsp:text>
<![CDATA[/css/grid.css"
rel="stylesheet" type="text/css" />]]>
</jsp:text>。
对于<jsp:scriptlet></jsp:scriptlet>与<jsp:scriptlet></jsp:scriptlet>的转换亦相同。

最后,对于为每一个非JSP元素或者不能识别标签建立一个CDATA元素。例如“<p> </p>”,不能识别  ,需用CDATA定义,如上面需转换为
<jsp:text>
<![CDATA[<p> </p>]]>
</jsp:text>
其他也一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: