没有注释的Spring MVC - 未找到HTTP 404页面错误

时间:2016-06-15 06:05:09

标签: spring spring-mvc tomcat servlets

我试图在不使用注释的情况下编写一个简单的Spring MVC Web应用程序。但是,当我访问特定的URL时,我收到HTTP 404错误。相关的代码段如下:

为前端控制器完成了web.xml更改:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee"     xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.4">
  <display-name>POCProject</display-name>
  <servlet>
    <servlet-name>FrontController</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
  <servlet-mapping>
      <servlet-name>FrontController</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

servlet名称是 - &gt;的 FrontController

因此,请准备以下配置文件 - &gt; FrontController-servlet.xml中

<beans ...>

   <bean id="HandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

   <bean name="/userdetails" class="com.example.controllers.UserDetailsController"/>

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

在上面的配置文件中,Handler映射类是 - &gt; org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping

网址/userdetails的控制器类是 - &gt; com.example.controllers.UserDetailsController

此控制器的代码如下:

public class UserDetailsController extends AbstractController {

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse res) throws Exception {

    ModelAndView mw = new ModelAndView("userInfo");
    return mw;
    }
}

因此,对于/userdetails的请求,控制器应发送视图userInfo.html

但是当我调用它时,我收到HTTP 404错误。

我已经在Apache tomcat中部署了这个,下面是我在tomcat控制台中获得的消息。

WARNING: No mapping found for HTTP request with URI [/POCProject/WEB-INF/userInfo.html] in DispatcherServlet with name "FrontController"

关于我在这里缺少什么的任何意见?

1 个答案:

答案 0 :(得分:1)

InternalResourceViewResolver的javadoc说它是一个(强调我的):

  

同一Web应用程序中的JSP或其他资源的包装器。将模型对象公开为请求属性,并使用RequestDispatcher 将请求转发到指定的资源URL

JSP由Tomcat(或任何servlet容器)在内部转换为真正的servlet,Tomcat是适合转发的资源。但是一个简单的HTML不是。

这意味着Spring InternalResourceViewResolver无法使用HTML视图,您必须将它们转换为JSP文件。