SpringMVC整合DWR

jopen 7年前

版本信息:

Spring3.1.2

Dwr3.0.M1

web.xml配置信息

<!-- spring mvc -->    <servlet>          <servlet-name>dispatcherServlet</servlet-name>          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>          <init-param>           <param-name>contextConfigLocation</param-name>           <param-value>classpath:spring-mvc-servlet.xml</param-value>          </init-param>          <load-on-startup>1</load-on-startup>      </servlet>        <servlet-mapping>          <servlet-name>dispatcherServlet</servlet-name>          <url-pattern>*.do</url-pattern>      </servlet-mapping>      <servlet-mapping>     <servlet-name>dispatcherServlet</servlet-name>     <url-pattern>/dwr/*</url-pattern>   </servlet-mapping>

spring-mvc-servlet.xml中配置信息

<dwr:configuration>    <dwr:convert type="bean" class="org.mvn.dwr.model.User"></dwr:convert>   </dwr:configuration>   <dwr:url-mapping/>      <dwr:controller id="dwrController" debug="true"/>         <bean class="org.mvn.dwr.dao.impl.UserDaoImpl" id="userDaoImpl">   </bean>      <bean class="org.mvn.dwr.service.impl.UserServiceImpl" id="userServiceImpl">    <property name="userDao" ref="userDaoImpl"></property>    <dwr:remote javascript="dwrUserService">     <dwr:include method="checkUsernameIsExists"/>     <dwr:include method="getUsername"/>     <dwr:include method="findUserById"/>     <dwr:include method="listAll"/>    </dwr:remote>   </bean>

User.java

package org.mvn.dwr.model;      public class User {   private long id;   private String username;   private String birthday;   private String address;      public User() {   }      public User(long id, String username, String birthday, String address) {    super();    this.id = id;    this.username = username;    this.birthday = birthday;    this.address = address;   }      public long getId() {    return id;   }     public void setId(long id) {    this.id = id;   }   public String getUsername() {    return username;   }   public void setUsername(String username) {    this.username = username;   }   public String getBirthday() {    return birthday;   }   public void setBirthday(String birthday) {    this.birthday = birthday;   }   public String getAddress() {    return address;   }   public void setAddress(String address) {    this.address = address;   }           }

UserDao.java

package org.mvn.dwr.dao;    import java.util.List;    import org.mvn.dwr.model.User;    public interface UserDao {      boolean checkUsernameIsExists(String username);      String getUsername(long id);      User findUserById(long id);      List<User> listAll();     }

UserDaoImpl.java

package org.mvn.dwr.dao.impl;    import java.util.ArrayList;  import java.util.List;    import org.mvn.dwr.dao.UserDao;  import org.mvn.dwr.model.User;    public class UserDaoImpl implements UserDao{     @Override   public boolean checkUsernameIsExists(String username) {    return true;   }     @Override   public String getUsername(long id) {    return "dwrservice";   }     @Override   public User findUserById(long id) {    return new User(1,"admin","1987-02-03","陕西西安");   }     public List<User> listAll(){    List<User> lists=new ArrayList<User>();    for (int i = 1; i <= 100; i++) {     lists.add(new User(i,"admin"+i,"1987-02-03","陕西西安"+i));    }    return lists;   }  }

UserService.java

package org.mvn.dwr.service;    import java.util.List;    import org.mvn.dwr.model.User;    public interface UserService {      boolean checkUsernameIsExists(String username);      String getUsername(long id);      User findUserById(long id);      List<User> listAll();  }

UserServiceImpl.java

package org.mvn.dwr.service.impl;    import java.util.List;    import org.mvn.dwr.dao.UserDao;  import org.mvn.dwr.model.User;  import org.mvn.dwr.service.UserService;    public class UserServiceImpl implements UserService {      private UserDao userDao;      public void setUserDao(UserDao userDao) {    this.userDao = userDao;   }     @Override   public boolean checkUsernameIsExists(String username) {    return userDao.checkUsernameIsExists(username);   }     @Override   public String getUsername(long id) {    return userDao.getUsername(id);   }     @Override   public User findUserById(long id) {    return userDao.findUserById(id);   }     @Override   public List<User> listAll() {    return userDao.listAll();   }    }

在spring-mvc-servlet.xml中增加

xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"

http://www.directwebremoting.org/schema/spring-dwr

http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd

<dwr:configuration>    <dwr:convert type="bean" class="org.mvn.dwr.model.User"></dwr:convert>  </dwr:configuration>   <dwr:url-mapping/>  <dwr:controller id="dwrController" debug="true"/>        <bean class="org.mvn.dwr.dao.impl.UserDaoImpl" id="userDaoImpl">  </bean>     <bean class="org.mvn.dwr.service.impl.UserServiceImpl" id="userServiceImpl">  <property name="userDao" ref="userDaoImpl"></property>  <dwr:remote javascript="dwrUserService">   <dwr:include method="checkUsernameIsExists"/>   <dwr:include method="getUsername"/>   <dwr:include method="findUserById"/>   <dwr:include method="listAll"/>  </dwr:remote>  </bean>

<dwr:configuration>
<dwr:convert type="bean" class="org.mvn.dwr.model.User"></dwr:convert>
</dwr:configuration>

表示把User进行转换

<dwr:url-mapping/>
<dwr:controller id="dwrController" debug="true"/>

两个不能少

<dwr:remote javascript="dwrUserService">
<dwr:include method="checkUsernameIsExists"/>
<dwr:include method="getUsername"/>
<dwr:include method="findUserById"/>
<dwr:include method="listAll"/>
</dwr:remote>

dwrUserService为指定dwr生成js文件的名称

dwr:include表示那些方法需要开启远程调用

最后别忘了配置

<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">    <property name="alwaysUseFullPath" value="true"></property>    <property name="mappings">     <props>      <prop key="/dwr/*">dwrController</prop>      <prop key="/interface/**">dwrController</prop>     </props>    </property>  </bean>

最后在浏览器访问http://localhost:8080/webapp/dwr/

这里有一个奇怪的问题

就是上面的dao和service用注解注入的时候会报千奇百怪的异常信息。也不知道是什么原因,暂且不去管了,在整个整合过程中换了无数个dwr的jar包。可以说dwr的版本真的很坑爹。官方3.0系列至今没有发行正式版的版本,所以难免会出现千奇百怪的问题,有知道的朋友,可以告诉我一声,先谢过了。。。。

来自:http://blog.csdn.net/sxyx2008/article/details/8000381