DWR是一个比较不错的实现js语言和java语言桥接的框架,它是一个利用java的反射机制和ajax请求整合的一个框架,操做起来也是十分的容易,而却能够自动的实现咱们须要使用的数据的json或者其余的类型的转换,从而大大的减小了咱们本身的写代码的负担,我的觉得熟悉使用DWR以后能够减小之后的java中的转换一个json的操做,是一个很典型的代理模式的例子,下面进行的是一个基本的认识DWR的步骤javascript
、咱们须要进行的是一个基本的DWR的认识,能够到DWR的官网http://directwebremoting.org/dwr/进行信息的浏览的操做,下载相应的jar包:commons-logging-1.1.1.jar 和dwr.jar;html
、在咱们的myeclipse中新建一个web项目,其中咱们须要进行的一个操做就是把咱们刚刚下载的两个jar包,放置在咱们的lib文件夹下面;java
、须要本身新建一个web.xml,其中类型的就是一个进行的过滤的操做设置,学习过struts的能够看出来这里的操做就是一个简单的过滤设置,咱们能够借助官网给出的实例进行咱们的数据的创建以下:web.xml:web
<!-- lang: xml --> <!-- lang: xml --> <!-- lang: xml --> <?xml version="1.0" encoding="UTF-8"?> <!-- lang: xml --> <web-app version="2.5" <!-- lang: xml --> xmlns="http://java.sun.com/xml/ns/javaee" <!-- lang: xml --> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- lang: xml --> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee <!-- lang: xml --> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- lang: xml --> <!-- lang: xml --> <!-- lang: xml --> <servlet> <!-- lang: xml --> <display-name>DWR Servlet</display-name> <!-- lang: xml --> <servlet-name>dwr-invoker</servlet-name> <!-- lang: xml --> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <!-- lang: xml --> <init-param> <!-- lang: xml --> <param-name>debug</param-name> <!-- lang: xml --> <param-value>true</param-value> <!-- lang: xml --> </init-param> <!-- lang: xml --> </servlet> <!-- lang: xml --> <!-- lang: xml --> <servlet-mapping> <!-- lang: xml --> <servlet-name>dwr-invoker</servlet-name> <!-- lang: xml --> <url-pattern>/dwr/*</url-pattern> <!-- lang: xml --> </servlet-mapping> <!-- lang: xml --> <!-- lang: xml --> <!-- lang: xml --> <!-- lang: xml --> <!-- lang: xml --> <welcome-file-list> <!-- lang: xml --> <welcome-file>index.jsp</welcome-file> <!-- lang: xml --> </welcome-file-list> <!-- lang: xml --> </web-app> <!-- lang: xml --> <!-- lang: xml --> <!-- lang: xml -->
、上述的web.xml和接下来的dwr.xml都是放置在WEB-INF文件下面的 dwr.xmlajax
<!-- lang: xml --> <!-- lang: xml --> <!-- lang: xml --> <!DOCTYPE dwr PUBLIC <!-- lang: xml --> "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" <!-- lang: xml --> "http://getahead.org/dwr/dwr30.dtd"> <!-- lang: xml --> <!-- lang: xml --> <dwr> <!-- lang: xml --> <allow> <!-- lang: xml --> <create creator="new" javascript="test"> <!-- lang: xml --> <param name="class" value="com.fww.service.Test"/> <!-- lang: xml --> </create> <!-- lang: xml --> <!-- lang: xml --> </allow> <!-- lang: xml --> </dwr> <!-- lang: xml --> <!-- lang: xml --> 配置文中的意思就是说个人是一个新建立的一个test类,其中在js中使用的时候须要使用的test进行一个对象的建立和使用。
、测试类java的创建:json
Test:app
<!-- lang: xml --> <!-- lang: java --> <!-- lang: xml --> package com.fww.service; <!-- lang: xml --> <!-- lang: xml --> public class Test { <!-- lang: xml --> <!-- lang: xml --> public Test() { <!-- lang: xml --> System.out.println("初始化的操做!"); <!-- lang: xml --> } <!-- lang: xml --> <!-- lang: xml --> public int add(int a,int b){ <!-- lang: xml --> System.out.println("使用了一次哦!"); <!-- lang: xml --> return a+b; <!-- lang: xml --> } <!-- lang: xml --> } <!-- lang: xml --> <!-- lang: xml --> <!-- lang: java -->
,项目部署以后,咱们须要把项目启动,而后再地址栏中输入的是项目名称下面的/dwr/*的操做,其中咱们能够看到咱们本身写的一个Test的js对应的test假对象了,点击这个test咱们能够看到全部的暴漏在外面的,用户能够调用的方法,咱们须要注意其实几行的时候的两行js代码,读英语的说明,咱们能够知道使用的时候,咱们须要把这两个js导入到咱们使用的页面中去,下面是个人引用的页面:框架
index.jsp:eclipse
<!-- lang: html --> <!-- lang: html --> <!-- lang: html --> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!-- lang: html --> <% <!-- lang: html --> String path = request.getContextPath(); <!-- lang: html --> String basePath = request.getScheme() + "://" <!-- lang: html --> + request.getServerName() + ":" + request.getServerPort() <!-- lang: html --> + path + "/"; <!-- lang: html --> %> <!-- lang: html --> <!-- lang: html --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- lang: html --> <html> <!-- lang: html --> <head> <!-- lang: html --> <base href="<%=basePath%>"> <!-- lang: html --> <!-- lang: html --> <title>My JSP 'index.jsp' starting page</title> <!-- lang: html --> <meta http-equiv="pragma" content="no-cache"> <!-- lang: html --> <meta http-equiv="cache-control" content="no-cache"> <!-- lang: html --> <meta http-equiv="expires" content="0"> <!-- lang: html --> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <!-- lang: html --> <meta http-equiv="description" content="This is my page"> <!-- lang: html --> <script type='text/javascript' src='/dwr_001/dwr/interface/test.js'></script> <!-- lang: html --> <script type='text/javascript' src='/dwr_001/dwr/engine.js'></script> <!-- lang: html --> <script type="text/javascript"> <!-- lang: html --> function tt() { <!-- lang: html --> test.add(1,2); <!-- lang: html --> test.add(5,6,function(result){ <!-- lang: html --> document.getElementById("divid").innerHTML = result; <!-- lang: html --> }); <!-- lang: html --> } <!-- lang: html --> </script> <!-- lang: html --> </head> <!-- lang: html --> <!-- lang: html --> <body> <!-- lang: html --> This is my JSP page. <!-- lang: html --> <br> <!-- lang: html --> <input type="button" onclick="tt();" value="点击我进行测试"> <!-- lang: html --> <div id="divid" ></div> <!-- lang: html --> </body> <!-- lang: html --> </html> <!-- lang: html --> <!-- lang: html --> <!-- lang: html --> 如此的操做以后,咱们能够发现本身的代码比起以前的ajax的请求时候,少了不少,并且咱们一样的是能够实现ajax的操做。