基于XML语法的JSP
2009-06-11 13:15
330 查看
最近公司想把普通的JSP转换为基于严格的xml语法来写jsp,google了一天,发现都是些零零碎碎的资料,不完整,现在根据自己的所查资料和实践,总结如下(另:基于XML语法的jsp成为jsp Document,下文中就这么称呼了,呵呵).
xml语法,格式统一,编写的文件结构清晰,并且易学易用。而用xml语法来编写jsp文件,则可以轻松编写出易于管理和阅读的jsp文件,并且升级方便,只需替换DTD文档即可。用xml语法编写的文件,由于少来很多<%%>等符号,整体看来较为美观并且结构清晰。本文介绍下转换的规则和步骤。
首先,转换规则如下表:
转换的步骤基本上如下:
文件开头加上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>
其他也一样。
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>
其他也一样。
相关文章推荐
- pyquery: 基于python和jquery语法操作XML
- jsp基于XML实现用户登录与注册的实例解析(附源码)
- 基于JSP编译器基本语法的使用详解
- 基于JSP Servlet xml的select二级联动
- 【Java.Web】JSP —— 语法基础 —— 选择在web.xml配置访问JSP URL
- JSP语法的xml表达
- 基于JSP编译器基本语法的使用详解
- JSP语法的xml表达
- jsp基于XML实现用户登录与注册的实例解析(附源码)
- 基于jsp的bbs论坛-(6)java中对servlet的实现
- XML语法
- 基于jsp邮件收发系统用javamail包
- 基于xml的事务配置
- Java程序员从笨鸟到菜鸟之(十八)JSP基本语法与动作指令
- jsp之基础语法 指令和动作
- Eclipse/MyEclipse配置XML语法提示
- 基于sax的xml解析 含源码 各种工具类(一)
- spring学习笔记 -- day08 基于XML的Spring中的AOP
- jsp基本语法
- jsp学习--基本语法和基础知识