@RequestMapping、@RequestBody、@ResponseBody、@RequestParam注解用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fangxinde/article/details/71191422

一、@RequestMapping的使用
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示访问类中所有方法的请求都以此注解中地址值为父路径。 用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法。

//RequestMapping处在类的上面,访问类中所有方法的请求有都已此路径(/springmvc)为父路径,
//此案例的访问路径为:/springmvc/testRequestMapping
@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest { 
    @RequestMapping("/testRequestMapping")
    public String testRequestMapping() {
        System.out.println("testRequestMapping");
        return SUCCESS;
    }
}

测试页面:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <!-- 请求路径为:对应修饰类的@RequestMapping中属性值springmvc和修饰方法的@RequestMapping中属性值testRequestMapping-->
    <a href="springmvc/testRequestMapping">Test RequestMapping</a>
</body>
</html>

运行jsp,点击超链接【Test RequestMapping】,能访问testRequestMapping()方法

二、@RequestBody和@ResponseBody使用
平时前后端进行交互时,数据格式通常采用json格式。
1.@RequestBody修饰类中方法某个形参,表示此参数接收请求中请求体,且请求体只能以json格式传输,并能将json数据转化为对应的java对象上
2.@ResponseBody注解通常修饰一个方法,将方法中返回的对象转化为json格式写入HTTP响应正文中,传递到前端。通常使用在 @RequestMapping 后,返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。

后端保存数据的bean类

package com.atguigu.springmvc.entities;

public class User {
    private String username;
    private String password;
    private String email;
    private int age;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    } 
}

后端的Controller层

1.方法中形参user被@RequestBody修饰作用:
表示方法只接受请求体为json格式的数据,并把json数据转换为User类型的实例
2.方法先后被@RequestMapping("/testRequestBody")、@ResponseBody修饰作用:
方法中返回的集合map不会被解析为跳转路径,转化成json格式存放于响应体中,传递到前端
 。

@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest { 
    //测试RequestBody
    @RequestMapping("/testRequestBody")
    @ResponseBody
    public Map testRequestBody(@RequestBody User  user){
        Map<String, Object> map =new HashMap<String, Object>();
        map.put("string", "string");
        map.put("user", user);
        return map;
    }
}

前端进行请求,访问具体的方法
请求体的数据格式为json
这里写图片描述

后端响应的结果:将map集合转为json格式传递到前端
这里写图片描述

三、@RequestParam注解的使用
@RequestParam注解修饰方法中形参,获取请求中特定的请求参数值并赋值给形参,同时可以对特定的请求参数进行验证、设置默认值等等
本案例中请求url为 springmvc/testRequestParam?username=fangfei&age
@RequestParam(value=”username”) String un:表示形参un获取请求参数username值 fangfei
@RequestParam(value=”age”, required=false,defaultValue=”3000”) int age
请求体中请求参数age没有值,@RequestParam设置age的默认值为3000,并赋给形参age

@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest { 
    @RequestMapping(value="/testRequestParam")
        public String testRequestParam(@RequestParam(value="username") String un,@RequestParam(value="age", required=false,defaultValue="3000") int age){
            System.out.println("testRequestparam,username:"+un+",age:"+age);
            return SUCCESS;
        }
    }

编制测试jsp文件:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <p>注释@RequestParam映射的使用</p>
    <!-- 请求参数username有值,age无值-->
    <a href="springmvc/testRequestParam?username=fangfei&age">Test RequestParam</a>
</body>
</html>

运行此jsp文件,点击超链接,控制台运行结果为:
testRequestparam,username:fangfei,age:3000

猜你喜欢

转载自blog.csdn.net/fangxinde/article/details/71191422