Spring MVC找不到处理程序

时间:2013-05-21 09:48:36

标签: java spring spring-mvc

我是新手,以推出mvc并尝试开发一个非常基本的登录webapp。运行项目时出现以下错误。我已经尝试了几乎所有的东西,并且自从过去两周以来无法修复此错误。请有人帮助我。

May 21, 2013 2:37:12 PM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/SpringWeb/WEB-INF/jsp/loginnn.jsp] in DispatcherServlet with name 'spring'

我的jsp页面位于WEB-INF / jsp下。我的控制器中的方法loginpage是调用gettting但是视图名称没有被呈现和解析。非常感谢您的帮助。

的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>testspring</display-name>
<servlet>
<servlet-name>frontcontrol</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>frontcontrol</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

frontcontrol-servlet.xml中

<context:component-scan base-package ="com.shell.spring.testspringapp">
</context:component-scan>
<bean id ="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />      
</bean>

</beans>

控制器类

@Controller

public class Firstcontrol {

@RequestMapping(value="/")
public ModelAndView invokeme(Model m)
{

ModelAndView mav=new ModelAndView();
mav.setViewName("result");
System.out.println("In method");
return mav;
}

@RequestMapping(value="/submit" ,method=RequestMethod.GET)
public String submit(Model m)
{
System.out.println("In submitmethod");
return "submit";
}
}

5 个答案:

答案 0 :(得分:1)

由于您将DispatcherServlet映射到'/',请尝试将<mvc:default-servlet-handler/>添加到spring-servlet.xml

答案 1 :(得分:1)

我看到同样的错误,结果证明你需要单独启用MVC注释

<mvc:annotation-driven/>

除了

<context:Annotation-config/>

答案 2 :(得分:0)

在web.xml文件中,应指定配置文件(spring-servler.xml)供调度程序servlet使用,因为您没有使用常规名称,即[servlet-name] -context.xml

由于Spring无法找到调度程序servlet的配置文件,因此永远不会注册viewresolver。我假设'spring-servler.xml位于我的示例中的WEB-INF文件夹中,因此您可能需要进行调整。

另请注意,我将servlet映射切换为/,这有助于解决静态资源问题,因为/充当了捕获所有内容,而不是通过调度程序映射所有内容。

<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/spring-servler.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

如果您不使用JSTL,也可以尝试使用常规视图解析器。

替换jstl视图解析器:

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

使用:

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

尝试从控制器返回指定视图名称的String

 @RequestMapping(value="/")
 public String loginpage(Model model)
{  
   Employee emp=new Employee();
    ModelAndView mav=new ModelAndView();
    model.addObject("emp", emp);
    return "loginnn";
}

答案 3 :(得分:0)

@sanjay和@Will Keeling都是对的。需要使用<mvc:default-servlet-handler/>(作为最后一个处理程序)并同时启用<mvc:annotation-driven/><context:Annotation-config/>

答案 4 :(得分:0)

<context:component-scan base-package="your base packege " />

您应该在spring配置xml中查看以下部分。也许你是从某个地方复制它而忘了把它作为你的包名。如果是这样,Spring将无法扫描包并最终显示此错误。