2010-11-29 123 views
2

错误信息:没有映射找到HTTP请求与URI [/TestSpringWebApp/hello.htm]弹簧MVC 3没有映射找到HTTP请求与URI

任何帮助将不胜感激!

我正在使用注释来将请求映射到控制器。 控制器代码:

@Controller 
@RequestMapping("/hello.htm") 
public class HelloController {  
    protected final Log logger = LogFactory.getLog(getClass()); 

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)  
      throws ServletException, IOException { 
     String now = (new Date()).toString(); 

     logger.info("Returning hello view with " + now); 

     return new ModelAndView("hello", "now", now);  
    }  
} 

调度-servlet.xml中如下:

<?xml version="1.0" encoding="UTF-8"?> 
<beans ...> 

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/> 

    <!-- 
    Most controllers will use the ControllerClassNameHandlerMapping above, but 
    for the index controller we are using ParameterizableViewController, so we must 
    define an explicit mapping for it. 
    --> 
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
     <property name="mappings"> 
      <props> 
       <prop key="index.htm">indexController</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="viewResolver" 
      class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
      p:prefix="/WEB-INF/jsp/" 
      p:suffix=".jsp" /> 

    <!-- 
    The index controller. 
    --> 
    <bean name="indexController" 
      class="org.springframework.web.servlet.mvc.ParameterizableViewController" 
      p:viewName="index" /> 
    <!-- <bean name="/hello.htm" class="com.kibboko.poprocks.web.HelloController"/>--> 
</beans> 

的applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans ...> 

    <!--bean id="propertyConfigurer" 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
      p:location="/WEB-INF/jdbc.properties" /> 

    <bean id="dataSource" 
      class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
      p:driverClassName="${jdbc.driverClassName}" 
      p:url="${jdbc.url}" 
      p:username="${jdbc.username}" 
      p:password="${jdbc.password}" /--> 

    <!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) --> 

</beans> 

beans.xml 

<?xml version="1.0" encoding="UTF-8"?> 
<beans ...> 

    <!--bean id="propertyConfigurer" 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
      p:location="/WEB-INF/jdbc.properties" /> 

    <bean id="dataSource" 
      class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
      p:driverClassName="${jdbc.driverClassName}" 
      p:url="${jdbc.url}" 
      p:username="${jdbc.username}" 
      p:password="${jdbc.password}" /--> 

    <!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) --> 

</beans> 

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app ...> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>redirect.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

回答

5

您必须添加@RequestMapping t o方法,而不是课堂。如果将它添加到类中,它将作为前缀应用于此类的所有方法映射,但您还必须映射类的方法。

+0

增加@RequestMapping(method = RequestMethod.GET)上面的方法。还是行不通。我是否需要配置类似自动扫描包xyz的东西,以便Spring可以找到控制器?太感谢了。 – Bobo 2010-11-29 18:13:18

+0

@Bobo你有没有正如nickdos说的那样? – Javi 2010-11-30 17:10:55

11

您还需要

<mvc:annotation-driven />

添加到您的调度员-servlet.xml文件。

2

你也可以有@RequestMapping类,但是每个方法也应该有它自己的“@RequestMapping”请看下面的例子。

@Controller 
@RequestMapping("/appointments") 
public class AppointmentsController { 

    private final AppointmentBook appointmentBook; 

    @Autowired 
    public AppointmentsController(AppointmentBook appointmentBook) { 
     this.appointmentBook = appointmentBook; 
    } 

    @RequestMapping(method = RequestMethod.GET) 
    public Map<String, Appointment> get() { 
     return appointmentBook.getAppointmentsForToday(); 
    } 

    @RequestMapping(value="/{day}", method = RequestMethod.GET) 
    public Map<String, Appointment> getForDay(@PathVariable @DateTimeFormat(iso=ISO.DATE) Date day, Model model) { 
     return appointmentBook.getAppointmentsForDay(day); 
    } 

    @RequestMapping(value="/new", method = RequestMethod.GET) 
    public AppointmentForm getNewForm() { 
     return new AppointmentForm(); 
    } 

    @RequestMapping(method = RequestMethod.POST) 
    public String add(@Valid AppointmentForm appointment, BindingResult result) { 
     if (result.hasErrors()) { 
      return "appointments/new"; 
     } 
     appointmentBook.addAppointment(appointment); 
     return "redirect:/appointments"; 
    } 
} 
相关问题