dwr框架与spring结合 出错?
这里要如何写?
我改用注解:
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>testStruts2</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:beans.xml</param-value> </context-param> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <description>DWR controller servlet</description> <servlet-name>DWR controller servlet</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>classes</param-name> <param-value> serviceImple.UserManagerImple </param-value> </init-param> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>allowScriptTagRemoting</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DWR controller servlet</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping></web-app>
package serviceImple;import javax.annotation.Resource;import org.directwebremoting.annotations.DataTransferObject;import org.directwebremoting.annotations.Param;import org.directwebremoting.annotations.RemoteMethod;import org.directwebremoting.annotations.RemoteProperty;import org.directwebremoting.annotations.RemoteProxy;import org.directwebremoting.spring.SpringCreator;import org.springframework.stereotype.Component;import dao.UserDao;import model.User;import service.UserManager;@Component(value="userManageImple")@RemoteProxy(creator =SpringCreator.class, creatorParams = @Param(name = "beanName", value = "userManageImple"), name="userManageImple") public class UserManagerImple implements UserManager{ private UserDao userDao; @Override public void add(User user) { // TODO Auto-generated method stub userDao.save(user); } @Resource(name="userDaoImple") public void setUserDao(UserDao userDao) { this.userDao = userDao; } public UserDao getUserDao() { return userDao; } @Override @RemoteMethod() public boolean isUserExistByEmail(String email) { // TODO Auto-generated method stub System.out.println("isUserExistByEmail "+email); return userDao.checkUserByEmail(email); } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><script type='text/javascript' src='/ssh/dwr/interface/userManageImple.js'></script> //这里为什么找不到<script type='text/javascript' src='/ssh/dwr/engine.js'></script><script type='text/javascript' src='/ssh/dwr/util.js'></script><script type='text/javascript'> function regUserChked(){ var email=DWRUtil.getValue("email");//这一句没有执行 userManageImple.isUserExistByEmail(email,showData);//showData回调函数 //即使上一句执行,这一句也没有执行 return false; } function showData(data){ if(data){ DWRUtil.setValue("userMsg","该用户名已经被注册,请更换您的用户名!"); }else{ DWRUtil.setValue("userMsg","恭喜您,该用户名尚未被注册!"); } } </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body> <form action="user/register" method="post" onsubmit="return regUserChked()"> 用户名字<input type="text" name="name" /> <br /> 邮箱账户<input type="text" name="email" id="email"/><div id="userMsg"></div><br /> 密码<input type="password" name="password" /><br /> 确认密码<input type="password" name="password2" /><br /> <button type="submit">提交</button> </form></body></html><url-pattern>/[color=#FF0000]ssh[/color]/dwr/*</url-pattern>
[解决办法]
首先http://127.0.0.1:8080/项目名/dwr
查看dwr配置是否成功,查看dwr关联的方法返回值是否有问题
然后:
var email=DWRUtil.getValue("email");//这一句没有执行
把这句去了,给email赋死值,测试dwr的调用有问题没有,没有问题,那就是你
var email=DWRUtil.getValue("email");的问题
你那个DWRUtil是什么类???哪来的?????
[解决办法]
是不是dwr.xml的内容配置不太对啊...
参考:http://wl-ldy.iteye.com/admin/blogs/1038633
http://wl-ldy.iteye.com/admin/blogs/837084
[解决办法]
这一般都是固定写法,把ssh去掉试试,只要是在web.xml配置了dwr的
<url-pattern>/dwr/*</url-pattern>
<script type='text/javascript' src='dwr/interface/userManageImple.js'></script> <script type='text/javascript' src='dwr/engine.js'></script><script type='text/javascript' src='dwr/util.js'></script>