求教会springmvc的大神 org.springframework.web.servlet.DispatcherServlet noHandlerFound

longlaile2016 2013-06-06 10:03:01
本人用springmvc开发遇到了一个问题,用google和百度都搜不到与自己问题一致的答案。将问题贴出来求助各位路人大神。
web.xml主要的配置
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
</web-app>

applicationContext-mvc.xml主要的配置
<mvc:annotation-driven />

<context:component-scan base-package="com.*.*.web.controller" />

<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 id="handlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />

</beans>

这是我的项目目录(由于上传不了图只好用文字描述下):
forklift(项目名)
com.bb.demo.dao(包名)
BookDao.java
ForkliftInfoDao.java
com.bb.demo.dao.impl
BookImpl.java
ForkliftInfoDaoImpl.java
com.bb.demo.model
book.java
ForkliftInfo.java
com.bb.demo.web.controller
BookController.java
ForkliftInfoController.java


然后是book和forkliftInfo的代码几乎是一样的,可是访问页面的时候book的增删改查都没有问题,forkliftInfo访问就出现:org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/cc/forkliftInfo/forkInlist.do] in DispatcherServlet with name 'springmvc'

我发现服务器启动的时候book的add,list,delete,update加载了两次(如下所示),而forkliftInfo访问就出现上面的问题
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping registerHandlerMethod
INFO: Mapped "{[/book/add],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.bb.demo.web.controller.BookController.add(com.bb.demo.model.Book)
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping registerHandlerMethod
INFO: Mapped "{[/book/list],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.util.Map<java.lang.String, java.lang.Object> com.bb.demo.web.controller.BookController.list(int,int)
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping registerHandlerMethod
INFO: Mapped "{[/book/delete],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.bb.demo.web.controller.BookController.delete(int[])
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping registerHandlerMethod
INFO: Mapped "{[/book/update],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.bb.demo.web.controller.BookController.update(com.bb.demo.model.Book)
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping registerHandlerMethod
INFO: Mapped "{[/book/add],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.bb.demo.web.controller.BookController.add(com.bb.demo.model.Book)
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping registerHandlerMethod
INFO: Mapped "{[/book/list],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.util.Map<java.lang.String, java.lang.Object> com.bb.demo.web.controller.BookController.list(int,int)
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping registerHandlerMethod
INFO: Mapped "{[/book/delete],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.bb.demo.web.controller.BookController.delete(int[])
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping registerHandlerMethod
INFO: Mapped "{[/book/update],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.bb.demo.web.controller.BookController.update(com.bb.demo.model.Book)

最后,我的访问方式是基于注解的方式,下面是bookController.java的部分代码
@Controller("bookController")
public class BookController extends BaseController {
// 书籍实体
private BookDao bookDao;: String
@RequestMapping(value = "/book/add", method = RequestMethod.POST)
public @ResponseBody
String add(Book book) {
if(book!=null){
bookDao.save(book);
return "true";
}else{
return "false";
}

}
@RequestMapping(value = "/book/list", method = RequestMethod.GET)
public @ResponseBody
Map<String, Object> list(int start, int limit) {
List<Book> list = bookDao.load(start, limit);
long count = bookDao.getCount();
Map<String, Object> map = new HashMap<String, Object>();
map.put("list", list);
map.put("count", count);
return map;
}
@RequestMapping(value = "/book/delete", method = RequestMethod.GET)
public @ResponseBody
String delete(int[] id) {
bookDao.batchDel(id);
return "true";
}

问题描述的有点长,希望能有人遇到过和我一样的问题,求解释啊。。。
...全文
8153 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_32872907 2016-01-04
  • 打赏
  • 举报
回复
你可以选择方法1或者方法2。 我看了你的代码中使用的是方法2,但是方法1的<!--注解映射器 -->也还在使用,建议你可以注释掉<!--注解映射器 -->完全使用方法2看看。 方法1: <!--注解映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!--注解适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> 方法2: <!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置 mvc:annotation-driven默认加载很多的参数绑定方法, 比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter 实际开发时使用mvc:annotation-driven --> <mvc:annotation-driven></mvc:annotation-driven>
什么不重名 2016-01-03
  • 打赏
  • 举报
回复
是啊我也遇到这种问题求分享啊
baidu_28703263 2015-06-03
  • 打赏
  • 举报
回复
#7多年,不是多时#7
陈科肇 2015-05-29
  • 打赏
  • 举报
回复
楼主解决了吗?我也是遇到这个问题。求解中!!!!!!!!!!!! 不过发现这个帖子已过去多时。
longlaile2016 2013-06-06
  • 打赏
  • 举报
回复
@xiuxiu2by 这个是forkliftInfo的controller的mapping。 @Controller("forkliftInfoController") public class ForkliftInfoController extends BaseController { // 书籍实体 private ForkliftInfoDao forkliftInfoDao; /** * @description:添加forkliftInfo * @param forkliftInfo * @returnType: String */ @RequestMapping(value = "/forkliftInfo/add", method = RequestMethod.POST) public @ResponseBody String add(ForkliftInfo forkliftInfo) { if(forkliftInfo!=null){ forkliftInfoDao.save(forkliftInfo); return "true"; }else{ return "false"; } } /** * @description:分页查询forkliftInfo * @param start 起始位置 * @param limit 检索数目 * @returnType: Map<String,Object> */ @RequestMapping(value = "/forkliftInfo/list", method = RequestMethod.GET) public @ResponseBody Map<String, Object> list(int start, int limit) { List<ForkliftInfo> list = forkliftInfoDao.load(start, limit); long count = forkliftInfoDao.getCount(); Map<String, Object> map = new HashMap<String, Object>(); map.put("list", list); map.put("count", count); return map; } /** * @description:删除forkliftInfo * @param id 主键数组 * @returnType: String */ @RequestMapping(value = "/forkliftInfo/delete", method = RequestMethod.GET) public @ResponseBody String delete(int[] id) { forkliftInfoDao.batchDel(id); return "true"; } /** * @description:更新forkliftInfo * @param forkliftInfo * @returnType: void */ @RequestMapping(value = "/forkliftInfo/update", method = RequestMethod.POST) public @ResponseBody String update(ForkliftInfo forkliftInfo){ if(forkliftInfo!=null){ forkliftInfoDao.update(forkliftInfo); return "true"; }else{ return "false"; } }
抱抱枯叶 2013-06-06
  • 打赏
  • 举报
回复
/cc/forkliftInfo/forkInlist.do 和你注解的requestmapping比比看
longlaile2016 2013-06-06
  • 打赏
  • 举报
回复
楼上两位说的有道理,可是我book和forkliftInfo代码基本一样,而且都放在同一包下,为什么book可以访问,而forkliftInfo不行,按照百度和google的方法改配置文件也没有用,问题依然在,我试过直接把这个<context:component-scan base-package="com.*.*.web.controller" />改成具体的包路径,也不行。想问问你们知道其他的有可能出现的问题不
  • 打赏
  • 举报
回复
一定是有些地方路径没有对应上,检查配置文件
-AJ- 2013-06-06
  • 打赏
  • 举报
回复
<context:component-scan base-package="com.*.*.web.controller" /> 你把base-package路径改一下。
​ 博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌项目名称基于Web的酒店客房管理系统的设计与实现系统说明3.2.1  用户模块功能分析前台模块应主要包括用户登录模块、用户注册模块、查看客房信息模块、客房预定 模块、用户留言模块、充值模块和个人信息维护模块。用户登录模块:用户通过输入注册的的账号和密码,然后进行身份验证,匹配成功 后实现登录功能。用户注册模块:用户输入合法的账号和密码可以实现注册功能。 查看客房信息模块:用户可以通过首页查看客房的价格,图片,详情等信息,从而   可以选择想要预定的房间。 客房预定模块:用户选择自己想要预定的客房后,可以通过输入相关信息进行订房操作。用户留言模块:用户可以向管理员发送留言。 充值模块:用户可以通过添加银行卡再为自己进行充值操作。 个人信息维护模块:用户可以修改自己的姓名、密码、身份证号等信息,还可以查看自己的订单。3.2.2  管理员模块功能分析对于管理员而言,一个好的管理系统总是能让酒店的管理工作事半功倍[7]。管理员 能够通过这个系统对自己的酒店情况一目了然,应该包括客户留言模块、客房管理模 块、订房信息管理模块、入住信息管理模块、统计分析模块、酒店新闻管理模块、 员信息管理模块、员工信息管理模块、系统用户管理模块、个人信息维护模块。客户留言模块:管理员可以查看并回复用户的留言。客房管理模块:管理员可以管理客房信息,可以添加新的客房,删除已经停用的客房信息,还可以修改现有的客房信息。订房信息管理模块:管理员可以处理用户的订房请求,为用户办理入住手续。入住信息管理模块:对于没有注册的线下客户,也可以办理入住手续。统计分析模块:可以对酒店所有的入住信息进行记录和总结分析。酒店新闻管理模块:管理员可以更新网站上的新闻公告,展示图片等信息。员信息管理模块:管理员可以查看到所有的注册员信息,可以对员信息进行删除,修改,添加操作。员工信息管理模块:管理员可以查看到自己公司所有的员工信息,而且还可以对员工的相关信息进行管理。系统用户管理模块:管理员可以查看到所有的系统管理员信息并对管理员信息进行管理。个人信息维护模块:管理员可以更改自己的登录密码或者是姓名、性别、手机号等 相关个人信息。​编辑 环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本;6.是否Maven项目:否;技术栈1. 后端:Spring+SpringMVC+Mybatis2. 前端:JSP+CSS+JavaScript+jQuery使用说明1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;3. 将项目中springmvc-servlet.xml配置文件中的数据库配置改为自己的配置;4. 运行项目,在浏览器中输入http://localhost:8080/ 登录运行截图​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑 用户管理控制层:package com.houserss.controller;import javax.servlet.http.HttpSession;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import com.houserss.common.Const;import com.houserss.common.Const.Role;import com.houserss.common.ServerResponse;import com.houserss.pojo.User;import com.houserss.service.IUserService;import com.houserss.service.impl.UserServiceImpl;import com.houserss.util.MD5Util;import com.houserss.util.TimeUtils;import com.houserss.vo.DeleteHouseVo;import com.houserss.vo.PageInfoVo;/** * Created by admin */@Controller@RequestMapping(/user/)public class UserController if (ip != null && ip.length() > 0) String[] ips = ip.split(,);for (int i = 0; i  

67,513

社区成员

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

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