繁体   English   中英

Spring MVC + GWT RPC

[英]Spring MVC + GWT RPC

我在前端有GWT的应用程序,在后端有Spring的应用程序。 我正在尝试使用Spring MVC添加一个简单的页面,但是映射存在一些问题。

我已经创建了控制器:

@Controller
@RequestMapping("/jobrunner.rpc")
public class JobRunnerController {

    @RequestMapping(method = RequestMethod.GET)
    public String getStartPage() {
        return "jobrunner";
    }
}

启动我的应用程序时,有一行关于映射:[DefaultAnnotationHandlerMapping.registerHandler(411)]将URL路径[/jobrunner.rpc]映射到处理程序'jobRunnerController'

但是,当我尝试打开此页面时,在日志中有404页和下一行:[PageNotFound.noHandlerFound(947)]在DispatcherServlet中未找到名称为“ spring”的URI为[/rds/jobrunner.rpc]的HTTP请求的映射。 -rpc”

也许在web.xml及其过滤器中有问题? 这里是:

<session-config>
    <session-timeout>15</session-timeout>
</session-config>

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

<listener>
    <listener-class>com.db.gbs.gbsapps.rds.backend.servlet.listener.StartupListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/application-config.xml</param-value>
</context-param>

<filter>
    <filter-name>AuthenticationFilter</filter-name>
    <filter-class>com.gft.riaframework.backend.api.filters.AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>AuthenticationFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>



<filter>
    <filter-name>AuthorizationFilter</filter-name>
    <filter-class>com.db.gbs.gbsapps.rds.backend.services.security.impl.live.CustomAuthorizationFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>AuthorizationFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
    <filter-name>ExpiryFilter</filter-name>
    <filter-class>com.db.gm.adk.server.filter.ExpiryFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ExpiryFilter</filter-name>
    <url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>ExpiryFilter</filter-name>
    <url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>ExpiryFilter</filter-name>
    <url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>ExpiryFilter</filter-name>
    <url-pattern>*.gif</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>ExpiryFilter</filter-name>
    <url-pattern>*.png</url-pattern>
</filter-mapping>

<filter>
    <filter-name>GZIPFilter</filter-name>
    <filter-class>com.db.gm.adk.server.filter.GZIPFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>GZIPFilter</filter-name>
    <url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>GZIPFilter</filter-name>
    <url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>GZIPFilter</filter-name>
    <url-pattern>*.js</url-pattern>
</filter-mapping>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping> 

<filter>
    <filter-name>NoCacheFilter</filter-name>
    <filter-class>com.db.gbs.gbsapps.rds.backend.servlet.filter.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>NoCacheFilter</filter-name>
    <url-pattern>/index.html</url-pattern>
</filter-mapping>

<servlet>
    <servlet-name>spring-rpc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring-rpc</servlet-name>
    <url-pattern>*.rpc</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>eventServiceImpl</servlet-name>
    <servlet-class>de.novanic.eventservice.service.EventServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>eventServiceImpl</servlet-name>
    <url-pattern>/main/gwteventservice</url-pattern>
</servlet-mapping>

<error-page>
    <error-code>500</error-code>
    <location>/WEB-INF/jsp/error.jsp</location>
</error-page>

<error-page>
    <error-code>503</error-code>
    <location>/WEB-INF/jsp/error.jsp</location>
</error-page>

<error-page>
    <error-code>403</error-code>
    <location>/WEB-INF/jsp/403.jsp</location>
</error-page>

<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/jsp/404.jsp</location>
</error-page>

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/WEB-INF/jsp/error.jsp</location>
</error-page>

在此先感谢您的建议。

您使用的“ .rpc”后缀很有可能是问题

尝试不使用“ .rpc”进行映射

看看春天的参考

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-ann-requestmapping-suffix-pattern-match

路径模式匹配(后缀)

默认情况下,Spring MVC自动执行“。 ”后缀模式匹配,以便映射到/ person的控制器也隐式映射到/ person。 这允许通过文件扩展名(例如/person.pdf、/person.xml等)指示内容类型。但是,常见的陷阱是映射的最后一个路径段是URI变量(例如/ person / {id})时。 虽然对/person/1.json的请求将正确生成路径变量id = 1和扩展名“ .json”,但是当id自然包含点(例如/person/joe@email.com)时,结果将与预期不符。 显然,“。com”不是文件扩展名。

解决此问题的正确方法是将Spring MVC配置为仅针对为内容协商目的而注册的文件扩展名进行后缀模式匹配。 有关更多信息,请首先参见第17.16.4节“内容协商”,然后参见第17.16.9节“路径匹配”,其中显示了如何启用后缀模式匹配以及如何仅使用注册的后缀模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM