Dwr结合SSH使用

author:heguikun

主要是类方法的调用,按平时用sping模板获得的方法,

dwr 不支持,要用以下的写法才行。


经过一翻周折,终于弄好了
现在写下来给大家分享一下!

 

使用之前,必须保证在项目的lib下放进dwr包


--------------------------------------------------------------------------------------------------------------------------------
1. 转换为脚本的类
package biz.impl.dwrPackge;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.web.context.support.WebApplicationContextUtils;


import biz.impl.chenfeiwu.ZpglBiz;
/*
 * 系统机构dwu
 */
public class XtszDwr extends HibernateDaoSupport {
 public boolean GetXtszJg(String jgJc) throws Exception {
  String sql="from Jg where jgJc='"+jgJc+"'";//组织sql语句
  System.out.println("dwr中的sql语句:"+sql);
  WebContext ct=WebContextFactory.get();//Webcontext对象
   HttpServletRequest request=ct.getHttpServletRequest();//取得request
    return getMail(request, sql);//调用如下方法
  
 }
 public static boolean getMail(HttpServletRequest request,String sql)throws Exception{
    ServletContext sc = request.getSession().getServletContext();
    ApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(sc);
    ZpglBiz biz = (ZpglBiz) ac.getBean("zpglBizImpl");//取得spring中的bean
  List list=  biz.findQuery(sql);
    if (list.size()>0) {
     System.out.println("该机构名已经存在!");
    System.out.println("返回:true");
    return true;//存在
   }else {
    System.out.println("该机构名可用!");
    System.out.println("返回:false");
    return false;//不存在
   }
   }
 
}

---------------------------------------------------------------------------------------------------------------

2.dwor.xml 代码如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">

<dwr>
  <allow>
  <create creator="new" javascript="XtszDwr"><!-- http://getahead.org/dwr/dwr20.dtd脚步引用时用的对象名 -->
     <param name="class" value="biz.impl.dwrPackge.XtszDwr"/>
       <include method="GetXtszJg"/><!-- hrm.action.XtszAction类中暴露的方法 -->
   </create>
   <convert match="entity.Jg" converter="bean"></convert>
  </allow>
 
</dwr>

---------------------------------------------------------------------------------------------------------------
3.web.xml中引用的节点
<servlet>
  <servlet-name>dwr</servlet-name>
  <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  <init-param>
   <param-name>debug</param-name>
   <param-value>true</param-value>
  </init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

---------------------------------------------------------------------------------------------------------------
3.页面脚本代码如下:
<!-- =======================dwr start================= -->
<!--自定义的类,脚步的对象-->
<script src="dwr/interface/XtszDwr.js"></script>
 <script src="dwr/engine.js"></script>
 <script src="util.js"></script>
 
<script type="text/javascript">
function JgExists()
 {
    jg=document.getElementById("Jc");
   var jgJc=jg.value;
   if(!jgJc)
   {
   alert("机构名不能为空!");
   jg.focus();
   return;
   }
   alert("开始调用Dwr");
   XtszDwr.GetXtszJg(jgJc,jgDWR);//这脚本的声明在dwr.xml
 }

 function  jgDWR(isExist)
 {
  //已经存在返回true 不存在返回false
   alert("进入回调函数r");
       alert(isExist);
       if(isExist==0)//返回值是真假,用0代表不存在= false
        { 
        alert("开始添加机构!");
        document.forms[0].action="<%=request.getContextPath()%>/xtsz.do?operate=DoAddJg";
         document.forms[0].submit();
        }else
        {//1代表ture
         alert("该机构已经存在,请更改!");
        }
 
 }

</script>
<!-- ===========================dwr end=========================== -->
--------------------------------------------------------------------------------------------------------------
完成以上的工作就可以运行了
这里主要让大家主要的是  XtszDwr 类的方法代码,对request的实例化 和WebApplicationContextUtils的对象
必须保证这样写 项目才支持,否则返回的是eorror提示框
还有别人说调用的接口方法 要abstract修饰,但我这里没有,也一样可行,如果不想就试试吧!

本代码来自何谷坤项目-----------------------------------
祝你成功!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heguikun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值