기록을 회계 이러한 개발 - 열한번째 일 (2020년 1월 29일)

오늘날 지식과 반사 XML 학습. 사실, 서블릿 및 실행 단계의 기본 논리. 왜 우리는 그것을 허용하는 서블릿의 web.xml 구성을 실행할 수 있습니까? 오늘, 사실, 나는 그런 문제를 배웠습니다.

우선, XML은 HTML과 XML은 비슷하지만 차이점은 XML 레이블 사용자 정의 할 수 있습니다 (예 : 하이퍼 링크에 지정된 HTML 태그 등을,하지만 조항의 XML이없는) 종료 태그가 있어야 각 레이블의 시작의 XML을 규정. 실시 예 </ 헬로>해야의 대응 <헬로> 순차 <B>는 <난> 헬로 </ B> </ I>는 HTML, XML로 가능하지만, 가능하지 않다 기록해야로서 사양 및 정확한.

사양 XML을 작성, 우리가 더 실용적 전자보다 후자의 두 사양 --DTD 스키마 제약과 제약을 배웠지 만 먼저 DTD 제약 학습, 학습을 위해서 한 즉, 후. 즉, DTD가 제공하는 프레임 워크를 통해 XML 문서를 작성하는 것입니다. 스키마 제약과 유사하게, 쓰기가 좋은 프레임 워크를 제공함으로써 수행 될 수있다, 다음은 코드입니다 :

<? XML 버젼 = "1.0" "UTF-8"인코딩 = ?> 
<! DOCTYPE 웹 응용 프로그램 SYSTEM "웹 app_2_3.dtd" > 
< 웹 응용 프로그램 버전 = "1.0" > 
    < 서블릿 > 
        < 서블릿 이름 > </ 서블릿 이름 > 
        < 서블릿 클래스 > </ 서블릿 클래스 > 
    </ 서블릿 > 
    < 서블릿 매핑 > 
        < 서블릿 이름 > </ 서블릿 이름 > 
        < URL 패턴 > </ URL 패턴 >
    
    환영 파일 목록 > 
        < 환영 파일 > </ 환영 파일 > 
    </ 환영 - 파일 목록 > 
</ 웹 응용 프로그램 >
DTD 제약
1  <? XML 버젼 = "UTF-8"코딩 "1.0" ?> 
2  < 웹 응용 프로그램 의 xmlns = "http://www.example.org/web-app_2_5" 에 xmlns :이 xsi = "HTTP : //www.w3. 조직 / 2001 / 된 XMLSchema 인스턴스 " 
3      에서는 xsi :의 schemaLocation ="http://www.example.org/web-app_2_5 웹 app_2_5.xsd " 
4      버전 ="2.5 " > 
5  
6      < 서블릿 > 
7          < 서블릿 이름 > helloServlet </ 서블릿 이름 > 
8          < 서블릿 클래스 > XXXXXXXXXX <
9      </ 서블릿 > 
10      < 서블릿 매핑 > 
11          < 서블릿 이름 > helloServlet </ 서블릿 이름 > 
12          < URL 패턴 > / 헬로 </ URL 패턴 > 
13      </ 서블릿 매핑 > 
14  </ 웹 - 응용 프로그램 >
스키마 제약

그 현실은, 우리는 XML 문서가 브라우저에 의해 구문 분석 할 수없는 것을 찾을 수 있습니다. 그래서 우리는 어떻게 브라우저 그것에 의해 사용되는 XML 문서의 내용을 해석합니까? 우리는 DOM4J 해상도를 사용할 수 있습니다. DOM4J는 파서, 우리는 XML 파싱에 대한 API를 호출 할 수있는 파서입니다.

다음은 데모입니다 :

cn.itheima.xml.dom4j 패키지, 

가져 오기를 java.util.List; 

가져 오기 org.dom4j.Document, 
가져 오기 org.dom4j.DocumentException, 
가져 오기 org.dom4j.Element, 
가져 오기 org.dom4j.io.SAXReader, 
가져 오기 org.junit .test; 

공용 클래스 TestDom4j { 
    @Test 
    공공 무효 testReadWebXML () { 
        은 try { 
            // 리졸버를 가져 오기 1. 
            SAXReader SAXReader 새로운 새로운 SAXReader = (); 
            // 문서 2. 문서 개체 얻을 
            문서 문서 = saxReader.read ( "SRC를 / CN / itheima / XML / 스키마 /은 web.xml "); 
            // 루트 요소 3. 얻을 
            요소 doc.getRootElement rootElement = (); 
            //에서 System.out.println (rootElement.getName ()); // 루트 요소를 얻을 수를 이름
            //에서 System.out.println (rootElement.attributeValue ( "버전" )); // 의 루트 요소의 속성 값을 얻을 
            루트 요소 가져 오기 4. // 자식 요소를 
            목록 < 요소 > childElements의 rootElement.elements을 = (); 
            // 트래버스 서브 엘리먼트 
            (element 요소 : childElements)에 대한 { 
                . 소자의 // 이름 6은 서블릿 요소를 결정한다. 
                IF ( "서블릿".equals (element.getName ())) { 
                    // 오기 7 서블릿 이름.이. 요소 
                    요소 servletname와 element.element = ( "서블릿 이름"); 
                    .. 8 // 서블릿 클래스 요소 취득 
                    상기 소자 servletClass = element.element ( "서블릿 클래스") 
                    System.out을한다.에 println (servletName.getText ()); 
                    System.out을한다.에 println (servletClass.getText ());
                } 
            } 

        } 캐치 (DocumentException 전자) { 
            e.printStackTrace (); 
        } 
    } 

}

XML 관련 지식을 통해 학습 한 후, 우리는 중요한 개념 서블릿과 반사를 배운다. 작동 상태에 반영 수단은, 어떤 클래스의 모든 속성이 클래스의 메소드에 알려지게되며, 모든 객체에 대해, 그 메서드와 속성 중 하나를 호출 할 수 있습니다.

반사를 사용하여, 우리는 런타임에 클래스 생성자 통상의 방법에 작동 할 수 있습니다.

여기에 코드를 보여줍니다입니다 :

1 개  패키지 cn.itheima.web.servlet;
2  
 수입 org.junit.Test;
4  
5  공중  클래스 TestMyServlet {
 6  
7      @Test
 8      공개  공극 testMyServlet () {
 9          MyServletImpl = 내 새로운 MyServletImpl ();
10          my.init ();
11          my.service ();
12          my.destory ();
13      }
 14      
15      @Test
 16      공공  공극 testMyServlet1 () {
 17          시도 {
18              문자열 클래스 명 = "cn.itheima.web.servlet.MyServletImpl" ;
(19)              클래스를 clazz = Class.forName를 (클래스 명);
20              MyServletImpl 내 = (MyServletImpl) clazz.newInstance ();
21              my.init ();
22              my.service ();
23              my.destory ();
24          } 캐치 (예외 E) {
 25              e.printStackTrace ();
26          }
 27      }
 28 }
TestMyServlet
패키지 cn.itheima.web.servlet; 

공중  인터페이스 IMyServlet { 

    공개  공극 의 init (); 

    공공  무효 서비스 (); 

    공개  공극 32 파괴 (); 
}
. (1)  패키지 cn.itheima.web.servlet;
 2  
. 3  공용  클래스 MyServletImpl 유단 IMyServlet {
 4.  
5.      @Override
 6.      공용  공극 초기화 () {
 7.          에서 System.out.println ( "아, 또한 온 ......" );
 (8)      }
 (9)  
10      @Override
 . (11)      공공  무효 - 서비스 () {
 12가          에서 System.out.println ( "나는 ...... 서비스를 제공 할 수 있습니다" );
 (13)가      }
 14  
15      @Override
 (16)      공공  무효 32 파괴 () {
. 17          에서 System.out.println ( "아, 나는 ...... 가서" );
 18      }
 . (19)  
(20)이다 }
MyServletimp

이 서블릿의 기본 원칙입니다 볼 수 있습니다.

추천

출처www.cnblogs.com/wushenjiang/p/12241540.html