我有一个球衣网络应用程序正在运行,我正在尝试将spring集成到其中。几个断点之后,我发现当控制器请求映射是可访问的,但是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上使用
我的jersey映射被设置为默认映射器/
<servlet-mapping>
<servlet-name>Jersey-Web</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>我已经将spring调度员设置为按以下模式发送
<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的和提到的路径,并希望通过jsp servlet提供任何其他请求。
我试过什么?
/,但正确地拒绝了两个默认servlet是不允许的。/*,让spring转换为/,*.jsp,但正如jsp规范所提到的,*.jsp模式被/*取代了。编辑
重申我的默认servlet是而不是 dispatcherServlet,我的默认servlet是jersey。
发布于 2014-09-03 15:28:41
正如zeroflagL在其comment中所述,JSP资源(默认情况下)由Servlet容器的JSPServlet提供,该Servlet执行编译和呈现。Servlet容器将这个JSP Servlet映射到*.jsp。如果使用mvcDispatcher覆盖该映射,则会丢失所有这些功能,并使DispatcherServlet处理相应的请求。但是您的DispatcherServlet不知道如何处理这些问题。
去掉那些*.jsp映射。
https://stackoverflow.com/questions/25641964
复制相似问题