JSP学习回忆2

1、JAVA术语:i18n:internationalization(国际化)缩写
      l10n:localization(本地化)缩写
2、JSP中文乱码解决方法:
在Tomcat5中修改server.xml:
    <Connector
port="8888"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" URIEncoding="GBK"/>
在java程序中添加:response.setContentType("text/html;charSet=GBK");
在MySQL创建表时在后面加 default charset=GBK
在JSP页面头部加上:<%@page contentType="text/html;charset=GBK"%>//charset要全部小写
连接数据库时:con=DriverManager.getConnection("jdbc:mysql://localhost/tbtest?user=&
password=&useUnicode=true&characterEncoding=GBK"); //一般不需要
在html页头部添加:<META http-equiv=Content-Type content="text/html;charset=GBK">
3、JSP2.0新特性:简单标签类:
必须实现javax.servlet.jsp.tagext.SimpleTag或继承其辅助类SimpleTagSupport,SimpleTag接口
方法主要有:
doTag(), setParent(JspTag parent), getParent(), setJspContext(JspContent pc),
setJspBody(JspFragment jspBody)
辅助类SimpleTagSupport增加了:
getJspBody()返回一个JspFragment对象,该对象封装了标签体的内容
findAncestorWithClass(JspTag form,java.util.Class class)
注意:在<tag>标签中的<body-content>中必须是scriptless或empty,即<body-content>scriptless</body-content>
4、JSP用SAX(Simple API for XML)方法分析:采用事件驱动的方法
  //1、用SAXParserFactory.newInstance()获取 SAXParserFactory 的一个新实例
  SAXParserFactory spfact=SAXParserFactory.newInstance();
  //validating - 如果由此代码生成的解析器在解析文档时验证文档,则为 true;否则为 false。
  spfact.setValidating(false);
  //2、使用上面获得的SAXParserFactory实例的newSAXParser()获得一个新的SAXParser实例
  SAXParser saxParser=spfact.newSAXParser();
  //3、用上面创建的SAXParser实例的getXMLReader()得到一个XMLReader实例
  XMLReader reader=saxParser.getXMLReader();
  //4、用指定的(将由Bean传入)文件名创建一FileReader对象
  FileReader file=new FileReader(filename);
  //5、允许应用程序注册内容事件处理程序。
  //如果应用程序不注册内容处理程序,则将默默地忽略由 SAX 解析器报告的所有内容事件
  reader.setContentHandler(this);//本类继承自DefaultHandler <- ContentHandler
  //6、用XMLReader的parse(InputSource)分析
  reader.parse(new InputSource(file));//parse()中自动调用以下的startElement(),endElement(),characters()
  //或直接用SAXParser的parser(InputSource,DefaultHandler)分析也可以
  //saxParser.parse(new InputSource(file), this);
  return taskvect;
5、JSP用DOM(Document Object Model)方法分析:
package xml.DOM;
public class DOMParser
{
public static String filename="D://JAVA//MyApps//JAVA WEB//JSP and XML//WEB-INF//classes//xml//DOM//tasklist.xml";
public static void setFilename(String filename){
  DOMParser.filename=filename;
}
public DOMParser(){}
public static org.w3c.dom.Document parse(){
  try{
   //1、得到一个DocumentBuilderFactory实例
   javax.xml.parsers.DocumentBuilderFactory dbf=
    javax.xml.parsers.DocumentBuilderFactory.newInstance();
   //2、得到一个DocumentBuilder对象
   javax.xml.parsers.DocumentBuilder db=dbf.newDocumentBuilder();
   //3、用DocumentBuilder.parse()分析XML文件,返回一个org.w3c.dom.Document对象
   org.w3c.dom.Document doc=db.parse(new java.io.File(filename));
   return doc;
  }catch(javax.xml.parsers.ParserConfigurationException pe)
  {
   System.out.println("ParserConfigurationException");
  }catch(org.xml.sax.SAXException se){
   System.out.println("SAXException");
  }catch(java.io.IOException ie){
   System.out.println("IOException");
  }
  return null;
}
// 自定义得到根节点的方法和得到子节点值的方法,方便在JSP页面的使用
public static org.w3c.dom.Element getRoot(String filename){
  DOMParser.setFilename(filename);
  org.w3c.dom.Document doc=DOMParser.parse();
  org.w3c.dom.Element root=doc.getDocumentElement();
  return root;
}
public static String getElementValue(org.w3c.dom.Element parent,String tagname,
   int i){
  org.w3c.dom.NodeList nodes=parent.getElementsByTagName(tagname);
  org.w3c.dom.Element node=(org.w3c.dom.Element)nodes.item(i);
  String elementValue=node.getFirstChild().getNodeValue();
  return elementValue;
}



/*在Console的测试,需要更改上面的static*/
/*
public static void main(String args[]){
  DOMParser dp=new DOMParser();
  dp.setFilename("D://JAVA//MyApps//JAVA WEB//JSP and XML//WEB-INF//classes//xml//DOM//tasklist.xml");
  org.w3c.dom.Document doc=dp.parse();
  //得到Document的根:getDocumentElement()直接得到XML文档的根
  org.w3c.dom.Element root=doc.getDocumentElement();
  System.out.println("根节点是:"+root);
  
  //下面进行遍历XML文档
  //1、由根节点,得到根节点下的所有的<task>,组成一个NodeList
  org.w3c.dom.NodeList task=root.getElementsByTagName("task");
  for (int i=0; i<task.getLength(); i++){//遍历每个tasklist子标签,即task标签
   //2、获得一个<task>元素(Element继承自Node,代表XML中的一个元素)
   org.w3c.dom.Element taskE=(org.w3c.dom.Element)task.item(i);
   String id=taskE.getAttribute("id");//得到<task>的属性id的值
  
   //-------开始进行<taskid>获取
   //3、得到<task>下的<taskid>属性的信息:
   //3_1、得到所有的<taskid>属性(NodeList) (可以有多个<taskid>,下面返回它们组成的一个节点链)
   org.w3c.dom.NodeList taskids=taskE.getElementsByTagName("taskid");
   //3_2、得到指定位置的<taskid>元素(ELement),这里是第一个<taskid>
   org.w3c.dom.Element taskidE=(org.w3c.dom.Element)taskids.item(0);
   //3_3、得到<taskid>元素第一个子节点,并由此得到该子节点的值
   String taskid=taskidE.getFirstChild().getNodeValue();
   //下面这样得到的是:[#text:+(上面方法得到的)]
   //String taskid=taskidE.getFirstChild().toString();
   //------获得<taskid>完毕
  
   org.w3c.dom.NodeList namels=taskE.getElementsByTagName("name");
   org.w3c.dom.Element nameE=(org.w3c.dom.Element)namels.item(0);
   String name=nameE.getFirstChild().getNodeValue();
  
   org.w3c.dom.NodeList startls=taskE.getElementsByTagName("start");
   org.w3c.dom.Element startE=(org.w3c.dom.Element)startls.item(0);
   String start=startE.getFirstChild().getNodeValue();
  
   org.w3c.dom.NodeList endls=taskE.getElementsByTagName("end");
   org.w3c.dom.Element endE=(org.w3c.dom.Element)endls.item(0);
   String end=endE.getFirstChild().getNodeValue();
  
   System.out.println("ID:"+id+"  taskid:"+"  name:"+name+
     "  start:"+start+"  end:"+end);
  
  }
}*/
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值