一.jsp隐含对象(http://wenku.baidu.com/view/377b58791711cc7931b71668.html)
1、out 来源于java.io.Writer类,它用于发送输出流到客户端。 2、request 来源于javax.servlet.http.HttpServletRequest接口。它被关联到每一个HTTP请求。 3、response 来源于javax.servlet.http.HttpServletResponse。response对象用于把取得的数据返回到客户端。 4、pageContext 提供访问JSP页面的命名空间。它也提供用来访问其他的JSP隐含对象。 5、session 来源于javax.servlet.http.HttpSession。它用于存储客户端请求的信息,因此它是有状态交互式的。 6、application 来源于javax.servlet.ServletContext。 7、config 来源于ServletConfig,它包含了当前JSP/Servlet所在的WEB应用的配置信息。 8、page 来源于当前被访问JSP页面的实例化。它实际使用的是JSP转换成的Servlet。 9、exception 用于捕获JSP抛出的异常。它只有在JSP页面属性isErrorPage=true时才可用。
二.XML实体引用
在xml中,一些字符有着特殊的意义。例如,如果你把字符'<'放在xml元素中,就会发生错误,这是因为解析器会把它当做一个新元素的开始,如下所示:
<?xml version="1.0"?>
<root>
<expression>1<2</expression>
</root>
这样会产生致命错误:
FATAL ERROR:Excepted an element name
为了避免这个错误,xml预定义了五个实体引用:
实体引用 | 原字符 | 含义 |
< | < | 小于 |
> | > | 大于 |
& | & | and符号 |
' | ' | 单引号或撇号 |
" | " | 双引号 |
CDATA
前面谈到使用实体引用代替特殊符号。但是当用户的文本数据包含大量特殊符号的时候,就不得不通篇的使用实体引用,把本来很清晰的一段文字搞得乱七八糟,而且这样做是一件非常费力的事情。此时,可以使用一个特殊的标记CDATA(Character Data ,字符数据)。它的形式如下所示:
<![CDATA[
comment
]]>
CDATA的文本字符中是不能出现"]]>"的,因为它代表CDATA数据块的结束标志。包含在CDATA段中的全部自负都被处理器视为普通字符。
css
可以使用xml-stylesheet处理指令将xml与css文档相关联。
JDOM解析XML
<?xml version="1.0" encoding="utf-8"?>
<books>
<book email="zhoujunhui">
<name>rjzjh</name>
<price>60.0</price>
</book>
</books>
public class JDomParse {
public JDomParse(){
String xmlpath="library.xml";
SAXBuilder builder=new SAXBuilder(false);
try {
Document doc=builder.build(xmlpath);
Element books=doc.getRootElement();
List booklist=books.getChildren("book");
for (Iterator iter = booklist.iterator(); iter.hasNext();) {
Element book = (Element) iter.next();
String email=book.getAttributeValue("email");
System.out.println(email);
String name=book.getChildTextTrim("name");
System.out.println(name);
book.getChild("name").setText("alterrjzjh");
}
XMLOutputter outputter=new XMLOutputter();
outputter.output(doc,new FileOutputStream(xmlpath));
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new JDomParse();
}
}
解释代码
引用的类:
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
//下面是引用到JDOM中的类
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
(1)使用JDOM首先要指定使用什么解析器。如:
SAXBuilder builder=new SAXBuilder(false); 这表示使用的是默认的解析器
(2)得到Document,我们以后要进行的所有操作都是对这个Document操作的:
Document doc=builder.build(xmlpath);
(3)得到根元素:
Element books=doc.getRootElement();
在JDOM中所有的节点(DOM中的概念)都是一个org.jdom.Element类,当然他的子节点也是一个org.jdom.Element类。
(4)得到元素(节点)的集合:
List booklist=books.getChildren("book");
这表示得到“books”元素的所在名称为“book”的元素,并把这些元素都放到一个List集合中
(5)轮循List集合
for (Iterator iter = booklist.iterator(); iter.hasNext();) {
Element book = (Element) iter.next();
}
还有一种轮循方法是:
for(int i=0;I Element book=(Element)booklist.get(i);
}
(6)取得元素的属性:
String email=book.getAttributeValue("email");
取得元素book的属性名为“email”的属性值。
(7)取得元素的子元素(为最低层元素)的值:
String name=book.getChildTextTrim("name");
注意的是,必须确定book元素的名为“name”的子元素只有一个。
(8)改变元素(为最低层元素)的值:
book.getChild("name").setText("alterrjzjh");
这只是对Document的修改,并没有在实际的XML文档中进行修改
(9)保存Document的修改到XML文件中:
XMLOutputter outputter=new XMLOutputter();
outputter.output(doc,new FileOutputStream(xmlpath));
我们先要有一个XMLOutputter类,再把已经修改了的Document保存进XML文档中。