最近用dwr做了个登陆验证的例子,可真是几经波折呀(程序很简单)。
先贴个dwr的小例子:
dwr要验证的java方法(该方法返回值是ajax中回调函数的参数) public String login(String name, String pwd){ System.out.println(name+pwd); if(null==name || "".equals(name.trim())){ System.out.println("kkkkkkkk"); return "1"; } if(null==pwd || "".equals(pwd.trim())){ System.out.println("nnnnnnnnnnn"); return "2"; } System.out.println(name+pwd); return "3"; } |
前台用到的jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>login.jsp</title> <script type="text/javascript" src="hunai/js/jQuery.js"></script> <script type="text/javascript" src="hunai/js/verify.js"></script> <script type="text/javascript" src="dwr/engine.js"/></script> <script type="text/javascript" src="dwr/util.js"/></script> <script type="text/javascript" src="dwr/interface/loginService.js"></script> <script type="text/javascript"> function test4(){ var name = $("user.name").value;//util.js中的方法$() var pwd = $("user.pwd").value; loginService.login( name, pwd, function(datas){ if(datas==1){ alert("用户名不能为空"); } if(datas==2){ alert("密码不能为空"); } if(datas==3){ alert(datas); document.form1.submit(); // document.getElementById(form1).submit(); } } ); } </script> </head> <body> <s:form action="index" method="post" name="form1"> <s:textfield name="user.t_name" label="username"/> <s:password name="user.t_pwd" label="密码"/> <s:submit label="登录" align="center" type="button" οnclick="test4()"/> </s:form> </body> </html> |
dwr.xml配置:
<create creator="new" javascript="loginService">//注意creator的方式,通过new实例化
<param name="class" value="com.hunai.service.impl.LoginService"/>
</create>
web.xml配置
<servlet> <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> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> |
如果要集成spring的话需要改好几个地方(在LoginService类中通过spring注入方式实例化的类ajax不能调用,比如dao、pojo)
public class LoginService implements ILoginService{ //此类通过spring依赖注入,dwr若不集成 spring,dwr将不识别 public IUserMainDao userMainDao; //此类方法通过spring依赖注入,dwr若不集成 spring,dwr将不识别 public UserMain userMain; public String login(String umEmail,String umPwd){ if(umEmail.length()==0||umEmail==""){ System.out.println("kong"); return "1"; }else{} System.out.println(umEmail); userMain = userMainDao.findUserMainByEmail(umEmail); if(userMain==null){ return "2";//对不起!没有这个用户 }else{ if(!(umPwd.equals(userMain.getUmPwd()))){ System.out.println("密码错误!!!"); return "3";//密码错误 }else{ System.out.println("密码正确!!!"); return "4";//密码正确 } } } } |
添加的spring配置:
web.xml中添加 <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:configfile/hunai/applicationContext*.xml, classpath:configfile/loveshop/applicationContext*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> applicationContext-action.xml中的配置: spirng依赖注入bean <bean id="loginService" class="com.hunai.service.impl.LoginService"> <property name="userMain" ref="userMain"></property> <property name="userMainDao" ref="userMainDao" /> </bean> dwr.xml也要修改:不再通过new,而是spring了 <create creator="spring" javascript="loginService"> <param name="beanName" value="loginService"/> </create> 注意value的值对应applicationContext-action.xml中的loginService |
前台调用:
<%@ page language="java" pageEncoding="gb18030"%> <%@ page contentType="text/html; charset=gb2312"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'login.jsp' starting page</title> <script type="text/javascript" src="hunai/js/jQuery.js"></script> <script type="text/javascript" src="hunai/js/verify.js"></script> <script type="text/javascript" src="dwr/engine.js"/></script> <script type="text/javascript" src="dwr/util.js"/></script> <script type="text/javascript" src="dwr/interface/loginService.js"></script> <script type="text/javascript"> function loginVerify(){ var umEmail = $("umEmail").value; var umPwd = $("umPwd").value; loginService.login(umEmail,umPwd, function(datas){ if(datas==1){ // alert("用户名不能为空"); DWRUtil.setValue("email","用户名不能为空"); }
if(datas==2){ // alert("没有这个用户"); DWRUtil.setValue("email","没有这个用户"); } if(datas==3){ alert("密码错误"); pwd.className="show exactness"; DWRUtil.setValue("pwd","密码错误"); } if(datas==4){ //alert(datas); document.form1.submit(); } } ); } </script> </head> <body> <br> <s:form action="login" method="post" name="form1" > <div> <table> <tr> <td cols="2"><div style="text-align: center;font-size: 20px;color: red">用户登录</div></td> </tr> <tr> <td><div>邮箱名: <s:textfield id="umEmail" οnblur="loginVerify()"/></div></td> <td><div id="email"></div></td> </tr> <tr> <td><div>密 码: <s:password id="umPwd" /></div></td> <td><div id="pwd"></div></td> </tr> <tr> <td cols="2"><div><button οnclick="loginVerify()">jjjj</button></div></td> </tr> </table> </div> </s:form> </body> </html> |