05.SpringMVC之请求映射

@RequestMapping是一个用来处理请求地址映射的注解,可用于类或者方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestMapping注解有六个属性,下面进行详细的说明。

value:指定请求的实际地址,指定的地址可以是URI Template模式。

value的uri值为以下三类:

A) 可以指定为普通的具体值;

B)  可以指定为含有某变量的一类值;

C) 可以指定为含正则表达式的一类值?

method:指定请求的method类型,GET、POST、PUT、DELETE等。

consumes:指定处理请求的提交内容类型(Content-Type),例如application/json

produces:指定返回的内容类型

params:指定request中必须包含某些参数值才让该方法处理。

headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。

根据他们处理的request的不同内容部分分为四类:

A:处理request uri部分的注解:@PathVariable;
B:处理request header部分的注解:@RequestHeader, @CookieValue;
C:处理request body部分的注解:@RequestParam, @RequestBody;

D:处理attribute类型的注解:@SessionAttributes, @ModelAttribute、@SessionAttribute;

[email protected]
当使用@RequestMapping URI template样式映射时,即someUrl/{paramId},这时的paramId可通过@PathVariable注解绑定它传过来的值到方法的参数上。

[email protected]、@CookieValue
@RequestHeader注解可以把Request请求header部分的值绑定到方法的参数上。
@CookieValue可以把Request header中关于cookie的值绑定到方法的参数上。

[email protected]
A)常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String­­> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;
B)用来处理Content­Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;
C) 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

[email protected]
该注解常用来处理Content­Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等;
它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。因为配置有FormHttpMessageConverter,所以也可以用来处理 application/x-www-form-urlencoded的内容,处理完的结果放在一个MultiValueMap<String, String>里,这种情况在某些特殊需求下使用,详情查看FormHttpMessageConverter api?

[email protected]

默认情况下Spring MVC将模型中的数据存储到request域中。当一个请求结束后,数据就失效了。如果要跨页面使用。那么需要使用到session。而@SessionAttributes注解就可以使得模型中的数据存储一份到session域中。

@Controller
@SessionAttributes("user")
public class ModelController {

    @ModelAttribute("user")
    public User initUser(){
        User user = new User();
        user.setName("default");
        return user;
    }

}

[email protected]是用于获取已经存储的session数据,并且作用在方法的层面上。

   @RequestMapping("/session")
    public String session(
            @SessionAttribute("user") User user
    ){
        // do something
        return "index";
    }

[email protected]

  ①:方法返回值为void,@ModelAttribute注解没有指定任何属性,这样的话需要将Model或者map传入方法中,如下:

    key为user1,value为User对象,可以用 ${requestScope.user1.userName} 取出

  @ModelAttribute
    //@ModelAttribute 没有指定值,且被修饰的方法返回值为void,则需要借助map或者model将数据模型放入request域
    public void getUser(Map<String, Object> map) {
        System.out.println("ModelAttribute1..");
        map.put("user1", new User("kelin","123aaa"));
    }

    

  ②:方法返回值为普通的pojo,@ModelAttribute注解没有指定任何属性,这样的话,request域中存入的对象名字默认为类型首字母小写,如下:

    key为user(类型首字母小写),value为User对象,可以用 ${requestScope.user.userName} 取出

  @ModelAttribute
    //@ModelAttribute 没有指定值,且被修饰方法有pojo类型的返回值,则request域中 key为返回值类型第一个字母小写的字符串,value为返回值
    public User getUser() {
        System.out.println("ModelAttribute2..");
        return new User("kelin","123aaa");
    }

    

  ③:方法返回值为普通的pojo,@ModelAttribute注解指定了value属性,这样的话,request域中就放入了一个对象,如下:

    key为user2,value为User对象,可以用 ${requestScope.user2.userName} 取出

  @ModelAttribute("user2")
    //@ModelAttribute 的值就是request域中的key,被该注解修饰的方法的返回值为对应的value
    public User getUser() {
        System.out.println("ModelAttribute3..");
        return new User("kelin","123aaa");
    }

  ④:两个注解同时修饰方法,看注释解释,有点不一样,返回的东西不是视图,而是request域中的值,返回的视图变成了 @RequestMapping中指定的value

/*
     * @ModelAttribute 和 @RequestMapping 同时修饰一个方法
     *
     * @ModelAttribute 中value为 request域中的key,被修饰的方法返回值为request域中的value
     * @RequestMapping 中value为 返回的视图名,此例中相当于定向到xxx/testModelAttribute4.jsp
     */

    @ModelAttribute(value="user")
    @RequestMapping(value="/testModelAttribute4..")
    public User testModelAttribute() {
        return new User("kelin","123aaa");
    }

⑤:@ModelAttribute 修饰方法参数(最常用),参数直接封装到对象中,比如常用的 pageNo,pageSize...

/*
     * @ModelAttribute用于修饰入参,前台传过来的值自动赋予入参对于的属性
     */
    @RequestMapping("/testModelAttribute5")
    public String testModelAttribute(@ModelAttribute User user) {
        return "modelAttribute";
    }

原文地址:https://www.cnblogs.com/deityjian/p/11494918.html

时间: 2024-10-05 14:23:11

05.SpringMVC之请求映射的相关文章

springMVC(2)请求映射全面分析

在springMVC的控制器中,我们常使用@RequestMapping来完成我们的请求映射,我们可以在类定义上和方法定义上使用注解,其配置的路径将为类中定义的所有方法的父路径,如上篇实例中的/user(类)/hello(方法). 一般的,我们类定义上的路径注解起到命名空间的作用,防止不同方法的路径映射产生冲突,比如我在UserController和ArticleController下都定义了如下的方法: @RequestMapping("list") public void list

springmvc学习(二)——使用RequestMapper请求映射

本次内容是@RequestMapping,后面会有实例代码 Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求在控制器的类定义及方法定义处都可标注@RequestMapping @RequestMapping不仅可以修饰类,还可以修饰方法.类定义处:提供初步的请求映射信息.相对于 WEB 应用的根目录方法处:提供进一步的细分映射信息.相对于类定义处的 URL.若类定义处未标注 @RequestMapping,则方法处标记的 URL 相对于WEB

SpringMVC——请求映射

SpringMVC中,如何处理请求是很重要的任务.请求映射都会使用@RequestMapping标注.其中,类上的标注相当于一个前缀,表示该处理器是处理同一类请求:方法上的标注则更加细化.如,类的标注可能是"user",表示全部都是与用户相关的操作:具体到方法可能有"create""update""delete"等,分别表示对用户进行哪一类操作. package cn.javass.chapter6.web.controlle

【spring springmvc】springmvc使用注解声明控制器与请求映射

目录 概述 壹:注解说明 贰:实现注解声明控制器与请求映射 一:使用controller 二:配置包扫描与视图解析器 1.配置包扫描 2.配置试图解析器 三:配置部署描述符 1.读取spring-mvc.xml文件 2.配置匹配映射 四:建立html文件 叁:配置tomcat 一:配置本地tomcat 二:配置maven内置tomcat 肆:结果及问题 一:tomcat启动示意图: 二:结果 三:问题 伍:结构及源码 一:目录结构 二:源码 作者有话 概述 注解: 在Spring中尽管使用XML

SpringMVC RequestMapping &amp; 请求参数

SpringMVC 概述 Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一 Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架 Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口. 支持 REST 风格的 URL 请求 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性 HelloWorld 步骤: –加入 jar 包 –在 web.xml 中配置

SpringMVC之请求参数的获取方式

转载出处:https://www.toutiao.com/i6510822190219264516/ SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数? 一般最常见的请求为GET和POST,get请求的参数在url上可以获取,post请求参数除了url上还有可能在表单中,文件上传时,获取方式又和一般的参数获取不一样 本篇则主要集中在不同请求方式下,获取参数的使用姿势 首先需要搭建一个后端的请求,为了快速演示 利用spring-boot创建了一个机器简单的工程,依赖版

Spring SpringMVC的请求和响应

一,SpringMVC的数据响应 1.1 数据响应方式 1.2 页面跳转 1.2.1 返回字符串数据 1.2.2 返回ModelAndView 1.3 回写数据 1.3.1 直接回写字符串 1.3.2 会写json格式字符串 1.3.3 返回对象和集合 1.4 总结 二,SpringMVC的请求 2.1 请求参数的类型 2.2 常用的请求参数 2.2.1 获取基本类型参数 2.2.2 获取POJO类型参数 2.2.3 获取数组类型参数 2.2.4 获取集合类型参数 三,常见配置 3.1 静态资源

springMvc REST 请求和响应

前言: 突然怎么也想不起来  springMvc REST 请求的返回  类型了!   (尴尬+究竟)  然后本着 方便的想法 百度了一下 发现了个问题,大家在写      springMvc REST 的文档 和记录或者笔记的时候 . 只写到了 符合 REST 风格的 请求 ,而 响应信息 完全是 传统的 主体数据传递 .然而这并非 REST响应的 风格啊 !!!! 下面把自己整理的笔记发上来 关于MVC REST 请求的方式 格式1 @RequestMapping(value = "{ite

SpringMVC Ajax请求时返回json中文字符串的乱码问题的解决方案

1.org.springframework.http.converter.StringHttpMessageConverter类是处理请求或相应字符串的类,并且默认字符集为ISO-8859-1,所以在当返回json中有中文时会出现乱码. 2.StringHttpMessageConverter的父类里有个List<MediaType> supportedMediaTypes属性,用来存放StringHttpMessageConverter支持需特殊处理的MediaType类型,如果需处理的Me