我有一个运行的球衣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
答案 0 :(得分:0)
正如zeroflagL在comment中所述,JSP资源(默认情况下)由Servlet容器的JSP Servlet
提供,后者执行编译和呈现。 Servlet容器将此JSP Servlet
映射到*.jsp
。如果您使用mvcDispatcher
覆盖该映射,则会丢失所有该功能并使DispatcherServlet
处理相应的请求。但是你的DispatcherServlet
不知道如何处理这些问题。
摆脱那些*.jsp
映射。