DWR은 프레임 워크로, 많은 JavaScript 코드를 작성하지 않고도 Java 스크립트로 직접 Java 메소드를 호출 할 수 있습니다. 구현은 Ajax를 기반으로하며 새로 고침이없는 효과를 얻을 수 있습니다.
인터넷에는 DWR의 많은 예가 있지만 대부분은 일부 방법의 호출 일뿐입니다. 이 기사는 사용 수준에서 DWR 만 소개하며 더 많은 기술과 디자인이 포함되지 않습니다. 목적은 초보자가 JavaScript에서 다양한 Java 방법이 어떻게 호출되는지 빠르게 배울 수 있도록하는 것입니다.
1. DWR 구성 기사 web.xml
1. 최소 일치
<Servlet> <servlet-name> dwr-invoker </servlet-name> <servlet-class.ltd.getahead.dwr.dwrservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> dwr-invoker </servlet-name> <url-pattern>/dwartn> </url-pattern> </url-pattern>
2. DWR에서 자동으로 생성 된 테스트 페이지 (디버그/테스트 모드 사용)를 보려면 서블릿 구성에 추가 할 수 있습니다.
<init-param> <param-name> 디버그 </param-name> <param- value> true </param-value> </init-param>
이 매개 변수 dwr는 기본적으로 False입니다. true를 선택하면 http : // localhost : port/app/dwr를 통해 배포하는 각 DWR 클래스를 볼 수 있습니다. 또한 Java 코드의 각 방법이 정상적으로 실행되는지 테스트 할 수 있습니다. 안전상의 이유로 공식적인 환경 에서이 매개 변수를 False로 설정해야합니다.
3. 여러 dwr.xml 파일의 구성
몇 가지 상황이있을 수 있습니다. 우리는 그것들을 하나씩 나열 할 것입니다. 하나의 서블릿, 다중 dwr.xml 구성 파일; 다중 서블릿, 각 서블릿은 하나 이상의 dwr.xml 구성 파일에 해당합니다.
3.1. 하나의 서블릿, 다중 dwr.xml 구성 파일
<Servlet> <Servlet-name> dwr-invoker </servlet-name> <servlet-class.ltd.getahead.dwr.dwrservlet </servlet-class> <init-param> <param-name> config-1 </param-name> <param-value> web-inf/dwr1.xml </param-value> </init-param> <param-name> config-2 </param-name> <param- value> web-inf/dwr2.xml </param-value> </init-param> <init-param> <param-name> config-2 </param-name> <param-value> web-inf/dwr2.xml </param-value> </servaram>
이 구성에서는 Param-Name의 값이 구성으로 시작해야합니다. param-name은> = 0을 가질 수 있습니다. param-name이 없으면 Web-inf/dwr.xml을 읽습니다. Param-Names 이상이있는 경우 Web-Inf/dwr.xml 파일을 읽지 않습니다.
3.2. 다중 서블릿, 각 서블릿은 하나 이상의 dwr.xml에 해당합니다.
<Servlet> <servlet-name> dwr-invoker </servlet-name> <servlet-class.ltd.getahead.dwr.dwrservlet </servlet-class> </servlet> <servlet-name> dwr-invoker1 </servlet-name> <servlet-class> uk.ltd.getahead.dwr.dwrservervlet> <param-name> config-admin </param-name> <param-value> web-inf/dwr1.xml </param-value> </init-param> <init-param> <param-name> debug </param-name> <param- value> true </param-value> </init-param> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name> dwr-invoker </servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> dwr-invoker1 </servlet-name> <Url-pattern>/dwr1/*</url-pattern> </servlet-mapping>
이 경우 J2EE 보안에 따라 권한을 제어하고 다른 URL에 대해 다른 역할을 추가 할 수 있습니다.
2. DWR 사용
1. 리턴 값과 매개 변수가없는 Java 메소드를 호출합니다
1.1. dwr.xml의 구성
<dwr> <create> <create creater = "new"javaScript = "testClass"> <param name = "class"value = "com.dwr.testClass"/<포함 메소드 = "testMethod1"/> </create> </dwr>
태그에는 JavaScript 액세스에 노출 될 수있는 것들이 포함됩니다.
태그는 JavaScript로 액세스 할 수있는 Java 클래스를 지정하고 DWR이 클래스의 원격 인스턴스를 얻는 방법을 정의합니다. Creator = "New"속성은 Java 클래스 인스턴스의 생성 방법을 지정합니다. 새로운 것은 DWR이 클래스의 기본 생성자를 호출하여 인스턴스를 얻는 것을 의미합니다. 기타 인스턴스 등을 얻기 위해 IOC 컨테이너 스프링과 통합 될 수있는 스프링 메소드가 포함됩니다.
이 태그는 Java 클래스 이름을 JavaScript에 노출시킬 수 있습니다.
태그는 JavaScript에 노출 될 메소드를 지정합니다. 지정되지 않으면 모든 방법이 공개됩니다.
태그는 액세스를 방지하는 방법을 지정합니다.
1.2. JavaScript로 호출됩니다
먼저 JavaScript 스크립트를 소개하십시오
<script src = 'dwr/interface/testclass.js'> </script> <script src = 'dwr/engine.js'> </script> <script src = 'dwr/util.js'> </script>
그중에서도 TestClass.js는 구성 파일을 기반으로 DWR에 의해 자동으로 생성되며 Engine.js 및 Util.js는 DWR과 함께 제공되는 스크립트 파일입니다.
둘째, Java 메소드라고하는 JavaScript 함수를 작성하십시오.
함수 calltestmethod1 () {testclass.testmethod1 ();}2. 간단한 반환 값으로 Java 메소드를 호출하십시오
2.1. dwr.xml 구성
1.1과 동일한 구성입니다
<dwr> <create> <Create Creater = "new"javaScript = "testClass"> <param name = "class"value = "com.dwr.testClass"/<포함 메소드 = "testMethod2"/> </create> </dwr>
2.2. JavaScript로 호출됩니다
먼저 JavaScript 스크립트를 소개하십시오
둘째, Java 메소드와 리턴 값을 수신하는 콜백 함수를 호출하는 JavaScript 함수를 작성하십시오.
함수 CallTestMethod2 () {testClass.testMethod2 (CallbackfortestMethod2);} 함수 CallbackfortestMethod2 (data) {// 날짜의 반환 값이 메소드를받는 경우 // 여기에서 리턴 값을 처리하고 표시 할 수 있습니다.Callbackfortestmethod2는 반환 값을 수신하는 콜백 함수입니다.
3. 간단한 매개 변수로 Java 메소드를 호출하십시오
3.1. dwr.xml의 구성
1.1과 동일한 구성입니다
<dwr> <create> <create creater = "new"javaScript = "testClass"> <param name = "class"value = "com.dwr.testclass"/> <포함 메소드 = "testMethod3"/> </create> </dwr>
3.2. JavaScript로 호출됩니다
먼저 JavaScript 스크립트를 소개하십시오
둘째, Java 메소드라고하는 JavaScript 함수를 작성하십시오.
함수 calltestmethod3 () {// Java 메소드로 전달할 매개 변수 var 데이터 정의; // 매개 변수 데이터 구성 = "test string"; testclass.testmethod3 (data);}4. Javabean을 반환하는 Java 방법에 전화하십시오
4.1. dwr.xml 구성
<dwr> <allow> <create creater = "new"javaScript = "testCrats"> <param name = "class"value = "com.dwr.testClass"/> <포함 메소드 = "testMethod4"/> </catch = ""com.dwr.testbean "> <param name ="value = "username, password".
태그는 웹 리모컨에 사용되는 클래스 및 메소드를 노출시키는 데 책임이 있으며 태그는 이러한 메소드의 매개 변수 및 반환 유형을 담당합니다. 변환 요소의 기능은 DWR에 서버 측 Java 객체 표현과 직렬화 된 JavaScript간에 데이터 유형을 변환하는 방법을 알려주는 것입니다. DWR은 Java와 JavaScript 표현 사이의 간단한 데이터 유형을 자동으로 조정합니다. 이러한 유형에는 Java 기본 유형과 각각의 캡슐화 된 클래스 표현뿐만 아니라 문자열, 날짜, 배열 및 수집 유형이 포함됩니다. DWR은 Javabeans를 JavaScript 표현으로 변환 할 수 있지만 보안상의 이유로 명시적인 구성이 필요하며 태그는이 기능을 수행합니다. C 속성은 Javabean Naming Specification을 사용하기위한 변환 메소드를 지정합니다. Match = ""com.dwr.testbean "속성은 변환 할 Javabean의 이름을 지정하고 변환 할 Javabean 속성을 지정합니다.
4.2. JavaScript로 호출됩니다
먼저 JavaScript 스크립트를 소개하십시오
둘째, Java 메소드와 리턴 값을 수신하는 콜백 함수를 호출하는 JavaScript 함수를 작성하십시오.
CallbackfortestMethod4가 반환 값을 수신하는 콜백 함수 인 경우
5. Javabean 매개 변수로 Java 메소드를 호출하십시오
5.1. dwr.xml 구성
<dwr> <allow> <create creator = "new"javaScript = "testclass"> <param name = "class"value = "com.dwr.testClass"/> <포함 메소드 = "testMethod5"/> </categ> <catning c match = "com.dwr.testbean"> <param name = "value = <"username, password ".
5.2. JavaScript로 호출됩니다
먼저 JavaScript 스크립트를 소개하십시오
둘째, Java 메소드라고하는 JavaScript 함수를 작성하십시오.
함수 calltestmethod5 () {// Java 메소드로 전달 될 매개 변수 var 데이터를 정의합니다. // 매개 변수 구성, 날짜는 실제로 객체 데이터입니다 = {사용자 이름 : "사용자", 암호 : "비밀번호"} testclass.testMethod5 (data);}다음 구성 세그먼트를 dwr.xml에 추가하십시오
<signatures> <!
3. 위에서부터 Java 메소드의 리턴 값이 List (Set) 인 경우 DWR을 객체 배열로 변환하고 JavaScript를 전달하는 경우를 찾을 수 있습니다. Java 메소드의 리턴 값이 맵인 경우 DWR은 객체로 변환합니다. 여기서 객체 속성은 원래 맵의 키 값이고 속성 값은 원래 맵의 해당 값입니다.
4. Java 메소드의 매개 변수가 List (Set) 및 MAP 인 경우 JavaScript는 세 가지 유형의 사물에 따라 해당 JavaScript 데이터를 구성해야합니다.