简体   繁体   English

Spring,Jersey和可见的JSP集成

[英]Spring, Jersey and Viewable JSP Integration

I'm trying to integrate Spring 3.0.5 with Jersey 1.4. 我正在尝试将Spring 3.0.5与Jersey 1.4集成在一起。 I seem to have everything working, but whenever I try and return a Viewable that points to a JSP, I get a 404 error. 我似乎一切正常,但是每当我尝试返回指向JSP的Viewable时,都会出现404错误。 When I wasn't using spring I could use this filter: 当我不使用spring时,可以使用以下过滤器:

<filter>
    <filter-name>Jersey Filter</filter-name>
    <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
    <init-param>
        <param-name>com.sun.jersey.config.feature.Redirect</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>cheetah.frontend.controllers</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.feature.FilterForwardOn404</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
        <param-value>/(images|css|jsp)/.*</param-value>
    </init-param>
</filter>

And I could return a Viewable to any JSP's, image, css that were stored in the appropriate folder. 而且我可以将Viewable返回到存储在相​​应文件夹中的任何JSP,图像,css。 However, now that I have to use the SpringServlet to get spring integration, I'm at a loss for how to access resources, since I can't use the filter above. 但是,现在我必须使用SpringServlet进行Spring集成,由于无法使用上述过滤器,我对如何访问资源一无所知。 I've tried using this servlet mapping with no luck: 我尝试使用这种servlet映射没有运气:

<servlet>  
    <servlet-name>jerseyspring</servlet-name> 
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>
    <init-param>
        <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
        <param-value>/(images|css|jsp)/.*</param-value>
    </init-param>
</servlet>  
<servlet-mapping>  
    <servlet-name>jerseyspring</servlet-name>  
    <url-pattern>/*</url-pattern>  
</servlet-mapping>

Does anyone know the proper configurations to achieve this? 有人知道实现此目标的正确配置吗?

Thanks for any help. 谢谢你的帮助。

I discovered that you can use the SpringServlet as a filter: 我发现可以将SpringServlet用作过滤器:

<filter>
    <filter-name>Jersey Filter</filter-name>
    <filter-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</filter-class>
    <init-param>
        <param-name>com.sun.jersey.config.feature.Redirect</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.feature.FilterForwardOn404</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
        <param-value>/(images|css|jsp)/.*</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>Jersey Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Which really should have been obvious to me since I used a Servlet in my original filter! 自从我在原始过滤器中使用Servlet以来,这对我来说应该是显而易见的!

This seems similar to the default Servlet handler recently added to Spring. 这似乎类似于最近添加到Spring的默认Servlet处理程序

I suspect your Viewable resource is being processed by the jerseyspring Servlet rather than a static content handling Servlet (the "default" Servlet discussed in the above link). 我怀疑您的Viewable资源是由jerseyspring Servlet处理的,而不是由静态内容处理Servlet处理的(上面链接中讨论的“默认” Servlet)。

What happens if you change your configuration to use <url-pattern>/</url-pattern> ? 如果将配置更改为使用<url-pattern>/</url-pattern>什么?

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

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