Raix 发表于 2019-11-24 21:42

通过反射获取数据

由于昨晚凌晨无聊写了个帖,由于木有仔细看版规,故删,我的错{:1_936:}。我想提个小小的意见,能否删帖不要全部删了,,辛辛苦苦手敲的给删了, 还不能找回来emmm.....
为了更加方便看清我就把包名都给你写了,,还有jar包
-------------------------------------官方大大,如果有误,一定提醒我或者帮我修改下噻,不要删帖不要删帖{:1_919:}{:1_919:}{:1_889:}---------------

WEB_XML (项目名)
      src
             cn.itheima.web.servlet
                     IMyServlet.java
             cn.itheima.web.servletImpl
                      IMyServletImpl.java
             cn.itheima.web.Testservlet
                     TestMyServlet.java
             cn.itheima.xml.dtd
                     web.xml
                     web-app_2.3.dtd
       lib
         dom4j-1.6.1.jar
         jaxen-1.1-beta-6.jar
通过上诉也能一目了然了噻,有基础自然懂,看不懂上面的就是还木有正式接触Java,或Exxxxx某,或者IDxx某等编程软件



言归正传开始写代码


-----------------------------------------------------------------分割线-----------------------------------------------------------------------------
IMyServlet.java部分(接口)

package cn.itheima.web.servlet;

public intferface IMyServlet(){

          public void init();

          public void service();

          public void destory();
}



IMyServletImpl.java部分(实现接口)

package cn.itheima.web.servletImpl

public class IMyServletImpl implements IMyServlet(){
         
         @Override
         public void init(){
                   System.out.println(“进入init方法中!");   
         }
         
         @Override
         public void service(){
                   System.out.println("进入service方法中!");
         }

         @Override
         public void destory(){
                   System.out.println("进入destory方法中!");
         }
}



web.xml部分

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">   <!--使用DTD约束-->
<web-app version="1.0">
        <servlet>
                <servlet-name>IMyServlet</servlet-name>
                <servlet-class>cn.itheima.web.servletImpl</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>IMyServlet</servlet-name>
                <url-pattern>/myServlet</url-pattern>
        </servlet-mapping>
</web-app>


web-app_2_3.dtd部分   由于没有DTD后缀的,只能XML惹

<!--
        吾爱破解编程语言专区DTD教学实例文档。
        模拟servlet2.3规范,如果开发人员需要在xml使用当前DTD约束,必须包括DOCTYPE。
        格式如下:
        <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
-->
a<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
<!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT jsp-file (#PCDATA)>

<!ELEMENT welcome-file-list (welcome-file+)>
<!ELEMENT welcome-file (#PCDATA)>

<!ATTLIST web-app version CDATA #IMPLIED>



TestMyServlet.java(测试代码)部分

package cn.itheima.web.servlet1;

import org.dom4j.Document;

public class TestMyServlet(){
         
         @test
         public void testMyServlet(){
               try{
                               //1.创建解析器对象
                               SAXReader saxReader = new SAXReader();
                              //2.编写web.xml地址
                              String url = "src/cn/itheima/xml/dtd/web.xml";
                              //3.使用解析加载web.xml文件得到document对象
                              Document document = saxReader.read(url);
                              //4.根据元素名称获取子元素节点获取根元素节点
                              Element rootElement = document.getRootElement();
                              //5.根据元素名称获取子元素节点
                              Element servletElement = rootElement.element("servlet");
                              //6.根据元素名称获取servlet-class的文本节点
                              String servletClass = servletElement.element("servlet-class").getText();   //由于这里获取到的是IMyServletImpl.java的地址,所以用String类型来接收
                              //7.通过类全名获取字节码文件
                              Class clazz = Class.forName(servletClass);
                              //8.创建实例对象
                              IMyServletImpl my = (IMyServletImpl) clazz.newInstance();
                           //9.调用实例对象里的方法
                           my.init();
                           my.service();
                           my.destory();
                     }catch(Exception e){
                               e.printStackTrace();
                     }
         }
}



-------------------------------------教程结束,基本关键部分代码都写了注释----------------------------------------------------------


-------------------------------------本代码纯属手敲,复制粘贴锻炼不大,因为我也是新手之一,以后就做个代码搬运工惹--------


-------------------------------------大佬勿喷,,暴躁老哥欢迎欢迎,我就喜欢这样的老哥,嘿嘿嘿---------------------------------
-------------------------------------会的就当作复习一遍咯,嘿嘿嘿嘿,新手可以模范试试哈,jar包上传了的-----------------------
-------------------------------------官方大大,如果有误,一定提醒我或者帮我修改下噻,不要删帖不要删帖{:1_893:}{:1_893:}{:1_936:}---------------

无限苦肉盖神 发表于 2019-12-8 11:36

包名含有广告信息

今天发布了吗 发表于 2019-12-15 10:31

现在dom没啥用了,基本没有用的了,自己Demo玩还行

Raix 发表于 2019-12-16 08:09

今天发布了吗 发表于 2019-12-15 10:31
现在dom没啥用了,基本没有用的了,自己Demo玩还行

那用啥噻
页: [1]
查看完整版本: 通过反射获取数据