加载中…
个人资料
水煮鱼
水煮鱼
  • 博客等级:
  • 博客积分:0
  • 博客访问:105
  • 关注人气:2
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

关于 jspx 文件的一些说明

(2007-03-08 15:07:24)

jspxJSP 2.0中的一项重要的功能提升,jspx其实就是以xml语法来书写jsp的文件。我们知道jsp的格式,其中有一个重要的特征就是包含“<%”声明符,jsp文件通常在服务器端处理后呈现为html代码,尽管jsp通常的目的是处理web页面,但是jsp的代码呈现却不是我们希望的htmlxml格式,代码非常混乱,这也是为什么出现jspx啦。jspx文件本身符合xml的规范, 但是它自己本质又是一个jsp文件, 因为在所有jsp里边能够做到的事情在jspx里边同样也可以做到。如果熟悉jsp的语法, 那么将一个jsp转变为一个jspx很容易, 只需要做下面的几个步骤。
 

1) 由于在jsp语法里边已经有很多的元素是符合xml规范的, 比如<jsp:getProperty name="date" property="hours"/>,所以只需要将那么不符合xml规范的tag替换掉就可以了。不符合规范的有(主要的):
<%@ include .. %>                      <jsp:directive.include .. />
<%@ page .. %>                         <jsp:directive.page .. />
<%@ taglib .. %>                        xmlns:prefix="tag library URL"
<%= ..%>                                  <jsp:expression> .. </jsp:expression>
<% ..%>                                    <jsp:scriptlet> .. </jsp:scriptlet>
右边是jspx中的替代方法, 除此之外, jspx还另外新加了几个element:
<jsp:root>用于处理多个root元素的时候。
<jsp:text>格式化text的时候, 还有显示普通el的时候
<jsp:element>和<jsp:attribute>用来自动产生一个tag
<jsp:output>用来输出declaration

2) jspx页面中的一些不符合xml规范的html元素也需要进行规范化。

3) 让web container识别jspx,编辑Tomcat的conf目录下的web.xml文件,加入如下内容.

<jsp-config>
    <jsp-property-group>
      <display-name>books</display-name>
      <url-pattern>*.jspx</url-pattern>
      <el-ignored>false</el-ignored>
      <scripting-invalid>false</scripting-invalid>
      <is-xml>true</is-xml>
    </jsp-property-group>
</jsp-config>

需要指出的是,jspx在客户端输出的xml格式是不进行dtd验证的。

 

4) jspx中,我们完全看不到了我们熟悉的“<%”和“%>”符号,因为这两个符号和xml格式完全不兼容的,如果你想使用jsp scriptlet,你可以使用“<jsp:scriptlet>”进行操作。原来的taglib声明现在全部转换为xml的命名空间(namespace)taglib的使用也非常方便。如果是开发web页面,jspx完全就是html代码,只是在页面之前加入了jsp:root的声明。Jspx的编写是非常方便的,下面我们就介绍一下实际开发中如何去编辑jspx文件。使用Dreamweaver编辑jspx:这里我们将jspx完全作为html去对待,Dreamweaver默认没有针对jspx后缀名的文件进行编辑关联,我们只需打开%DREAMWEAVER_HOME%\Configuration\DocumentTypes\MMDocumentTypes.xml文件,在id为“html”的documenttype元素的“winfileextension”属性值中添加jspx即可,当我们打开jspx文件时,只需按照普通的html文件编辑即可,利用Dreamweaver出色的可视化的界面设计,这种编辑方式比编辑jsp文件方便多啦。

 

示例:

demo.jsp

<%@page contentType="text/html;charset=gb2312"  %>

<%@page import="java.util.*" %>

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>

<head>

<title>my demo jsp</title>

</head>

<body>

<%

        Date now=new Date();

        out.println(now.toString());

%>

</body>

</html>

 

demo.jspx

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"

          xmlns="http://www.w3.org/1999/xhtml"

          xmlns:c="http://java.sun.com/jsp/jstl/core" version="1.2">

    <jsp:directive.page contentType="text/html" pageEncoding="gb2312"/>

    <jsp:directive.page import="java.util.Date"/>

    <html>

        <head>

            <title>my demo jspx</title>

        </head>

        <body>

            <jsp:scriptlet>

                Date now new Date();

                out.println(now.toString());

            </jsp:scriptlet>

        </body>

    </html>

</jsp:root>

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有