控制器映射有效但jsp给出404

时间:2014-09-03 10:25:46

标签: java spring jsp spring-mvc servlets

我有一个运行的球衣webapp,我试图将spring mvc集成到它中。几个断点后来我发现当控制器请求映射可以访问但jsp给出404时。这里的任何帮助都会非常有帮助。

这是我的调度员视图解析器

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

我尝试加载的jsp是login,并且可以在路径/WEB-INF/jsp/login.jsp上找到

我的泽西服务器servlet映射设置为默认映射器/

<servlet-mapping>
    <servlet-name>Jersey-Web</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

我有弹簧调度员设置发送以下模式

<servlet-mapping>
    <servlet-name>mvcDispatcher</servlet-name>
    <url-pattern>/f/login</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>mvcDispatcher</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>mvcDispatcher</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>

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

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

<servlet-mapping>
    <servlet-name>mvcDispatcher</servlet-name>
    <url-pattern>/WEB-INF/jsp/login.jsp</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>mvcDispatcher</servlet-name>
    <url-pattern>/login.jsp</url-pattern>
</servlet-mapping>

当我访问/f/login时,我看到相应的控制器正在被触发。我正在从我的控制器返回ModelAndView,就像这样

ModelAndView mav = new ModelAndView( "login" );
return mav;

我想要实现的目标?

我希望通过mvcDispatcher提供url模式中的所有jsp和提到的路径,并且我希望通过jersey servlet提供任何其他请求

我尝试了什么?

  • 我尝试将spring-mvc设置为映射到默认路径/,它被正确拒绝,说不允许使用两个默认servlet

  • 我尝试将jersey servlet模式设为/*,将spring-mvc设为/*.jsp,但正如jsp规范所述,模式*.jsp被覆盖/*

修改

重申我的默认servlet是不是 dispatcherServlet,我的默认servlet是jersey servlet

1 个答案:

答案 0 :(得分:0)

正如zeroflagL在comment中所述,JSP资源(默认情况下)由Servlet容器的JSP Servlet提供,后者执行编译和呈现。 Servlet容器将此JSP Servlet映射到*.jsp。如果您使用mvcDispatcher覆盖该映射,则会丢失所有该功能并使DispatcherServlet处理相应的请求。但是你的DispatcherServlet不知道如何处理这些问题。

摆脱那些*.jsp映射。