Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 控制器映射工作正常,但jsp提供404_Java_Spring_Jsp_Spring Mvc_Servlets - Fatal编程技术网

Java 控制器映射工作正常,但jsp提供404

Java 控制器映射工作正常,但jsp提供404,java,spring,jsp,spring-mvc,servlets,Java,Spring,Jsp,Spring Mvc,Servlets,我有一个正在运行的jersey webapp,我正在尝试将spring mvc集成到其中。几个断点之后,我发现当控制器请求映射是可访问的,但jsp给出了404。这里的任何帮助都会大有帮助 这是我的dispatcher视图解析器 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"

我有一个正在运行的jersey webapp,我正在尝试将spring mvc集成到其中。几个断点之后,我发现当控制器请求映射是可访问的,但jsp给出了404。这里的任何帮助都会大有帮助

这是我的dispatcher视图解析器

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>
我已将spring dispatcher设置为按以下模式分派

<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>
我想要达到的目标是什么

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

我试过什么

  • 我试图将SpringMVC设置为映射到默认路径
    /
    ,但被正确地拒绝了,因为不允许使用两个默认servlet

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

编辑


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

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


去掉那些
*.jsp
映射。

我想要所有的jsp。。。通过spring mvc dispatcher提供服务-应该如何工作?对不起,是指我在上面代码中使用的mvcDispatcher servlet。jsp由jspservlet交付。DispatcherServlet只转发到jsp,但不传递它。因此,将DispatcherServlet映射到
*.jsp
没有意义。我尝试删除所有的*.jsp标记,但看起来没有任何区别。即使在调用控制器时,它仍然为我提供了一个404 for jsp。尝试删除*.jsp映射,但它不起作用。它仍然提供404尽管控制器请求映射works@zolo您是否删除了所有这些文件,甚至
/WEB-INF/jsp/login.jsp
?如果您检查Spring日志,您将看到
DispatcherServlet
投诉是否是处理
转发请求的人。
<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>
ModelAndView mav = new ModelAndView( "login" );
return mav;