Java 使用Spring MVC运行DWR时未找到dwrService.js

Java 使用Spring MVC运行DWR时未找到dwrService.js,java,spring,jakarta-ee,spring-mvc,dwr,Java,Spring,Jakarta Ee,Spring Mvc,Dwr,我已经从中创建了一个Spring DWR集成 当我运行该项目时,浏览器中会弹出一个“NOT FOUND”(未找到),但没有找到对dwrService.js的响应。Engine.js和util.js已正确加载 Request: `http://localhost:8080/HelloWorldSpring3/dwr/interface/dwrService.js` Response: "404 Not Found" 控制台中的消息是 an 10, 2014 4:12:31 PM org.spri

我已经从中创建了一个Spring DWR集成

当我运行该项目时,浏览器中会弹出一个“NOT FOUND”(未找到),但没有找到对dwrService.js的响应。Engine.js和util.js已正确加载

Request: `http://localhost:8080/HelloWorldSpring3/dwr/interface/dwrService.js`
Response: "404 Not Found"
控制台中的消息是

an 10, 2014 4:12:31 PM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/HelloWorldSpring3/forms/dwr/interface/dwrService.js] in DispatcherServlet with name 'dispatcher'
Jan 10, 2014 4:14:24 PM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/HelloWorldSpring3/forms/dwr/dwr/interface/dwrService.js] in DispatcherServlet with name 'dispatcher'
为什么对dwrService.js的请求是针对dispatcher servlet的

下面是我的配置文件、控制器和jsp

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">

    <display-name>Comet</display-name>

    <servlet>
      <servlet-name>dispatcher</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/applicationContext.xml</param-value> 
        </init-param> 
      <load-on-startup>1</load-on-startup>
    </servlet>

     <!-- Mapping for DWR -->
    <servlet-mapping>
      <servlet-name>dispatcher</servlet-name>
      <url-pattern>/forms/dwr/*</url-pattern>
    </servlet-mapping>       

    <!-- Mapping for MVC -->
    <servlet-mapping>
      <servlet-name>dispatcher</servlet-name>
      <url-pattern>/forms/*</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>    
</web-app>

彗星
调度员
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
/WEB-INF/applicationContext.xml
1.
调度员
/表格/dwr/*
调度员
/形式/*
org.springframework.web.context.ContextLoaderListener
index.jsp
dwr-Context.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:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.directwebremoting.org/schema/spring-dwr
        http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd">

    <dwr:annotation-config />

    <dwr:annotation-scan base-package="net.roseindia.controllers" scanDataTransferObject="true" scanRemoteProxy="true" />

    <dwr:url-mapping />

    <dwr:controller id="dwrController" debug="true">
    <dwr:config-param name="activeReverseAjaxEnabled" value="true"/>
    </dwr:controller>
</beans>
<?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:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.0.xsd
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">


    <context:annotation-config />

    <context:component-scan base-package="net.roseindia.controllers" />

    <mvc:annotation-driven /> 

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

    <import resource="file:**/WebContent/WEB-INF/dwr-context.xml" />

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix">
            <value>/WEB-INF/views/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>     
</beans>

applicationContext.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:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.directwebremoting.org/schema/spring-dwr
        http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd">

    <dwr:annotation-config />

    <dwr:annotation-scan base-package="net.roseindia.controllers" scanDataTransferObject="true" scanRemoteProxy="true" />

    <dwr:url-mapping />

    <dwr:controller id="dwrController" debug="true">
    <dwr:config-param name="activeReverseAjaxEnabled" value="true"/>
    </dwr:controller>
</beans>
<?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:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.0.xsd
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">


    <context:annotation-config />

    <context:component-scan base-package="net.roseindia.controllers" />

    <mvc:annotation-driven /> 

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

    <import resource="file:**/WebContent/WEB-INF/dwr-context.xml" />

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix">
            <value>/WEB-INF/views/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>     
</beans>

/WEB-INF/views/
.jsp
JSP


SpringMVC-DWR集成教程
SpringMVC-DWR集成教程
AJAX版本
//检索匹配的值
//DWR服务的代表
函数add(){
//检索文本输入的值
变量操作数1=dwr.util.getValue(“inputNumber1”);
变量操作数2=dwr.util.getValue(“inputNumber2”);
//传递两个数字、一个回调函数和一个错误函数
dwrService.add(操作数1、操作数2、{
回调:handleAddSuccess,
errorHandler:HandLeaderRor
});
}
//数据包含返回的值
函数handleAddSuccess(数据){
//将数据分配给结果id
dwr.util.setValue(“总和”,数据);
}
函数handleAddError(){
//显示弹出消息
警报(“我们无法添加这些值!”);
}
演示1
添加两个数字:
+
总和:(结果将显示在此处)
我做错了什么

为什么对dwrService.js的请求是针对dispatcher servlet的

因为这正是你绘制地图的方式。注意
调度程序
。这意味着匹配“/forms/dwr”的请求将被发送到名为“dispatcher”的servlet


调度员
/表格/dwr/*
我不是DWR专家,但我相信,按照您希望的设置方式,请求必须首先转到DispatcherServlet。Spring然后将它们转发给Spring管理的DWR bean

您确定
他在工作吗?我会启动Spring日志来调试,看看是否有来自这个文件的bean被创建

在我看来,您的导入语句中的“/WebContent”很可疑。/WebContent/WEB-INF/dwr-context.xml应该是/WEB-INF/dwr-context.xml吗

你在用什么操作系统?你的问题在资本化方面有些不一致。您提到了dwr-Context.xml,但案例与xml中的内容不匹配。只有在Unix类型的平台上,这才是一个因素

编辑:

一般来说,只是一个问题:是否需要导入所有css &UI头部分中的js文件也通过 调度器servlet映射

这取决于URL结构。如果您的图像和CSS文件位于“/forms”下,那么请求将到达Spring dispatcher。您需要专门配置dispatcher,以便为您的资源提供服务。Spring为此提供了[]指令()

但是,由于Spring dispatcher映射到“/forms/”而不是“/”,所以容器的默认servlet将为“/forms/*”下没有的任何内容提供服务。例如,“/css/main.css”不会用您当前的配置击中Spring的调度程序


这两种方法都是有效的,但我个人的偏好是将DispatcherServlet映射到/ajax或/ui之类的路径,并让servlet容器从/images或/css之类的文件夹中提供我的静态内容。

感谢您的回复John now无权访问代码将在一天内更新。一般来说,在UI的头部分导入所有css&js文件的请求是否也通过DispatcherServlet映射?