>  기사  >  웹 프론트엔드  >  DWR_javascript 기술로 다양한 Java 메소드 호출

DWR_javascript 기술로 다양한 Java 메소드 호출

WBOY
WBOY원래의
2016-05-16 15:02:321091검색

DWR은 간단히 말해서 많은 자바스크립트 코드를 작성하지 않고도 자바스크립트에서 자바 메소드를 직접 호출할 수 있는 프레임워크입니다. 구현은 ajax를 기반으로 하며 새로 고침 효과를 얻을 수 없습니다.

인터넷에는 DWR의 예가 많이 있지만 대부분은 특정 방법에 대한 호출일 뿐입니다. 이 기사에서는 DWR을 사용 수준으로만 소개하고 더 많은 기술과 디자인을 포함하지 않습니다. 자바스크립트에서 다양한 자바 메소드를 호출하는 방법을 빠르게 알아보세요.

1. dwr 구성 web.xml

1. 최소 구성

<servlet>
 <servlet-name>dwr-invoker</servlet-name>
 <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>dwr-invoker</servlet-name>
 <url-pattern>/dwr/*</url-pattern>

</servlet-mapping>

2. DWR(디버그/테스트 모드 사용)에서 자동으로 생성된 테스트 페이지를 보고 싶을 때 서블릿 구성에

을 추가하면 됩니다.
<init-param>
 <param-name>debug</param-name>
 <param-value>true</param-value>
</init-param>

이 매개변수 DWR의 기본값은 false입니다. true를 선택하면 http://localhost:port/app/dwr을 통해 배포한 각 DWR 클래스를 볼 수 있습니다. 그리고 자바 코드의 각 메소드가 정상적으로 실행되는지 테스트할 수 있습니다. 보안상의 이유로 공식 환경에서는 이 매개변수를 false로 설정해야 합니다.

 3. 여러 개의 dwr.xml 파일 구성

여러 가지 상황이 있을 수 있는데, 하나씩 나열해 보겠습니다. 하나의 서블릿, 여러 dwr.xml 구성 파일, 여러 서블릿, 각 서블릿은 하나 이상의 dwr.xml 구성 파일에 해당합니다.

 3.1. 하나의 서블릿, 여러 개의 dwr.xml 구성 파일

<servlet>
 <servlet-name>dwr-invoker</servlet-name>
 <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
 <init-param>
  <param-name>config-1</param-name>
  <param-value>WEB-INF/dwr1.xml</param-value>
 </init-param>
 <init-param>
  <param-name>config-2</param-name>
  <param-value>WEB-INF/dwr2.xml</param-value>
 </init-param>
</servlet>

이 구성에서 param-name 값은 config로 시작해야 합니다. param-name은 >= 0일 수 있습니다. param-name이 없으면 WEB-INF/dwr.xml을 읽습니다. param-name이 0보다 많으면 WEB-INF/dwr.xml 파일을 읽을 수 없습니다.

 3.2. 여러 서블릿, 각 서블릿은 하나 이상의 dwr.xml에 해당합니다

<servlet>
 <servlet-name>dwr-invoker</servlet-name>
 <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet>
 <servlet-name>dwr-invoker1</servlet-name>
 <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
 <init-param>
  <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-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>

<allow>

<create creator="new" javascript="testClass" >

<param name="class" value="com.dwr.TestClass" />

<include method="testMethod1"/>

</create>

</allow>

</dwr>

태그에는 JavaScript에 노출될 수 있는 내용이 포함되어 있습니다.

태그는 javascript에서 액세스할 수 있는 java 클래스를 지정하고 DWR이 원격으로 사용할 클래스의 인스턴스를 얻는 방법을 정의합니다. creator="new" 속성은 Java 클래스 인스턴스의 생성 방법을 지정합니다. New는 DWR이 인스턴스를 얻기 위해 클래스의 기본 생성자를 호출해야 함을 의미합니다. 다른 것에는 IOC 컨테이너와 통합하여 인스턴스를 얻는 스프링 메서드가 포함됩니다. 봄 등 javascript=" testClass " 속성은 객체에 액세스하기 위해 javascript 코드에서 사용하는 이름을 지정합니다.

태그는 자바스크립트에 노출될 자바 클래스 이름을 지정합니다.

태그는 JavaScript에 노출되는 메소드를 지정합니다. 지정하지 않으면 모든 메서드가 노출됩니다.

태그는 접근을 방지할 메소드를 지정합니다.

1.2 자바스크립트에서

호출하기

먼저 자바스크립트 스크립트를 소개합니다

<script src='dwr/interface/ testClass.js'></script>

<script src='dwr/engine.js'></script>

<script src='dwr/util.js'></script>

  그 중 TestClass.js는 구성 파일을 기반으로 dwr에 의해 자동으로 생성되는데, dwr과 함께 제공되는 스크립트 파일은engine.js와 util.js입니다.

둘째, java 메소드를 호출하는 javascript 함수를 작성합니다

Function callTestMethod1(){

  testClass.testMethod1();

}

2. 간단한 반환 값으로 Java 메소드 호출 ​​

2.1. dwr.xml 구성

 구성은 1.1과 동일합니다

<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value="com.dwr.TestClass" />
<include method="testMethod2"/>
</create>
</allow>
</dwr>

2.2 자바스크립트에서

호출하기

먼저 자바스크립트 스크립트를 소개합니다

둘째, java 메소드를 호출하는 javascript 함수와 반환값을 받는 콜백 함수를 작성합니다

Function callTestMethod2(){
testClass.testMethod2(callBackFortestMethod2);
}
Function callBackFortestMethod2(data){
//其中date接收方法的返回值
//可以在这里对返回值进行处理和显示等等
alert("the return value is " + data);
}

여기서 callBackFortestMethod2는 반환 값을 받는 콜백 함수입니다.

3. 간단한 매개변수로 Java 메소드 호출

3.1. dwr.xml 구성

구성은 1.1과 동일

<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value="com.dwr.TestClass" />
<include method="testMethod3"/>
</create>
</allow>
</dwr>

 3.2 자바스크립트에서

호출

먼저 자바스크립트 스크립트를 소개합니다

둘째, java 메소드를 호출하는 javascript 함수를 작성하세요

Function callTestMethod3(){
//定义要传到java方法中的参数
var data;
//构造参数
data = “test String”;
testClass.testMethod3(data);
}

 4. JavaBean을 반환하는 java 메소드를 호출합니다

4.1. dwr.xml 구성

<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value="com.dwr.TestClass" />
<include method="testMethod4"/>
</create>
<convert c match=""com.dwr.TestBean">
<param name="include" value="username,password" />
</convert>
</allow>
</dwr>

  标签负责公开用于Web远程的类和类的方法,标签则负责这些方法的参数和返回类型。convert元素的作用是告诉DWR在服务器端Java 对象表示和序列化的JavaScript之间如何转换数据类型。DWR自动地在Java和JavaScript表示之间调整简单数据类型。这些类型包括Java原生类型和它们各自的封装类表示,还有String、Date、数组和集合类型。DWR也能把JavaBean转换成JavaScript 表示,但是出于安全性的原因,要求显式的配置,标签就是完成此功能的。c属性指定转换的方式采用JavaBean命名规范,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" />

<include method="testMethod5"/>

</create>

<convert c match="com.dwr.TestBean">

     <param name="include" value="username,password" />

</convert>

</allow>

</dwr>

  5.2、javascript中调用

  首先,引入javascript脚本

  其次,编写调用java方法的javascript函数

Function callTestMethod5(){

     //定义要传到java方法中的参数

  var data;

  //构造参数,date实际上是一个object

  data = { username:"user", password:"password" }

  testClass.testMethod5(data);

}

  并且在dwr.xml中增加如下的配置段

<signatures>
<![CDATA[
import java.util.List;
import com.dwr.TestClass;
import com.dwr.TestBean;
TestClass.testMethod7(Map<String,TestBean>);
]]>
</signatures>

  3、由以上可以发现,对于java方法的返回值为List(Set)的情况,DWR将其转化为Object数组,传递个javascript;对于java方法的返回值为Map的情况,DWR将其转化为一个Object,其中Object的属性为原Map的key值,属性值为原Map相应的value值。

  4、如果java方法的参数为List(Set)和Map的情况,javascript中也要根据3种所说,构造相应的javascript数据来传递到java中。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.