欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring MVC的常用注解

程序员文章站 2023-11-03 13:55:15
一、Controller注解 二、RestController注解 三、RequestMapping注解 四、PathVariable注解 五、RequestParam注解 六、文件上传 ......

spring boot 默认集成了spring mvc,下面为spring mvc一些常用注解。

开发环境:intellij idea 2019.2.2
spring boot版本:2.1.8

新建一个名称为demo的spring boot项目。

一、controller注解

controller注解用于修饰java类,被修饰的类充当mvc中的控制器角色。
controller注解使用了@component修饰,使用controller注解修饰的类,会被@componentscan检测,并且会作为spring的bean被放到容器
中。

package com.example.demo;

import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.responsebody;

@controller
public class democontroller {

    @requestmapping("/index")
    @responsebody
    public string index(){
        return "index";
    }
}

运行项目后,浏览器访问:http://localhost:8080/index,页面显示:
index

二、restcontroller注解

restcontroller注解是为了更方便使用@controller和@responsebody。
@responsebody修饰控制器方法,方法的返回值将会被写到http的响应体中,所返回的内容不放到模型中,也不会被解释为视图的名称。
下面例子等同于上面例子。

package com.example.demo;

import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.restcontroller;

@restcontroller
public class democontroller {

    @requestmapping("/index")
    public string index(){
        return "index";
    }
}

三、requestmapping注解

requestmapping注解可修饰类或方法,主要用于映射请求与处理方法。
当用于修饰类并设置了url时,表示为各个请求设置了url前缀。
requestmapping注解主要有以下属性:
(1)path与value:用于配置映射的url;
(2)method:映射的http方法,如get、post、put、delete;
也可以使用默认配置了@requestmapping的method属性的几个注解:
@getmapping等同于requestmapping(method="requestmethod.get")
@postmapping、@putmapping、@deletemapping类似。
(3)params:为映射的请求配置参数标识;
(4)consumes:配置请求的数据类型,如xml或json等;
(5)produces:配置响应的数据类型,如“application/json”返回json数据;

package com.example.demo;

import org.springframework.web.bind.annotation.getmapping;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.requestmethod;
import org.springframework.web.bind.annotation.restcontroller;

@restcontroller
@requestmapping("/oa")
public class democontroller {

    @requestmapping(value = "/index1")
    public string index1(){
        return "index1";
    }

    @requestmapping(value = "/index2", method = requestmethod.get)
    public string index2(){
        return "index2";
    }

    @getmapping(value = "/index3")
    public string index3(){
        return "index3";
    }
}

浏览器分别访问:
http://localhost:8080/oa/index1
http://localhost:8080/oa/index2
http://localhost:8080/oa/index3
页面分别显示:
index1
index2
index3

四、pathvariable注解

pathvariable注解主要用于修饰方法参数,表示该方法参数是请求url的变量。

package com.example.demo;

import org.springframework.web.bind.annotation.getmapping;
import org.springframework.web.bind.annotation.pathvariable;
import org.springframework.web.bind.annotation.restcontroller;

@restcontroller
public class democontroller {

    @getmapping("/index1/{name}")
    public string index1(@pathvariable string name){
        return "index1: " + name;
    }

    //可以为@pathvariable配置属性值,显式绑定方法参数与url变量的值
    @getmapping("/index2/{name}")
    public string index2(@pathvariable("name") string lc){
        return "index2: " + lc;
    }
}

浏览器访问http://localhost:8080/index1/a
页面显示:
a
访问http://localhost:8080/index1/b
页面显示:
b

五、requestparam注解

requestparam注解用于获取请求体中的请求参数,如表单提交后获取页面控件name值。

package com.example.demo;

import org.springframework.web.bind.annotation.postmapping;
import org.springframework.web.bind.annotation.requestparam;
import org.springframework.web.bind.annotation.restcontroller;

import java.util.map;

@restcontroller
public class democontroller {

    @postmapping("/index1")
    public string index1(@requestparam string username){
        return username;
    }

    //map存放所有请求参数
    @postmapping("/index2")
    public string index2(@requestparam map<string,string> map){
        string age = map.get("age");
        string sex = map.get("sex");
        return age + "," + sex;
    }
}

随便在电脑中如桌面新建一个html文件:

<html>
<body>
  <form method="post" action="http://localhost:8080/index1">
    <input type="text" name="username" value="abc" />    
    <input type="submit" value="提交1" />
  </form>
  <form method="post" action="http://localhost:8080/index2">
    <input type="text" name="age" value="22" />
    <input type="password" name="sex" value="male" />    
    <input type="submit" value="提交2" />
  </form>
</body>
</html>

浏览器打开后,如果点击“提交1”按钮后,页面跳到http://localhost:8080/index1,显示abc。
如果点击“提交2”按钮后,页面跳到http://localhost:8080/index2,显示22,male。

六、文件上传

使用requestparam注解可以实现文件上传。

package com.example.demo;

import org.springframework.web.bind.annotation.postmapping;
import org.springframework.web.bind.annotation.requestparam;
import org.springframework.web.bind.annotation.restcontroller;
import org.springframework.web.multipart.multipartfile;

import java.io.file;
import java.io.ioexception;

@restcontroller
public class democontroller {

    @postmapping("/upload")
    public string upload(@requestparam("file") multipartfile file) throws ioexception {
        string filename = file.getoriginalfilename();
        string filepath = "d:/";
        file dest = new file(filepath + filename);
        file.transferto(dest);
        return "上传成功";
    }

}

随便新建一个html文件

<html>
<body>
  <form method="post" action="http://localhost:8080/upload" enctype="multipart/form-data">
    <input type="file" name="file" />    
    <input type="submit" value="提交" />
  </form>  
</body>
</html>

浏览器打开后,选择一个文件,点击提交后,文件保存到了d盘。