Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Spring 找不到URI为[/WEB-INF/pages/apiForm.jsp]的HTTP请求的映射_Spring_Spring Mvc_Servlet Dispatching - Fatal编程技术网

Spring 找不到URI为[/WEB-INF/pages/apiForm.jsp]的HTTP请求的映射

Spring 找不到URI为[/WEB-INF/pages/apiForm.jsp]的HTTP请求的映射,spring,spring-mvc,servlet-dispatching,Spring,Spring Mvc,Servlet Dispatching,我的处理程序转发到internalresourceview'apiForm',但随后我得到错误404RequestUri=/WEB-INF/pages/apiForm.jsp。我确信apiForm.jsp位于/WEB-INF/pages/ 13:45:02034DEBUG[org.springframework.web.servlet.view.JstlView]- 转发到InternalResourceView“apiForm”中的资源[/WEB-INF/pages/apiForm.jsp]

我的处理程序转发到internalresourceview'apiForm',但随后我得到错误404RequestUri=/WEB-INF/pages/apiForm.jsp。我确信apiForm.jsp位于/WEB-INF/pages/


13:45:02034DEBUG[org.springframework.web.servlet.view.JstlView]- 转发到InternalResourceView“apiForm”中的资源[/WEB-INF/pages/apiForm.jsp]

13:45:02035DEBUG[org.springframework.web.servlet.DispatcherServlet]- 名为“testapp2”的DispatcherServlet确定[/WEB-INF/pages/apiForm.jsp]的上次修改值

13:45:02038DEBUG[org.springframework.web.servlet.DispatcherServlet]-未找到处理程序 在getLastModified中

13:45:02038DEBUG[org.springframework.web.servlet.DispatcherServlet]- 名为“testapp2”的DispatcherServlet正在处理的请求 [/WEB-INF/pages/apiForm.jsp]

13:45:02038WARN[org.springframework.web.servlet.PageNotFound]-未找到的映射 名为“testapp2”的DispatcherServlet中URI为[/WEB-INF/pages/apiForm.jsp]的HTTP请求

13:45:02045DEBUG[org.springframework.web.servlet.DispatcherServlet]-成功完成请求

13:45:02048DEBUG[org.springframework.web.servlet.DispatcherServlet]-已成功完成请求

这就是我的dispatcher.xml的样子

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

看起来DispatcherServlet正在尝试处理对apiForm.jsp的请求,这向我表明您的web.xml servlet映射正在将该空间的请求定向到DispatcherServlet

你可能有这样的东西

<servlet-mapping>
  <servlet>dispatcher</servlet>
  <url-pattern>/*</url-pattern>
</servlet-mapping>

调度员
/*
尝试使用不同的扩展名(.do)调用控制器,并更新servlet映射以适应需要

 <servlet-mapping>
  <servlet>dispatcher</servlet>
  <url-pattern>*.do</url-pattern>
</servlet-mapping>

调度员
*.做

您需要的是一个控制器,该控制器首先响应url,然后呈现jsp。看这个。

是的,我知道我来晚了,但这可能会帮助其他人

servlet容器根据匹配的最长路径选择映射。因此,您可以将此映射放在JSP中,它将被选择在/*映射之上

<servlet-mapping>
  <servlet-name>jsp</servlet-name>
  <url-pattern>/WEB-INF/pages/*</url-pattern>
 </servlet-mapping>

jsp
/WEB-INF/pages/*
实际上,对于Tomcat,这就是您所需要的,因为jsp是一个现成的servlet。对于其他容器,您需要找到JSP servlet的名称或添加servlet定义,如:

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>

jsp
org.apache.jasper.servlet.JspServlet

当你的应用程序没有真正编译,但仍在Tomcat中启动时,也可能发生这种情况。当我看到这种情况发生时,它不是在编译,因为项目指定了“特定于项目”的JDK,代码是在没有特定JDK的机器上签出的。Eclipse默认为JRE,而不是JDK,然后应用程序就没有编译

要在特定情况下修复此问题,我们只需在此处关闭“项目特定设置”:

“项目|属性| Java编译器”

以下是有关如何执行此操作的更详细信息:

使用Spring 3.1和Tomcat 7,我得到了下一个错误:


org.springframework.web.servlet.DispatcherServlet noHandlerFound 在名为“appServlet”的DispatcherServlet中找不到URI为[/baremvc/]的HTTP请求的映射

我需要在web.xml中添加下一个配置:

<welcome-file-list>
    <welcome-file/>
</welcome-file-list>


应用程序成功了

可以进行简单的检查。我目前正在使用SpringMVC架构和hibernate。我错过了在类名上方写@Controller注释。这给我带来了问题

@Controller
public class MyClass{
    ...
}
希望这个简单的检查能解决你的问题。

和Brad Parks的答案一样。。。更多的文字虽然

我遇到了完全相同的问题,并尝试了上述解决方案以及其他许多解决方案,但都产生了负面结果。我甚至从一个全新的Dev env开始,只是安装了一个springmvc模板,并试图在安装后直接运行它(应该可以运行,但对我来说失败了)

对我来说,问题是我在项目中使用的是jdk1.6,但我在eclipse中选择的执行环境是jdk1.7。 解决方案是更改特定于项目的执行环境设置,以便将此项目设置为jdk1.6。 右键单击项目-->属性-->Java编译器-->选中“启用项目特定设置”(如果尚未选中)-->选择适当的jdk(如果未安装则添加)。

我希望这能帮助一些人,节省他们的时间,因为过去几天我一直在互联网的每个角落寻找答案。当我开始绝望,并在(根据我的大脑)不太可能找到的地方寻找解决方案时,我自己意外地发现了它

我的2美分。谢谢

Edit1:使用特定于项目的设置


Edit2:刚刚意识到Brad Parks已经在这条帖子中回答了这个问题。好吧,至少我从这个=D中得到了“编辑”徽章不幸的是,这是一个相当广泛的类错误消息。还有一件可能出错的事情是,如果您缺少一些类/jar。例如,如果缺少spring表达式jar文件,调度servlet将无法定位您的控制器,无论您如何努力,以及其他配置如何正确。

我想我阅读了整个互联网,以了解如何让sitemesh在不扩展的情况下处理html路径+不扩展的API路径。我裹在一件笔直的夹克里,弄明白了这一点,每转一圈似乎都会弄坏别的东西。后来我终于找到了这个帖子

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>/WEB-INF/views/*</url-pattern>
 </servlet-mapping>

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>/WEB-INF/decorators/*</url-pattern>
</servlet-mapping>

调度员

org.springframework.web.servlet.DispatcherServlet 1. jsp org.apache.jasper.servlet.JspServlet 调度员 /* jsp /WEB-INF/views/* jsp /WEB-INF/decorators/*
<mvc:default-servlet-handler/>
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        ...
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>ahok</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>ashok</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
 @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index(Model model) {
     return "redirect:/openStudentPage";
    }

@RequestMapping(value = "/openStudentPage", method = RequestMethod.GET)
public String listStudents(Model model) {
    model.addAttribute("student", new Student());
    model.addAttribute("listStudents", this.StudentService.listStudents());
    return "index";
}
<mvc:resources mapping="/resources/**" location="classpath:/resources/" />
<mvc:annotation-driven />