Spring MVC http请求地址映射(三)

Spring MVC框架通过扫描将带有@Controller的类中的@RequestMapping的方法进行映射,然后调用映射的方法处理请求,这个分发过程默认是由DispaterServlet处理的。

http请求映射原理

  

Spring MVC进行映射的依据

通过URL限定:URL表达式

Spring MVC的地址映射支持标准的URL,同时默认支持是ant风格的URL。列如:

URL 说明
/account/*/create 匹配/account/aaa/create、/account/bbb/create等URL
/account/**/create 匹配/account/create、/account/aaa/bbb/create等URL
/account/create?? 匹配/account/createaa、/account/createbb等URL
/account/{accountId} 匹配account/123、account/abc等URL
/account/**/{userId} 匹配account/aaa/bbb/123、account/aaa/456等URL
account/{accountId}/customer/{customerId}/detail 匹配account/1234/customer/0000/detail等的URL

通过URL限定:绑定路径中{xxx}的值

  

@RequestMapping("/{accountId}")
    public ModelAndView showDetail(@PathVariable("accountId")String accountId){
        ModelAndView mav= new ModelAndView();
        mav.setViewName("user/showDetail");
        mav.addObject("user", userService.getUserById(userId));
    return mav;
}

URL中的{xxx}占位符可以通过@PathVariable(“xxx”)绑定到操作方法的入参中。

在3.X中如果@PathVariable不指定参数名,只有在编译时打开debug开关(javac -debug=no)时才可行!!(不建议),貌似4.x没有这个问题了。

时间: 2024-10-26 08:20:09

Spring MVC http请求地址映射(三)的相关文章

Spring MVC HTTP请求地址映射

package com.springmvc.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annota

研究 Spring MVC 将请求分发到 Spring 依赖注入的类实例

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 一上午时间,碰了 N 个钉子,不断地把钉子拨掉,记录一下选择的工具和方法: 1.首先 Spring Mvc 框架的下载,那么有三个包是必不可少的:

spring mvc get请求也可以接受DTO对象

spring mvc get请求也可以接受DTO对象,比如:url上面你还是将参数&符号连接起来,并自动封装进一个DTO对象里. 只有@RequestBody注解spring mvc才会从http body里去拿数据. 默认不填注解的参数都会从url上面去拿. @ApiOperation(value = "查询卡券详情接口", consumes = "application/x-www-form-urlencoded") @RequestMapping(va

Spring Mvc——处理请求过程

1.概述 下面这张图是Spring mvc处理请求的整体流程,其中Front controller指的是DispatcherServlet类. 1.客户端所有的请求都会发送到DispatcherServlet,由DispacherServlet处理. 2.DispacherServlet将请求分发到不同的Controller类,由Controller类去处理对应的请求. 3.Controller类将对应的请求处理完后,将处理后对应的model或者视图信息给将DispatcherServlet类.

Spring MVC HTTP请求数据绑定

package com.springmvc.controller; import com.springmvc.model.UserInfo; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.stereotype.Controller; import org.springframework.uti

跟踪spring MVC的请求

当我们点击一个超链接时,spring MVC在后台都做了些什么呢,今天就来看看后台都干了啥 首先需要在web.xml里配置一下: 上面的配置就是spring的核心控制器,所有根路径下的请求都会被拦截进行处理.当我们点击一个超链接时,首先会被这个过滤器拦截到,然后就是去查找哪些类被配置为Controller控制器了. 上面就是一个注解方式的定义控制器的.这个控制器会处理根路径下的所有匹配的请求,哪些是相匹配的请求呢.就以你访问网站首页为例 这个initIndex方法会处理{"/", &q

spring mvc get请求中文乱码问题

使用Spring MVC进行get请求时发现get请求带上中文参数,后台收到的是乱码,即使加了encoding filter也没用. 原因是,encoding filter 是针对post请求的,tomcat对get请求的处理方式不一样,需要修改tomcat 的server.xml配置文件 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirec

spring mvc ajax请求

jar包中增加 jackson-annotations-2.5.0.jar jackson-core-2.5.0.jar jackson-databind-2.5.0.jar springmvx.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="

Spring MVC 中请求返回之后的页面没法加载css、js等静态文件

1.是否被拦截,这个在Web.xml配置中servlet拦截是“/”,如果是则 a.使用spring MVC 的静态资源文件 <!-- 静态文件访问,主要是针对DispatcherServlet的拦截是/的--> <mvc:annotation-driven /> <mvc:resources location="/image/" mapping="/image/**"/> <mvc:resources location=&