Spring MVC 未找到处理程序

问题描述 投票:0回答:6

我是 spring mvc 的新手,正在尝试开发一个非常基本的登录 Web 应用程序。运行项目时出现以下错误。自过去两周以来,我几乎尝试了所有方法,但无法修复此错误。请有人帮助我。

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下。我的控制器中的登录页面方法正在被调用,但视图名称没有被渲染和解析。非常感谢您的帮助。

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";
}
}
java spring spring-mvc
6个回答
1
投票

由于您将 DispatcherServlet 映射到“/”,请尝试将

<mvc:default-servlet-handler/>
添加到您的
spring-servlet.xml


1
投票

我看到了同样的错误,原来你需要单独启用 MVC 注释

<mvc:annotation-driven/>

除了

<context:Annotation-config/>

1
投票

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

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


0
投票

在 web.xml 文件中,应指定调度程序 servlet 使用的配置文件 (spring-servler.xml),因为您没有使用常规名称,即 [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";
}

0
投票

@sanjay 和@Will Keeling 都是对的。需要使用

<mvc:default-servlet-handler/>
(作为最后一个处理程序)并启用
<mvc:annotation-driven/>
<context:Annotation-config/>


0
投票

首先记下控制器类的包名。 现在检查您使用过的包名称,可能有拼写错误。 主要检查viewResolver类。

© www.soinside.com 2019 - 2024. All rights reserved.