DOM方式连接数据库生成XML文件解析XML文件JSP页面显示.docx
- 文档编号:11221739
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:18
- 大小:24.77KB
DOM方式连接数据库生成XML文件解析XML文件JSP页面显示.docx
《DOM方式连接数据库生成XML文件解析XML文件JSP页面显示.docx》由会员分享,可在线阅读,更多相关《DOM方式连接数据库生成XML文件解析XML文件JSP页面显示.docx(18页珍藏版)》请在冰豆网上搜索。
DOM方式连接数据库生成XML文件解析XML文件JSP页面显示
DOM方式_连接数据库_生成XML文档_解析XML文档_JSP页面显示
1、连接数据库:
sqlserver2008
表结构:
数据库连接:
采用单例模式
packagecom.util;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
publicclassDBConnection{
privatefinalstaticStringDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";//驱动
privatefinalstaticStringURL="jdbc:
sqlserver:
//localhost:
1433;DatabaseName=GLYISPro";//要连接数据库的路径
privatefinalstaticStringNAME="sa";//用户
privatefinalstaticStringPWD="321988";//使用的密码
privatestaticConnectionconn=null;//连接实例
/*******************单例模式的应用开始***************************/
privatestaticDBConnectionDBInstance=newDBConnection();//数据库类实例:
单例模式第一步
//私有的构造方法:
单例模式第二步
privateDBConnection(){
try{
Class.forName(DRIVER);//注册驱动
conn=DriverManager.getConnection(URL,NAME,PWD);//获取连接
}catch(ClassNotFoundExceptione){
System.out.println("找不到指定文件!
");//找不到驱动包
e.printStackTrace();
}catch(SQLExceptione){//连接数据库时报异常
e.printStackTrace();
}
}
//获取实例:
单例模式第三步
publicstaticDBConnectiongetInstance(){
returnDBInstance;
}
/*******************单例模式的应用结束***************************/
//获取连接
publicConnectiongetConn(){
returnconn;
}
//测试
publicstaticvoidmain(String[]agrs){
Connectionconn=DBConnection.getInstance().getConn();
if(conn!
=null){
System.out.println("数据库连接成功");
}else{
System.out.println("数据库连接失败");
}
}
}
2、建立实例类:
packagecom.util;
importjava.util.Date;
publicclassWorkRecord{
privateStringcom_id;//公司编号
privateStringID;//编号
privateStringcontent;//日记内容
privateStringclock;//时间
privateStringYH_ID;//用户编号
publicStringgetCom_id(){
returncom_id;
}
publicvoidsetCom_id(Stringcom_id){
_id=com_id;
}
publicStringgetID(){
returnID;
}
publicvoidsetID(StringiD){
ID=iD;
}
publicStringgetContent(){
returncontent;
}
publicvoidsetContent(Stringcontent){
this.content=content;
}
publicStringgetClock(){
returnclock;
}
publicvoidsetClock(Stringclock){
this.clock=clock;
}
publicStringgetYH_ID(){
returnYH_ID;
}
publicvoidsetYH_ID(StringyH_ID){
YH_ID=yH_ID;
}
}
3、数据库查询:
JDBC全查
packagecom.CRUD;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.ArrayList;
importjava.util.List;
importcom.dao.impl.DOMImpl;
importcom.util.DBConnection;
importcom.util.WorkRecord;
publicclassCRUDImpl{
privateConnectionconn=null;
privatePreparedStatementpst=null;
privateResultSetrs=null;
//全查
publicList
List
WorkRecordrecord=null;
try{
Stringsql="select*fromdbo.TBL_OA_GZRJ";//sql语句
conn=DBConnection.getInstance().getConn();//建立连接
pst=conn.prepareStatement(sql);//发送sq命令并进行预编译
rs=pst.executeQuery();//实行sql命令并返回结果集
while(rs.next()){//如果rs.next()为true,说明结果集中有值,也就需要进行遍历了
record=newWorkRecord();
record.setCom_id(rs.getString
(1));//第一列
record.setID(rs.getString
(2));
record.setContent(rs.getString(3));
record.setClock(newDOMImpl().dateToString(rs.getDate(4)));//数据库中此列的数据为Date类型,WorkRecord中的是String类型的
record.setYH_ID(rs.getString(5));
recordList.add(record);//将对象添加到list中
}
}catch(SQLExceptione){
e.printStackTrace();
}
returnrecordList;//返回结果
}
}
4、生成和解析XML文档,将结果显示在JSP页面上
packagecom.dao.impl;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.ArrayList;
importjava.util.Date;
importjava.util.List;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.parsers.ParserConfigurationException;
importjavax.xml.transform.OutputKeys;
importjavax.xml.transform.Transformer;
importjavax.xml.transform.TransformerConfigurationException;
importjavax.xml.transform.TransformerException;
importjavax.xml.transform.TransformerFactory;
importjavax.xml.transform.dom.DOMSource;
importjavax.xml.transform.stream.StreamResult;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.Node;
importorg.w3c.dom.NodeList;
importorg.w3c.dom.Text;
importorg.xml.sax.SAXException;
importcom.CRUD.CRUDImpl;
importcom.dao.XMLDocument;
importcom.util.WorkRecord;
/**
*DOM生成和解析XML文档
**/
publicclassDOMImpl{
privateDocumentdocument;
privateDocumentBuilderbuilder;
/**
*初始化
**/
publicvoidinit(){
try{
DocumentBuilderFactorybuilderFactory=DocumentBuilderFactory.newInstance();//创建解析工厂实例
builder=builderFactory.newDocumentBuilder();//创建解析器实例
}catch(ParserConfigurationExceptione){
e.printStackTrace();
}
}
/**
*创建XML
*@paramfileName文件路径名称
**/
publicvoidcreatXML(StringfileName){
CRUDImplCRUD=newCRUDImpl();//实例化
List
this.document=builder.newDocument();//实例化document对象
//是否呼叫外部文件,此处设置为true,表示此文件独立,不需要呼叫外部文件,也就是不需要导入外部的dtd文件
this.document.setXmlStandalone(true);
this.document.setXmlVersion("1.0");//版本号
Elementroot=this.document.createElement("root");//创建根目录
Elementrecords=this.document.createElement("records");//创建records
for(inti=0;i Elementrecord=this.document.createElement("record");//创建record //创建record下面的子节点 Elementcom_Id=this.document.createElement("com_id"); ElementID=this.document.createElement("ID"); Elementcontent=this.document.createElement("content"); Elementclock=this.document.createElement("clock"); ElementYH_ID=this.document.createElement("YH_ID"); //创建子节点 Textcom_IdText=this.document.createTextNode(recordList.get(i).getCom_id()); TextIDText=this.document.createTextNode(recordList.get(i).getID()); TextcontentText=this.document.createTextNode(recordList.get(i).getContent()); TextclockText=this.document.createTextNode(recordList.get(i).getClock()); TextYH_IDText=this.document.createTextNode(recordList.get(i).getYH_ID()); //赋值 com_Id.appendChild(com_IdText); ID.appendChild(IDText); content.appendChild(contentText); clock.appendChild(clockText); YH_ID.appendChild(YH_IDText); //将各节点添加到父节点: 将com_id,ID,content,clock,YH_ID添加到record上,建立跟record之间的父子关系 record.appendChild(com_Id); record.appendChild(ID); record.appendChild(content); record.appendChild(clock); record.appendChild(YH_ID); //将records添加到record上 records.appendChild(record); } root.appendChild(records);//将records追加到root上面 this.document.appendChild(root);//将root追加到document的子节点 try{ TransformerFactorytf=TransformerFactory.newInstance();//创建工厂 Transformertransformer=tf.newTransformer();//transformer对象 DOMSourcesource=newDOMSource(document);//创建DOMSource对象并封装document对象 transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312");//编码 transformer.setOutputProperty(OutputKeys.INDENT,"yes");//是否缩进 PrintWriterpw=newPrintWriter(newFileOutputStream(fileName));//创建输出对象,输出到fileName中 //FileOutputStreampw=newFileOutputStream(newFile(fileName)); //当用TransformerFactory来更新xml时,要生成一个StreamResult,而StreamResultresult=newStreamResult(params)中的params要的是OutputStream StreamResultresult=newStreamResult(pw); transformer.transform(source,result);//调用transformer方法进行转换 System.out.println("XML文件生成成功! "); }catch(TransformerConfigurationExceptione){ e.printStackTrace(); }catch(FileNotFoundExceptione){ System.out.println("文件路径处"); e.printStackTrace(); }catch(TransformerExceptione){ System.out.println("转换时"); e.printStackTrace(); } } publicvoidparseXML(StringfileName){ try{ this.document=builder.parse(fileName);//指定解析的文件 NodeListroot=document.getChildNodes();//获取根目录 for(inti=0;i NoderecordsNode=root.item(i); NodeListrecords=recordsNode.getChildNodes(); for(intj=0;j NoderecordNode=records.item(j); NodeListrecord=recordNode.getChildNodes(); for(intk=0;k System.out.print(record.item(k).getTextContent()); } } } }catch(SAXExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } /** *将指定的XML文件解析后显示到页面上 *思路: 将解析的文件封装成一个对象,并添加到list中,再在页面上遍历出来 **/ publicList List try{ this.document=builder.parse(fileName);//指定要解析的文件 NodeListroot=this.document.getChildNodes();//获取根目录 for(inti=0;i NoderecordsList=root.item(i); NodeListrecords=recordsList.getChildNodes(); for(intj=0;j NoderecordList=records.item(j); NodeListrecord=recordList.getChildNodes(); for(intk=0;k if(k==(record.getLength()-1)/2){//当k=25的时候,会报“空指针”异常 break; }else{ Nodeel=record.item(k); WorkRecordwork=elementToObj(el,k); workList.add(work); } } } } }catch(SAXExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } returnworkList; } publicWorkRecordelementToObj(Nodeel,intk){ WorkRecordrecord=newWorkRecord(); record.setCom_id(t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DOM 方式 连接 数据库 生成 XML 文件 解析 JSP 页面 显示