Spring4 MVC 笔记: ControllerClassNameHandlerMapping 实现DispatcherServlet

本文介绍了在Spring4 MVC中使用ControllerClassNameHandlerMapping时遇到的问题及解决方案。首先,配置该映射可能导致静态资源访问异常和请求处理问题,这源于其与@Controller和静态资源处理的优先级不同。通过调整order值可以解决优先级问题。其次,为了解决请求处理,文章提到了DispatchController和MultiActionController,前者需要添加handleRequest方法,后者则根据方法参数和返回值进行映射。虽然MultiActionController简化了控制器配置,但对实现RESTful API支持不足,因为RequestMapping的精细控制仅在函数级别提供,而非类级别。
摘要由CSDN通过智能技术生成

在看Spring4,1 文档时, 发现了 ControllerClassNameHandlerMapping 这个东西, 简单来说, 作用是将  MyController  这样的名字, 自动映射成 /my/** 这样的URL, 于是我就猜想用它是不是就可以省略掉Controller类上的@RequestMapping . 于是一段痛苦的经历开始了. 下面记录一下配置过程中遇到了几个问题和结论. 


第一次尝试: 配置

配置方法非常简单:

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

然后一个不带 @RequestMapping的类:  (错误示例)

@Controller
public class AccountController {

	public String add() {
		return "account/hello";
	}
}

和一个 hello.html, 内容任意.


异常现象1. 无法请求ResourceHandler中注册的静态资源文件.

异常现象2. account/hello可以正确返回, 但 account/add 异常: 无法找到模板.


原因及结论

优先级问题:

在其他都使用默认配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值