SpringMVC之RequestMapping注解

一 RequestMapping注解的源码

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
	String name() default "";
	@AliasFor("path")
	String[] value() default {};	
	@AliasFor("value")
	String[] path() default {};	
	RequestMethod[] method() default {};	
	String[] params() default {};	
	String[] headers() default {};	
	String[] consumes() default {};	
	String[] produces() default {};
}

二 RequestMapping注解的作用

用于建立请求 URL 和处理请求方法之间的对应关系。

三 RequestMapping注解可以出现的位置

1. 类上
请求 URL 的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/开头。它出现的目的是为了使我们的 URL 可以按照模块化管理,例如:
账户模块:
/account/add
/account/update
/account/delete
...
订单模块:
/order/add
/order/update
/order/delete
红色的部分就是把 RequsetMappding 写在类上,使我们的 URL 更加精细。
2. 方法上
请求 URL 的第二级访问目录。

四 RequestMapping注解的属性

1. value:用于指定请求的 URL。它和 path 属性的作用是一样的。
2. method:用于指定请求的方式,如果我们写method={RequestMethod.POST},那么就不能接收GET请求了。
3. params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和配置的一模一样。
例如:
params = {"username"},表示请求参数必须有username
params = {"username"="zhangsan"},表示请求参数必须有username,且username的值必须是zhangsan
params = {"moeny!100"},表示请求参数中 money 不能是 100。
4. headers:用于指定限制请求消息头的条件。
注意:
以上四个属性只要出现 2 个或以上时,他们的关系是与的关系。

五 案例

package cn.itcast.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(path="/user")
public class UserController {

    /**
     * 用户登录
     * 访问路径:/user/login
     * 请求方式:必须是GET请求
     * 请求参数:请求参数必须有username
     * 请求头:请求头中必须有Accept
     * @return
     */
    @RequestMapping(value = "/login",method =RequestMethod.GET,params = {"username"},headers = {"Accept"})
    public String login(){
        System.out.println("登录页面");
        return "login";
    }

    /**
     * 用户注册
     * @return
     */
    @RequestMapping(path = "/register")
    public String register(){
        System.out.println("注册界面");
        return "register";
    }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值