jsp笔记

一.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预定义了五个实体引用:

实体引用原字符含义
&lt;<小于
&gt;>大于
&amp;&and符号
&apos;'单引号或撇号
&quot;"双引号

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文档中。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值