美文网首页我爱编程
JavaEE_day11_XML&反射

JavaEE_day11_XML&反射

作者: 背对背拥抱 | 来源:发表于2017-06-03 21:43 被阅读0次

一、XML:

  • 概念:Extendsible Markup language,可扩展的标记语言。
  • 语法:
    1.文档声明:
<?xml version="1.0" encoding="UTF-8"?>

二、DTD约束:

这是一个XML约束,后缀名为.dtd
语法:

实例:

三、Schema约束:

后缀名.xsd,DTD的替代者。

四、dom4j:

dom解析原理及结构模型:

使用dom4j之前,必须要导入相应的jar包:
必须使用SaxReader加载xml文档获得Document,通过Document获取根元素,然后就可以进行相关操作:


import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class TestDom4j {
    @Test
    public void testReadWebXML() {
        try {
            // 1.获取解析器
            SAXReader saxReader = new SAXReader();
            // 2.获得document文档对象
            Document doc = saxReader.read("src/cn/itheima/xml/schema/web.xml");
            // 3.获取根元素
            Element rootElement = doc.getRootElement();
            // System.out.println(rootElement.getName());//获取根元素的名称
            // System.out.println(rootElement.attributeValue("version"));//获取根元素中的属性值
            // 4.获取根元素下的子元素
            List<Element> childElements = rootElement.elements();
            // 5.遍历子元素
            for (Element element : childElements) {
                //6.判断元素名称为servlet的元素
                if ("servlet".equals(element.getName())) {
                    //7.获取servlet-name元素
                    Element servletName = element.element("servlet-name");
                    //8.获取servlet-class元素
                    Element servletClass = element.element("servlet-class");
                    System.out.println(servletName.getText());
                    System.out.println(servletClass.getText());
                }
            }

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

}

五、反射:

概念:java反射机制就是在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法。

案例实现:

  • 一个接口:
public interface IMyServlet {

    public void init();

    public void service();

    public void destory();
}
  • 一个实现类:
public class MyServletImpl implements IMyServlet {

    @Override
    public void init() {
        System.out.println("啊,俺来也……");
    }

    @Override
    public void service() {
        System.out.println("我可以为你服务……");
    }

    @Override
    public void destory() {
        System.out.println("啊,俺去也……");
    }
}
  • 一个测试类:
import org.junit.Test;

public class TestMyServlet {

    @Test
    public void testMyServlet(){
        MyServletImpl my = new MyServletImpl();
        my.init();
        my.service();
        my.destory();
    }
    
    @Test
    public void testMyServlet1(){
        try {
            String className = "cn.zl.web.servlet.MyServletImpl";
            Class clazz = Class.forName(className);
            MyServletImpl my = (MyServletImpl) clazz.newInstance();
            my.init();
            my.service();
            my.destory();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • 解析实现:
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class TestMyServlet {
    
    @Test
    public void testMyServlet(){
        try {
            //1.创建解析器对象
            SAXReader saxReader = new SAXReader();
            //2.使用解析器加载web.xml文件得到document对象
            Document document = saxReader.read("src/cn/itheima/web/servlet1/web.xml");
            //3.获取根元素节点
            Element rootElement = document.getRootElement();
            //4.根据元素名称获取子元素节点
            Element servletElement = rootElement.element("servlet");
            //5.根据元素名称获取servlet-class的文本节点
            String servletClass = servletElement.element("servlet-class").getText();
            //System.out.println(servletClass);
            //6.通过类全名获取字节码文件
            Class clazz = Class.forName(servletClass);
            //7.创建实例对象
            MyServlet1 my = (MyServlet1) clazz.newInstance();
            //8.调用实例对象里面的方法
            my.init();
            my.service();
            my.destory();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

相关文章

  • JavaEE_day11_XML&反射

    一、XML: 概念:Extendsible Markup language,可扩展的标记语言。 语法:1.文档声...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • 镜面反射矩阵的推导

    镜面反射是以镜面作为反射平面,实物与反射物到反射平面的距离相等,实物与反射物方向相反,所以,反射矩阵由反射平面确定...

  • reflect.go包学习_之二 指针操作提高反射性能 反射应用

    reflect.go包学习_之二 指针操作提高反射性能 反射应用 反射创建实例 反射信息、反射调用方法、反射修改值...

  • Java互联网公司-经典面试题附答案

    基础:Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?优点:反射具有解耦性,缺点:反射属...

  • Java反射与joor反射库的使用

    java原生反射的使用 反射构造对象 反射方法 反射字段 joor反射库的使用 github:https://gi...

  • Java反射

    什么是反射? 反射的作用? 反射性能优化?

  • 反射三定律

    反射第一定律:反射可以将interface类型变量转换成反射对象 反射第二定律:反射可以将反射对象还原成inter...

  • 反射

    1.反射是什么?反射的定义,概念 2.为什么要学反射? 3.怎么使用反射?反射的使用

  • 一周岁前做好两件事,孩子就不会语言迟缓,保证口齿伶俐

    与语言发展相关的原始反射有四个:张口反射、足跖反射、抓握反射和手拉反射,每个反射的发生、发展和整合都是次第进行的,...

网友评论

    本文标题:JavaEE_day11_XML&反射

    本文链接:https://www.haomeiwen.com/subject/dbymfxtx.html