我是新手,以推出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";
}
}
答案 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)
<mvc:default-servlet-handler/>
(作为最后一个处理程序)并同时启用<mvc:annotation-driven/>
和<context:Annotation-config/>
答案 4 :(得分:0)
<context:component-scan base-package="your base packege " />
您应该在spring配置xml中查看以下部分。也许你是从某个地方复制它而忘了把它作为你的包名。如果是这样,Spring将无法扫描包并最终显示此错误。