Ajax实现登录功能时的问题
dwr.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="spring" javascript="loginAjax">
<param name="beanName" value="loginAjax"/>
</create>
<convert converter="bean" match="com.crm.entity.TblUser"/>
</allow>
</dwr>
public TblUser login(String uName,String uPass)
{
if(uName!=null && !"".equals(uName) && uPass!=null && !"".equals(uPass))
{
System.out.println("uName="+uName);
TblUser user = biz.login(uName, uPass);
if(user!=null)
System.out.println("user is not null");
return user;
}
return null;
}
public String test(String name)
{
System.out.println("N="+name);
return "name="+ name;
}没有错误、异常在方法中打印测试结果正确。在页面里http://localhost:8080/crm/dwr/test/loginAjax测试中测试时没有返回值请问是什么原因?新手分不多
dwr.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="spring" javascript="loginAjax">
<param name="beanName" value="loginAjax"/>
</create>
<convert converter="bean" match="com.crm.entity.TblUser"/>
</allow>
</dwr>
public TblUser login(String uName,String uPass)
{
if(uName!=null && !"".equals(uName) && uPass!=null && !"".equals(uPass))
{
System.out.println("uName="+uName);
TblUser user = biz.login(uName, uPass);
if(user!=null)
System.out.println("user is not null");
return user;
}
return null;
}
public String test(String name)
{
System.out.println("N="+name);
return "name="+ name;
}没有错误、异常在方法中打印测试结果正确。在页面里http://localhost:8080/crm/dwr/test/loginAjax测试中测试时没有返回值请问是什么原因?新手分不多
web.xml<!-- DWR Config -->
<servlet>
<servlet-name>dwrCRM</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<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>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwrCRM</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
我是从http://localhost:8080/crm/dwr里测试的。还没到具体页面呢
tcp/ip monitor显示的数据也正常,下面是一部分,"rtytryrty"是我在test方法测试时输入的参数
.....
//#DWR-INSERT
//#DWR-REPLY
dwr.engine._remoteHandleCallback('0','0',"test#name=rtytryrty");
在点击Execute按钮后
可以打印出结果
并且正确
但返回值在测试页面没有输出(弹框)
{
if(uName!=null && !"".equals(uName) && uPass!=null && !"".equals(uPass))
{
System.out.println("uName="+uName);
TblUser user = biz.login(uName, uPass);
if(user!=null)
System.out.println("user is not null");
return user;
}
return null;
}
此方法返回了NULL,你把return null;这一句去掉,把return user;拉到括号外面来试试
在10楼的页面里测试test方法也不行。
我觉得不关方法什么事,下面是我现在用的。
public TblUser login(String uName,String uPass)
{
if(uName!=null && !"".equals(uName) && uPass!=null && !"".equals(uPass))
{
System.out.println("uName="+uName);
TblUser user = biz.login(uName, uPass);
if(user!=null)
{
System.out.println("user is not null");
WebContext wt = WebContextFactory.get();
HttpSession s = wt.getHttpServletRequest().getSession();
s.setAttribute("loginUser", user);
return user;
}
return null;
}
return null;
}
在测试时(用户名密码都是A)可以输出
uName=A
user is not nulltest方法随便输入什么就可以输出
name=什么但问题在于10楼的DWR测试界面里点击第一个或第三个Excute按钮都没有弹出显示结果的对话框。
其实根本不需要到login.jsp去测试。因为上面没有成功下面的觉不用测了。
在login.jsp页面测试.可以弹出 Run 和 000两个对话框。至于haha什么的就没有了function login()
{
var name=document.forms[0].elements["user.userName"].value;
var pass=document.forms[0].elements["user.userPwd"].value;
if(name!=null && pass !=null)
{
alert("Run");
loginAjax.login(name,pass,callBackLogin);
alert("000"); }else
{
alert("用户名或密码为空!");
}
}
function test()
{
var t=document.getElementById("txtContent").value;
if(t!=null)
{
loginAjax.test(t,callBackLogin);
}
}
function callBackLogin(data)
{
alert("haha");
alert(data);
}
DWR和ssh依然是没有问题
问题出在我的过滤器中
response.setContentType("text/html;chartset="+charSet);因为是ajax调用,所以红色代码的位置就有问题了