DWR架构下数据插入与查询

遇到了WEB界面访问自己编写的类的问题:网页上按一个按钮,实现后台数据的插入与查询。

经过网上搜索,找到两种实现方式:AJAX和DWR。据说DWR是基于AJAX的,用起来更方便,果断选择DWR。

不过在用的时候遇到很多问题,在此记录要点,方便后面查询。

-------------------------------------Eclipse + JAVA1.8 + Tomcat9.0---------------------------------

具体的DWR使用流程,网上的资料都很多了:

最官方最权威的:http://directwebremoting.org/dwr/introduction/getting-started.html

网友的一些例子则可以直接去百度“DWR”。

在此只说明一些要点。

1.网上的例子说,把dwr.jar和commons-logging.jar下载下来,放到自己工程的WEB-INF/lib下就可以了。不过在网上学习的时候,有人提过把下图中的dwrdemo下载下来,然后把里面的WEB-INF\lib下的所有.jar文件都拷贝过来,放到自己的WEB-INF/lib下,个人偏于保守,所有还是都放过来了。


2.上面提到的dwrdemo.war,是官方给的dwr应用的例子,所以最好还是下载下来,里面的web.xml和dwr.xml等都可以拿过来直接改,用到自己的工程里

3.关于web.xml文件:

以下部分直接复制进自己的web.xml文件,一点都不要改!注意,一点都不要改。我曾经还去考虑每句话是咋回事,是不是需要根据自己的WEB工程做修改,实际证明,一点都别改!

<servlet>
  <display-name>DWR Servlet</display-name>
  <servlet-name>dwr-invoker</servlet-name>  
  <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  <init-param>
     <param-name>debug</param-name>
     <param-value>true</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>

</servlet-mapping>

4.关于dwr.xml文件:

<dwr>
  <allow>
    <create creator="new" javascript="MyTransaction">
      <param name="class" value="Transaction"/>
    </create>
  </allow>

</dwr>

这些内容先直接复制过来,然后稍作修改。

上面的   value="Transaction"      引号里的Transaction,就是你在javascript里想要使用的外部类的名字

上面的   javascript="MyTransaction"  引号里的MyTransaction,就是你在javascript里使用上面提到的这个类的时候,用的名字

也就是说,我定义了一个类,名字叫做"Transaction",假如它有一个方法(成员函数)叫做save(String name);,在javascript里我想用它,怎么用呢,直接"MyTransaction.save(name1)"就完了,name1是一个String。

5.web工程里,把Build Path改到WEB-INF/classes下。具体步骤:

单击web工程,然后右键->属性->Java Build Path->Source,下面的Browser选到WEB-INF/classes下,有可能只能选到WEB-INF一级,那就自己创建一个classes文件夹。

6.上面步骤一旦成功,运行Tomcat,在地址栏输入http://localhost:你的端口号/你的WEB工程名/dwr/,则会出现dwr成功认出的东西:


7.web页面文件index.jsp中:

需要加入下面几行,才可以在javascript中使用上面部署的类。

 <script type='text/javascript' src='/Dictionary/dwr/engine.js'></script>
  <script type='text/javascript' src='/Dictionary/dwr/interface/MyTransaction.js'></script>
 <script type='text/javascript' src='/Dictionary/dwr/util.js'></script>

注意,里面的src='XXXXXXXX',XXXXXXXX的内容是需要根据自己的工程做修改的。

具体可以点击上图的链接,进去复制


8.还有一个经验性的问题,我做的时候,是做了一个事物层的类Transaction,javascript里使用MyTransaction。不过Transaction的构造函数,是对一个存储结构的类WordDb的实例化,然后我发现,每次我在javascript里用MyTransaction的时候,这个WordDb都会重新实例化,导致存的东西,存进去,就没了。下一次又新实例化一个WordDb,然后往里存,导致每次只有一个数据,自己查还查不到。为了解决这个问题,直接Transaction的构造函数啥事都不干,直接空。然后写一个Init()函数,用于给WordDb的实例化。然后javascript在想要使用的时候,先Init()一下,然后再调用存储和查询函数,完美解决了这个问题。

大致内容就这么多,要具体实现代码的可以留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值