SpringMVC常用的注解

Ⅰ、关于映射的注解

映射的概念

我对映射的理解:映射就是路径和接口的对应关系。一个相对路径,通过注解形式加在接口上,前端去请求这个地址,就相当于调用了相应的接口。

以下面controller代码为例,前端想请求Controller执行studentLogin方法去处理某些数据,那么在表单的提交地址中写上@PostMapping注解中的值就行了

    @PostMapping("check")
    public ModelAndView studentLogin(Student student){
        ...
    }

前端:

<form method="post" action="/login/check">
    ...
</form>

映射常用的三个注解

  • @RequestMapping

    • @PostMapping:请求方式为post时用

      @PostMapping("test")
      

      其作用相当于

      @RequestMapping(value = "test",method = RequestMethod.POST)
      
    • @GetMapping:请求方式为get时用

      @GetMapping("test2")
      

      其作用相当于

      @RequestMapping(value = "test2",method = RequestMethod.GET)
      

Ⅱ、其它注解

1.作用在参数上

①RequestParam

作用:建立参数名和前端页面中的name值之间的关系

当前端页面中的name值与controller中对应方法的参数名一样时,@RequestParam是可以不用的

例如

public void Xxx(@RequestParam("sname") String studentName){...};

前端

学生名:<input type="text" name="sname">

在这个例子中,如果不加@RequestParam("sname")注解,那么studentName参数无法接收sname的值,只能为null

//表单中的name值为uage,不一定要求必须传入这个数据,默认值为23
@RequestParam(value="uage",required=false,defaultValue="23")

②RequestHeader

获取请求头信息

public String  testRequestHeader(@RequestHeader("Accept-Language") String al)

获取请求头中的Accept-Language值,并将值保存再al变量中

③CookieValue

获取Cookie中的值,并将值保存再变量中

public void Xxx(@CookieValue("JSESSIONID") String jsessionid){...}

把cookie中的JSESSIONID保存在变量jsessionid中

④RequestBody

作用在形参列表上,用于将前台发送过来固定格式的数据(xml格式或者json等)封装为对应的JavaBean对象

public LoginResponse login(@RequestBody LoginForm loginForm, HttpServletRequest request, HttpServletResponse response)

2.作用在类或者方法上

①ResponseBody

把Java对象转换成json格式的数据,并写入到response对象的body区,返回前端。一般在AJAX(异步获取数据)时用

哪个页面调用了@ResponseBody注解的接口,那么接口返回的json数据就会返回给哪个页面(谁请求就还给谁)

此时的返回不是一个 View页面,而是一个ajax调用的返回值(Json数组)

@ResponseBody
public Student Xxx(...){...}

②RestController

作用相当于ResponseBody+Controller

③ModelAttribute

作用在方法上

在任何一次请求前,都会先执行@ModelAttribute修饰的方法

④SessionAttributes

处理模型数据:ModelAndView、ModelMap、Map、Model

用法:

public String testModel(Model model|Map<String,Object> m) {
    m.put(x,"..");
}

相当于把数据放入了request中

如何把这些数据放入session中?

  • 使用@SessionAttributes(..)注解

    @SessionAttributes("student")
    public class LoginController{...}
    

    相当于把这个controller中通过上述方法放在session中,这个session对象的名字是student

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。