No mapping found for HTTP request with URI错误,找了一天了也没解决

偎巍 2017-02-18 02:07:26
刚学spring mvc,按照介绍写的代码,一直报这个错误,component-scan加了,mvc:annotation-driven加了,mvc:default-servlet-handler也加了,就是不行,还请各位前辈帮看下。
web.xml配置:

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>hellospring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:WEB-INF/hellospring-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hellospring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

hellospring-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd ">

<context:component-scan base-package="com.hellospring.web" />
<mvc:annotation-driven />
<mvc:default-servlet-handler/>

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />


</beans>


HelloController

package com.hellospring.web.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

@Controller
public class HelloController extends AbstractController {

//define log
private static final Logger logger = Logger.getLogger(HelloController.class.getName());

@Override
@RequestMapping(value="/hello")
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
logger.info("hello controller start....");
ModelAndView mvc = new ModelAndView();
mvc.addObject("message", "hello spring");
mvc.setViewName("/WEB-INF/hello/welcome.jsp");
return mvc;
}

}

...全文
190 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
偎巍 2017-02-18
  • 打赏
  • 举报
回复
谢谢各位,特别是baidu_27266745,问题已经解决,现总结下: 1:如果hellospring-config.xml文件和web.xml文件一样,放在WEB-INF目录下,配置好下: <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/hellospring-config.xml</param-value> </init-param> 配置中不用classpath. 2:如果hellospring-config.xml文件放在classes目录子目录webconfig下,配置好下: <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:webconfig/hellospring-config.xml</param-value> </init-param> 当然,也可以这样子: <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/classes/webconfig/hellospring-config.xml</param-value> </init-param> 而classpath*,表示不只当前classes目录下要找,jar包其它工程的classes也要找,一般尽量不用classpath*,我最开始以为classpath*会在classes目录以及子目录里找是错误的。 还有,配置里,<context:component-scan base-package="com.hellospring.web" />这个是起作用的,没有会报错,其它两个<mvc:annotation-driven /><mvc:default-servlet-handler/>可以没有。
xuanfengshizi 2017-02-18
  • 打赏
  • 举报
回复
前台提交的数据不能有空 而且 action都配置为多例模式就可以了
baidu_27266745 2017-02-18
  • 打赏
  • 举报
回复
contextConfigLocation的路径直接写WEB-INF/hellospring-config.xml,配置文件放在WEB-INF下,应该不用加“classpath:”前缀。classpath与classpath*的区别:http://perfy315.iteye.com/blog/2009258
Z. ZHANG 2017-02-18
  • 打赏
  • 举报
回复
web.xml配置的classpath*:WEB-INF/hellospring-config.xml 你多加了个*号

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧