java xml中存什么?java中xml有什么作用,用在什么地方
大家好,java xml中存什么相信很多的网友都不是很明白,包括java中xml有什么作用,用在什么地方也是一样,不过没有关系,接下来就来为大家分享关于java xml中存什么和java中xml有什么作用,用在什么地方的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
java中xml有什么作用,用在什么地方
java中xml一般是用来当做配置文件的,比方说struts的struts.xml、spring的application.xml,这里面记录的一般是配置信息,比方说servlet配置,映射注入配置等等都可以用xml来配置,当然配置也可以写入数据库,如果配置和程序的业务无关,也和系统配置无关,仅仅和系统构架有关,那就可以把配置写入xml里面来存储这些配置。
有关java和xml的
一般情况是使用DOM,SAX这是2个开原的插件,你只要在你的程序里导入就可以了JDOM或者DOM4J的JAR包就可以了。
下载的这2个插件都有自己的网站,建议使用JDOM这个比较简单的,至于如何读和写,网上有很多的例子.
XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开发作为宣传口号之一。由于笔者所从事的电子政务开发较早的引入了XML,所以尝到了许多甜头,在许多项目中利用XML数据交换信息,省去了许多麻烦事,不用制定繁锁的数据格式,利用XML数据易于表达,也利于一线开发者跟踪调试。
笔者先前也曾发表过相关的文章,比如《简析Delphi中的XML编程》一文,有兴趣的读者可以到Google网(http://www.google.com)去搜索一下,有很多媒体转载。今天笔者想探讨的是关于JAVA中的XML编程,希望对正在或想要学习XML编程的新老读者有所帮助。
在XML应用中,最常用也最实用的莫过于XML文件的读写,所以笔者通过一个简单的XML文件读写来作简要分析。可以在任何文本编辑器中先建立如下结构的XML文件,类似于HTML结构,但XML语义比较严格,起始标记必须配对,比如"〈学生花名册〉"与"〈/学生花名册〉"对应,空格多少可不必在意,但一般都以缩格形式书写,便于阅读。把此文件命名为Input.xml,可以在任何支持XML的浏览器中打开测试一下,如果输入正确,在浏览中可以看到此文件的树形表示结构。如果您还对XML结构感到比较陌生,建议先看看《简析Delphi中的XML编程》一文中关于XML文件的说明。
Input.xml
[code:1:af65f1d5b3]
<?xml version="1.0" encoding="GB2312"?>
<学生花名册>
<学生性别="男">
<姓名>李华</姓名>
<年龄>14</年龄>
<电话>6287555</电话>
</学生>
<学生性别="男">
<姓名>张三</姓名>
<年龄>16</年龄>
<电话>8273425</电话>
</学生>
</学生花名册>
[/code:1:af65f1d5b3]
准备工作做完后,接着就开始写实质性的JAVA代码了。为保存从XML文件读入的信息,需要先建一个简单的Bean来保存学生信息,命名为StudentBean,代码如下所示:
StudentBean.java
[code:1:af65f1d5b3]
public class StudentBean{
private String sex;//学生性别
private String name;//学生姓名
private int age;//学生年龄
private String phone;//电话号码
public void setSex(String s){
sex= s;
}
public void setName(String s){
name= s;
}
public void setAge(int a){
age= a;
}
public void setPhone(String s){
phone= s;
}
public String getSex(){
return sex;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public String getPhone(){
return phone;
}
}
[/code:1:af65f1d5b3]
之后写XML的测试类,
TESTXml.java
[code:1:af65f1d5b3]
import java.io.*;//Java基础包,包含各种IO操作
import java.util.*;//Java基础包,包含各种标准数据结构操作
import javax.xml.parsers.*;//XML解析器接口
import org.w3c.dom.*;//XML的DOM实现
import org.apache.crimson.tree.XmlDocument;//写XML文件要用到
public class XMLTest{
Vector student_Vector;
XMLTest(){
}
//为了保存多个学生信息,还得借助一个集合类(并不是单纯意义上的集合,JAVA中的集合是集合框架的概念,包含向量、列表、哈希表等),这里采用Vector向量类。定义在XMLTest测试类中,命名为student_Vector。然后定义两个方法readXMLFile和writeXMLFile,实现读写操作。代码如下:
private void readXMLFile(String inFile) throws Exception{
//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();
DocumentBuilder db= null;
try{
db= dbf.newDocumentBuilder();
}
catch(ParserConfigurationException pce){
System.err.println(pce);//出异常时输出异常信息,然后退出,下同
System.exit(1);
}
Document doc= null;
try{
doc= db.parse(inFile);
}
catch(DOMException dom){
System.err.println(dom.getMessage());
System.exit(1);
}
catch(IOException ioe){
System.err.println(ioe);
System.exit(1);
}
//下面是解析XML的全过程,比较简单,先取根元素"学生花名册"
Element root= doc.getDocumentElement();
//取"学生"元素列表
NodeList students= root.getElementsByTagName("学生");
for(int i= 0; i< students.getLength(); i++){
//依次取每个"学生"元素
Element student=(Element) students.item(i);
//创建一个学生的Bean实例
StudentBean studentBean= new StudentBean();
//取学生的性别属性
studentBean.setSex(student.getAttribute("性别"));
//取"姓名"元素,下面类同
NodeList names= student.getElementsByTagName("姓名");
if(names.getLength()== 1){
Element e=(Element) names.item(0);
Text t=(Text) e.getFirstChild();
studentBean.setName(t.getNodeValue());
}
NodeList ages= student.getElementsByTagName("年龄");
if(ages.getLength()== 1){
Element e=(Element) ages.item(0);
Text t=(Text) e.getFirstChild();
studentBean.setAge(Integer.parseInt(t.getNodeValue()));
}
NodeList phones= student.getElementsByTagName("电话");
if(phones.getLength()== 1){
Element e=(Element) phones.item(0);
Text t=(Text) e.getFirstChild();
studentBean.setPhone(t.getNodeValue());
}
student_Vector.add(studentBean);
}
}
private void writeXMLFile(String outFile) throws Exception{
//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();
DocumentBuilder db= null;
try{
db= dbf.newDocumentBuilder();
}
catch(ParserConfigurationException pce){
System.err.println(pce);
System.exit(1);
}
Document doc= null;
doc= db.newDocument();
//下面是建立XML文档内容的过程,先建立根元素"学生花名册"
Element root= doc.createElement("学生花名册");
//根元素添加上文档
doc.appendChild(root);
//取学生信息的Bean列表
for(int i= 0; i< student_Vector.size(); i++){
//依次取每个学生的信息
StudentBean studentBean=(StudentBean) student_Vector.get(i);
//建立"学生"元素,添加到根元素
Element student= doc.createElement("学生");
student.setAttribute("性别", studentBean.getSex());
root.appendChild(student);
//建立"姓名"元素,添加到学生下面,下同
Element name= doc.createElement("姓名");
student.appendChild(name);
Text tName= doc.createTextNode(studentBean.getName());
name.appendChild(tName);
Element age= doc.createElement("年龄");
student.appendChild(age);
Text tAge= doc.createTextNode(String.valueOf(studentBean.
getAge()));
age.appendChild(tAge);
Element phone= doc.createElement("电话");
student.appendChild(phone);
Text tPhone= doc.createTextNode(studentBean.getPhone());
phone.appendChild(tPhone);
}
//把XML文档输出到指定的文件
FileOutputStream outStream= new FileOutputStream(outFile);
OutputStreamWriter outWriter= new OutputStreamWriter(outStream);
((XmlDocument) doc).write(outWriter,"GB2312");
outWriter.close();
outStream.close();
}
//最后加入测试主函数,如下:
public static void main(String[] args) throws Exception{
//建立测试实例
XMLTest xmlTest= new XMLTest();
//初始化向量列表
xmlTest.student_Vector= new Vector();
System.out.println("开始读Input.xml文件");
xmlTest.readXMLFile("Input.xml");
System.out.println("读入完毕,开始写Output.xml文件");
xmlTest.writeXMLFile("Output.xml");
System.out.println("写入完成");
System.in.read();
}
}[/code:1:af65f1d5b3]
了,保存好StudentBean和XMLTest,把Input.xml保存到工作目录下。如果您输入很仔细,没敲错字母的话,可以看到"写入完成"了,去瞧瞧Output.xml文件和Input.xml文件是不是一样吧。如果您在调试过程中发现有什么问题,欢迎通过E-Mail:nbDeveloper@hotmail.com与笔者取得联系。 [/code]
web.xml文件主要配置有哪些,都有什么含义
①web.xml文件是用来配置:欢迎页、servlet、filter等配置文件用的。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的web工程
web.xml的模式文件中定义的标签并不是定死的,模式文件也是可以改变的,一般来说,随着web.mxl模式文件的版本升级,里面定义的功能会越来越复杂,
也即标签元素的种类会越来越多,但有些是不常用的,我们只需记住一些常用的就可以了。
首先是定义头和根元素
声明为xml文件,版本为1.0,编码为utf-8
声明该文件的内容可以使用xsi的标签库
声明标签的使用范围是被javaee的开发使用的
声明可以使用的标签库和对应的具体的标签库版本地址。
web.xml的模式(Schema)文件中定义了多少种标签元素,它就能拥有定义出来的那些功能
随着web.mxl模式文件的版本升级,里面定义的功能会越来越复杂,也即标签元素的种类会越来越多.
定义项目的名称.
项目名称
欢迎页面
servlet
配置springmvc DispatcherServlet(前台控制器)-->example这个Servlet的名字是example,可以有多个DispatcherServlet,是通过名字来区分的。
async-supported
启动一个新的线程去处理你的请求,完成之后调用你指定的回调函数来完成整个异步操作。
一般的jsp是通过地址栏输入一个地址,或者提交表单的方式发送请求的,这样网页都会被刷新。但是如果你在jsp页面发送一个ajax请求的话,跟前两种不同,
后台会返回给jsp页面内容,页面不会直接刷新,这样可以把返回的数据写在页面的div中,这样就完成了页面的局部刷新。
举个例子,baidu你做一个查询功能,页面上有查询条件和查询结果显示区域,你可以点查询按钮的时候通过ajax异步发送你的查询条件,
而你得到后台返回的查询结果后,更新你的jsp页面的查询结果,jsp的其他部分,比如查询条件,都没有更新,jsp没有刷新,而是更新了查询结果这一块内容
url-pattern 默认匹配所有请求Servlet拦截匹配规则可以自已定义1、拦截*.do、*.htm,例如:/user/add.do,这是最传统的方式,最简单也最实用。不会导致静态文件(jpg,js,css)被拦截。2、拦截/,例如:/user/add,可以实现现在很流行的REST风格。很多互联网类型的应用很喜欢这种风格的URL。弊端:会导致静态文件(jpg,js,css)被拦截后不能正常显示。
监听器
Listener获取的是Web应用ServletContext(application)的配置参数。-为Web应用配置Listener的两种方式:使用@WebListener修饰Listener实现类即可在web.xml文档中使用进行配置。我们选择web.xml这种配置方式,只有一个元素指定Listener的实现类.
②启动WEB项目的时候,Tomcat容器首先会去它的配置文件读取两个节点listener和context-param。
然后Tomcat会创建一个ServletContext(application),WEB项目所有部分都将共享这个上下文
将applicationContext.xml存入ServletContext中
Tomcat容器根据class类路径来创建监听
上面这些都是在web项目还没有完全启动起来就完成的工作,而servlet是在第一次发起请求时被实例化的
而且一般不会被容器销毁,并服务于多个用户的请求.
web.xml的加载顺序是: context-param-> listener-> filter-> servlet.
filter
Filter可认为是Servlet的“增强版”,因此Filter配置与Servlet的配置非常相似,需要配置两部分:配置Filter名称和Filter拦截器URL模式。区别在于Servlet通常只配置一个URL,而Filter可以同时配置多个请求的URL。配置Filter有两种方式:
在Filter类中通过Annotation进行配置。
在web.xml文件中通过配置文件进行配置。
①百度
②http://blog.csdn.net/believejava/article/details/43229361
1.在web.xml里配置监听器、过滤器、拦截器,书写顺序有没有什么要求?
根据网上资料来分析,应该是没有书写顺序的要求,容器会按照自己的加载方式去加载顺序.
2.监听器是必须要配置的吗?
不是必须要配置.
3假设配置了多个listener,那么会先加载哪个listener
如果有多个listener的情况下,我们可以根据自己的需要去手动设置先去加载哪个listener.
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~
http://www.jnshu.com/login/1/14708688
PPT: https://ptteng.github.io/PPT/PPT-java/Java-task2-webxml.html#/
好了,文章到此结束,希望可以帮助到大家。