SSH与DWR整合(什么是DWR):
SSH的整合在这里就不详述了
下面我们开始SSH与DWR的整合吧:
1,我将与DWR相关的方法或类放在了一个统一的包里,以方便管理
emb.dwespring.dao 这个包下有一个类:
public class dwruserlogin { private Iuser iuser; public Iuser getIuser() { return iuser; } public void setIuser(Iuser iuser) { this.iuser = iuser; } public String dwruserloginok(String name , String pass){ if(iuser.userlogin(name, pass)){ return "success"; }else{ return "input"; } } public String dwruserhas(String name){ if(iuser.userlogin(name)){ return "success"; }else{ return "input"; } } }这个类里我定义了两个可以供DWR使用的方法。
dwruserloginok(String name , String pass) 这个是判断用户名和密码是否正确
dwruserhas(String name) 这个是判断用户是否存在
2,下面我们开始编写web.xml
<!-- 设置dwr信息 --> <!-- Ajax工程dwr的配置信息 --> <servlet> <servlet-name>dwr-web</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <!-- ssh整合使用上面的class 否则org.directwebremoting.servlet.DwrServlet --> <!-- 是否允许调试,true为是 --> <init-param> <!-- 发布后请改为false 并且将action删除掉<constant name="struts.action.extension" value="action"/> --> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <!-- 是否进行日志管理,如果是,在设置此参数,通常可以省略 --> <init-param> <param-name>logLevel</param-name> <param-value>WARN</param-value> </init-param> <!-- 是否允许跨域请求,false为允许,默认为true --> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-web</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> <!-- 配置dwr信息结束 -->上面的代码,其注释信息,相信大家一定看得懂吧。需要说明的是,在网站发布之后,必须关闭调试模式,并且删除struts.xml中添加的语句<constant name="struts.action.extension" value="action"/> 这条语句是解决dwr与action冲突的。因为action会对所有的请求进行过滤,因此也会对我们的dwr调试目录进行过滤了。
3,看看我们的dwr.xml里的内容,需要注意的是dwr是在web-inf目录下的
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd"> <dwr> <allow> <create creator="spring" javascript="login" scope="application"> <param name="beanName" value="okuser" /> <include method="dwruserloginok" /> </create> <create creator="spring" javascript="register" scope="application"> <param name="beanName" value="okuser" /> <include method="dwruserhas" /> </create> <convert converter="string" match="java.lang.String"/> </allow> </dwr>
DWR的基本语法就如上面所示,这里解释一下:
a,因为我们是与ssh整合,因此creator="spring" ,意思是,我们不必自己去实例化(这个值可以是new,其他值大家可以参考官方文档),而是去spring里去查找。
b,javascript="login",这是我们前台要用到的名字
c,scope这个就不说了吧
d,<convert converter="string" match="java.lang.String"/> 这里表示,我们需要将这个java类转换成js可以用的string类型,当然需要注意的是,这个是可以不用写的,因为这个是默认的
e,<param name="beanName" value="okuser" /> 这里面的beanName是指的将d转换的类型给他用,value里的okuser是spring里创建的bean,这里我也贴上spring里相关的代码:
<bean name="okuser" class="emb.dwespring.dao.dwruserlogin"> <property name="iuser"> <ref bean="userimpl"/> </property> </bean>f,<include method="dwruserhas" />这个表示只允许我们访问那些方法,如果不加这一条语句,表示默认的所有的public方法
g,当然您看到了,可以在dwr里写上多条create,
h,加入最新版的dwr.jar,大家可以去这里免费下载:http://directwebremoting.org/dwr/downloads/
i,现在我们就可以运行我们的dwr进行查看了,最新版本的dwr的页面如下:
[caption id="attachment_376" align="alignnone" width="450"] dwr调试[/caption]
这里有两个连接,分别对应我们的两个方法,我们点击其中一个
[caption id="attachment_377" align="alignnone" width="787"] dwr方法[/caption]
大家可以看到,没有红色警告的就表示我们的可以访问的方法,我们可以输入数据进行查看。输入数据时,如果您的数据是字符型,一定不要忘记加双引号哦,否则会发生异常,不过大家可以去掉<convert converter="string" match="java.lang.String"/> 这个试试。
j,上面出现了三个js,这三个都是我们需要的。我们需要在我们的jsp页面引入这三个js
k,引入后应该怎么样呢,还是直接上代码吧,呵呵:
<script type="text/javascript"> function loginok(){ var username=$("#username").val(); var password=$("#password").val(); if(username==""||password==""){ $("#msg").html("用户名或密码不能为空"); return; } //试用dwr 传参并设置回调函数,回调函数在下面定义 login.dwruserloginok(username,password,dingyihuidianhanshu); } //此处通过回调函数,把返回值给oklogin,然后进行判断 //比如要有返回值,否则,密码和用户不匹配也会提交 function dingyihuidianhanshu(oklogin1){ if(oklogin1=="success"){ $("#msg").html("验证成功,正在跳转"); $("#loginid").submit(); return true; }else{ $("#msg").html("验证失败。请重新输入"); return false; } } </script>上面的代码我已添加注释,如果您还看不到,请留言哈。
关于类型转换,DWR已经为我们提供了大量的creator和converter如:jsf,none,new,pageflow,spring,script,struts这几种creator,和null,enum,primitive,bignumber,string,array,map,collection, date,dom,dom4j,jdom,xom,servlet,bean,object,hibernate这几种convertor,如果您觉得不够用,可以自己写。
自此,我们SSH+DWR整合就成功了。
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情