2012-12-11 43 views
1

我开发与Spring MVC的应用程序,在这里需要帮助是我的web.xmlSpring MVC的3 - 在解决url-pattern的问题

<servlet> 
    <servlet-name>admin</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>admin</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

提供静态内容,我添加了下面一行在我管理员-servlet.xml中

<context:component-scan base-package="com.prasanna.blog.Server" /> 
<mvc:resources mapping="/resources/**" location="/"/> 

我有5个控制器的每个被映射到特定的URL例如adminRequests.java被映射到/admin/*

@Controller 
@RequestMapping("/admin/*") 
public class AdminRequests 

然后我有类映射到特定的URL的方法。

的问题是,当在web.xml中的url-pattern当我改变web.xml中的URL模式/app或任何其他被映射为/。但我得到404错误,我index.html供应没有任何的问题。

我不确定问题出在哪里。请指教

回答

1

当您将Url模式/映射到Spring的Dispatcher Servlet时,所有对您的应用程序的请求都会被转发到Dispatcher Servlet。尽管在这种情况下,您使用<mvc:resources>标记定义了静态资源,但是您的index.html未正确解析,因为它未呈现为/resources/index.html而是/index.html。

我建议你在spring的<servlet-mapping>之前在你的web.xml中增加一个<servlet-mapping>。例如:

<servlet-mapping> 
     <servlet-name>default</servlet-name> 
     <url-pattern>/index.html</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>admin</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

希望能为你工作。

0

没有,没有解决问题。但我看到另一个讨论同一问题的线索,以及其中的一个答案。我删除从春天XML <mvc:resources>线,并添加以下线在web.xml

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.js</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.css</url-pattern> 
</servlet-mapping> 

现在我的静态内容没有任何问题,但担任我不喜欢这种方法。这感觉像一个非常肮脏的黑客。现在,如果我必须提供图像,我必须为每种图像类型添加映射。我不确定春天版本是否是一个问题,因为我在后端使用弹簧数据来使用mongodb。花了一段时间来设置我的pom.xml,因为spring数据版本和mongodb驱动程序存在一些问题。