0

我是 spring 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 正在被调用,但视图名称没有被呈现和解析。非常感谢您的帮助。

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>

前端控制-​​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";
}
}
4

5 回答 5

1

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

<mvc:annotation-driven/>

此外

<context:Annotation-config/>
于 2013-07-21T11:08:34.107 回答
1

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

于 2013-05-21T13:09:06.930 回答
1

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

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

于 2016-11-02T07:33:42.867 回答
0

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

于 2013-09-23T21:05:24.493 回答
0

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

由于 Spring 找不到调度程序 servlet 的配置文件,因此永远不会注册 viewresolver。我假设 'spring-servler.xmlWEB-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";
}
于 2013-05-21T09:53:39.473 回答