Spring MVC整合DWR

http://blog.csdn.net/geloin/article/details/7537148

基本上与上文描述的情况一致;

在Controller中可以进行Service层的调用;

如果需要返回对象,需要在spring-mvc.xml中进行配置:

<dwr:configuration>
<dwr:convert type="bean"   class="com.srie.ljddml.orga.model.client.ClientUser"></dwr:convert>
</dwr:configuration>

 springmvc.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc
     http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.directwebremoting.org/schema/spring-dwr   
        http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd">
    <!-- 注册XmlViewResolver,用于iReport & JasperReports报表生成 -->
    <bean id="jasperReportResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
        <property name="order">
            <value>0</value>
        </property>
        <property name="location">
            <value>classpath:jasper-views.xml</value>
        </property>
    </bean>
    <!-- spring mvc 注解驱动 -->
    <mvc:annotation-driven />
    <!-- 扫描器 -->
    <context:component-scan base-package="com.srie.ljddml.controller" />
    <!-- 配置视图 解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <!-- 前缀和后缀 -->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
    <!-- 要求dwr在spring容器中检查拥有@RemoteProxy 和 @RemoteMethod注解的类。注意它不会去检查Spring容器之外的类。 -->
    <dwr:annotation-config id="dwr" />
    <!-- 要求DWR将util.js和engine.js映射到dwrController -->
    <dwr:url-mapping />
    <!-- 定义dwr -->
    <dwr:controller id="dwrController" debug="true">
        <dwr:config-param name="allowScriptTagRemoting" value="true" />
        <dwr:config-param name="crossDomainSessionSecurity" value="false" />
    </dwr:controller>
    <!--设置需要dwr转化的实体类,格式为json传输到jsp页面 -->
    <dwr:configuration>
        <dwr:convert type="bean" class="com.srie.ljddml.orga.model.client.ClientUser"></dwr:convert>
    </dwr:configuration>
    <!-- 文件上传配置 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="50000000" />
    </bean>
    <!-- 从请求和响应读取/编写字符串 -->
    <bean id="stringHttpMessage" class="org.springframework.http.converter.StringHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/plain;charset=UTF-8</value>
            </list>
        </property>
    </bean>
    <!-- 用于将对象转换为JSON -->
    <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="stringHttpMessage" />
                <ref bean="jsonConverter" />
            </list>
        </property>
    </bean>
</beans>

controller:

package com.srie.ljddml.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.directwebremoting.annotations.RemoteMethod;
import org.directwebremoting.annotations.RemoteProxy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import com.srie.ljddml.ddml.service.DdmlServiceI;
import com.srie.ljddml.orga.model.client.ClientUser;
import com.srie.ljddml.orga.service.OrgaServiceI;
@Controller
@RemoteProxy(name = "directController")
public class DirectController {
    @Autowired
    OrgaServiceI orgaService;
    @Autowired
    DdmlServiceI ddmlServiceI;
    @RemoteMethod
    public String getTest(String a) {
        return "test" + a;
    }
    @RemoteMethod
    public List<String> getList(HttpSession session) {
        ClientUser user = (ClientUser) session.getAttribute("clientUser");
        return orgaService.getUserAuthKeys(user);
    }
    @RemoteMethod
    public ClientUser getUser(HttpSession session) {
        ClientUser attribute = (ClientUser) session.getAttribute("clientUser");
        return attribute;
    }
    @RemoteMethod
    public List<ClientUser> getUserList(HttpSession session) {
        ClientUser attribute = (ClientUser) session.getAttribute("clientUser");
        List<ClientUser> list = new ArrayList<ClientUser>();
        list.add(attribute);
        return list;
    }
    @RemoteMethod
    public Map<String, Object> getMsg(HttpSession session){
        ClientUser user = (ClientUser) session.getAttribute("clientUser");
        return ddmlServiceI.getMsg(user); 
    }
}

HTML:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="js/b/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/mlbj.css">
<script src="js/b/js/jquery-1.11.1.min.js"></script>
<script src="js/b/js/bootstrap.min.js"></script>
<script src="js/login.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/directController.js"></script>

</head>
<body class="container-fluid">
    <div class="row">
        <div class="left_menu col-xs-3 col-sm-3 col-md-2" id='divNavId' style="background:#ffffff;">
            <div id='mlSxxx'>----xxx<span ></span>----</div>
            
        </div>
        <div class="col-xs-9 col-sm-9 col-md-10">
            <iframe id="rightIframe" scrolling="no" frameborder="0" src="uri/DdmlTransact.do" style="100%;height:99%;"></iframe>
        </div>
    </div>
</body>
</html>

js:

/**
 * 页面加载之后执行的函数;
 */
$(function() {
    loadMLAuths();
    divMlSearchClick();
    keepSession();
    setInterval("getMsg()", 60000);
});
/**
 * 全局变量定义部分;
 */
var i = 0;
/**
 * 事件编写部分;
 */
// 加载消息函数
function getMsg() {
    directController.getMsg(function(data) {
        $.each(data, function(i, n) {
            $("#" + i +" span").text(n);
        });
    });
}
/**
 * 进行会话保持;
 */
function keepSession() {
    window.setInterval("$.getJSON('orga/mlbj.do');", 120000);
}
原文地址:https://www.cnblogs.com/stono/p/4831898.html