常用注解

常用注解

  1. RequestParam注解

     	1. 作用:
     		1.为处理器的参数指定默认值@RequestParam(defaultValue="0")
     		2.解决处理器的参数名和请求路径的变量名不一致@RequestParam(value="id")
     		3.可以将浏览器请求路径上多个同名的变量赋值到一个集合中:请求名?uid=1&uid=3..
     	2. 属性
     		1. value:请求参数中的名称
     		2. required:请求参数中是否必须提供此参数,默认值是true,必须提供
     		3. 代码如下
     			* 第一个
     				@RequestMapping("a1")
     				public String demo1(@RequestParam(defaultValue="3")int uid) {
     					System.out.println(uid);
     					return "login";
     				}
     			* 第二个
     				@RequestMapping(path="/hello") 
     				public String sayHello(@RequestParam(value="username",required=false)String name) { 
     					System.out.println("aaaa"); 
     					System.out.println(name); 
     					return "success"; 
     				}
     			* 第三个
     				@RequestMapping("a3")
     				public String demo3(@RequestParam("uid") List<Integer> ids) {
     					System.out.println("uid="+ids);
     					return "main";
     				}
     				@RequestMapping("a4")
     				public String demo4(int[] uid) {
     					System.out.println("uid="+Arrays.toString(uid));
     					return "main";
     				}
    
  2. RequestBody注解

     	1. 作用:用于获取请求体的内容(注意:get方法不可以)
     			直接使用得到是 key=value&key=value...结构的数据。
     	2. 属性
     		required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。
     		如果取值为 false,get 请求得到是 null。
     	3. 代码如下
     		@RequestMapping(path="/hello") 
     		public String sayHello(@RequestBody(required=false) String body) { 
     			System.out.println("aaaa"); 
     			System.out.println(body); 
     			return "success"; 
     		}
     	4. 作用到方法上时,表示方法返回的字符串作为http响应内容返回
     		@RequestMapping("r1")//方法返回的字符串作为http响应内容返回
     		@ResponseBody
     		public String demos() {
     			return "<h1>main</h1>";
     		}
    
     		@RequestMapping(value="r1",produces="text/html;charset=UTF-8")
     		public @ResponseBody String testResponse1() {
     			return "<h1>你要干嘛</h1>";
     		}
    
  3. PathVariable注解

     	1.作用:
     		用于绑定 url 中的占位符。例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符。
     		url支持占位符是spring3.0之后加入的。是springmvc支持rest风格 URL 的一个重要标志。
     	2.属性:
     		value:用于指定 url 中占位符名称。
     		required:是否必须提供占位符。
     	3. Restful风格的URL
     		1. 请求路径一样,可以根据不同的请求方式去执行后台的不同方法
     		2. restful风格的URL优点
     			1. 结构清晰
     			2. 符合标准
     			3. 易于理解
     			4. 扩展方便
     	4. 代码如下
     		<a href="user/hello/1">入门案例</a> 
    
     		@RequestMapping(path="hello/{sid}") 
     		public String sayHello(@PathVariable(value="sid") String id) 
     		{ 
     			System.out.println(id); //1
     			return "success"; 
     		}
    
  4. RequestHeader注解

     	1. 作用:获取指定请求头的值
     	2. 属性
     		1. value:请求头的名称
     		2. required:是否必须有此消息头
     	3. 代码如下
     		@RequestMapping(path="/hello") 
     		public String sayHello(@RequestHeader(value="Accept-Language",required=false) String header) { 
     			System.out.println(header); 
     			return "success"; 
     		}
    
  5. CookieValue注解

     	1. 作用:用于获取指定cookie的名称的值
     	2. 属性
     		1. value:cookie的名称
     		2. required:是否必须有此 cookie。
     	3. 代码
     		@RequestMapping(path="/hello") 
     		public String sayHello(@CookieValue(value="JSESSIONID") String cookieValue) 
     		{ 
     			System.out.println(cookieValue); 
     			return "success"; 
     		}
    
  6. ModelAttribute注解

     	1. 作用
     		1. 出现在方法上:表示当前方法会在控制器方法执行前线执行。
     		    它可以修饰没有返回值的方法,
     		    也可以修饰有具体返回值的方法。
     		    	注意:该方法可以有返回值,同时在当前请求中可以获得该返回值,默认返回值对应的变量名为类型首字母小写作为变量名,也可以自己手动指定变量名,例如@ModelAttribute("msg")则变量名为msg.
     		2. 出现在参数上:获取指定的数据给参数赋值。或者是将变量绑定到model里,等价于m.addAttribute("id", id);
     			  注意:
     				语法:@ModelAttribute("变量名a") 非自定义类型 变量名a
     					  @ModelAttribute("任意定义")  自定义类型 变量名a ,("任意定义")也可以省略不写,默认变量名为自定义类型首字母小写
     	2. 属性:
     		value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 结构的 key。
     	3. 应用场景
     		1. 当提交表单数据不是完整的实体数据时,保证没有提交的字段使用数据库原来的数据。
     	4. 具体的代码
     		1. 修饰的方法有返回值
     			/**
     			* 作用在方法,先执行 
     			* @param name 
     			* @return 
     			*/
     			@ModelAttribute 
     			public User showUser(String name) {
     				System.out.println("showUser执行了..."); 
     				// 模拟从数据库中查询对象 
     				User user = new User(); 
     				user.setName("哈哈"); 
     				user.setPassword("123"); 
     				user.setMoney(100d); 
     				return user; 
     			}
     			/**
     			* 修改用户的方法 
     			* @param cookieValue 
     			* @return 
     			*/ 
     			@RequestMapping(path="/updateUser") 
     			public String updateUser(User user) 
     			{ 
     				System.out.println(user); 
     				return "success"; 
     			}
    
     			案例二:
     				@ModelAttribute("msg")
     				public String an8(Model m,@ModelAttribute User u) {
     					System.out.println("处理器在执行之前都会执行该方法");
     					return "main";
     				}
     		2. 修饰的方法没有返回值
     			/**
     			* 作用在方法,先执行 
     			* @param name 
     			* @return 
     			*/ 
     			@ModelAttribute 
     			public void showUser(String name,Map<String, User> map) {
     				System.out.println("showUser执行了..."); 
     				// 模拟从数据库中查询对象 
     				User user = new User(); 
     				user.setName("哈哈"); 
     				user.setPassword("123"); 
     				user.setMoney(100d); 
     				map.put("abc", user); 
     			}
    
     			/**
     			* 修改用户的方法 
     			* @param cookieValue 
     			* @return 
     			*/
     			@RequestMapping(path="/updateUser") 
     			public String updateUser(@ModelAttribute(value="abc") User user) { 
     				System.out.println(user); 
     				return "success"; 
     			}
     		3. 修饰参数
     			http://localhost:8080/springmvc_day01/an7?uname=joy
    
     			@RequestMapping("an7")
     			public String an7(Model m,@ModelAttribute User u) {
     				//@ModelAttribute 等价于 m.addAttribute("user", u);
     				return "login";
     			}
    
  7. SessionAttributes注解

     	1. 作用:用于多次执行控制器方法间的参数共享
     	2. 属性
     		1. value:指定存入属性的名称
     		2. type:用于指定存入的数据类型。
     	3. 代码如下
     		@Controller 
     		@RequestMapping(path="/user") 
     		@SessionAttributes(value= {"username","password","age","b"},types= {String.class,Integer.class}) // 把数据存入到session域对象中 
     		public class HelloController { 
    
     			/**
     		     * 向session中存入值
     		     * @return
     		     */
     			@RequestMapping(path="/save") 
     			public String save(Model model) { 
     				System.out.println("向session域中保存数据"); 
     				// 底层会存储到request域对象中
     				model.addAttribute("username", "root"); 
     				model.addAttribute("password", "123"); 
     				model.addAttribute("age", 20); 
     				map.put("b", "eee");
     				return "success"; 
     			}
    
     			    /**
     			     * 获取值
     			     * @param modelMap
     			     * @return
     			     */
     			@RequestMapping(path="/find") 
     			public String find(ModelMap modelMap) { 
     				String username = (String) modelMap.get("username"); 
     				String password = (String) modelMap.get("password"); 
     				Integer age = (Integer) modelMap.get("age"); 
     				System.out.println(username + " : "+password +" : "+age); 
     				return "success"; 
     			}
    
     			   /**
     			     * 清除
     			     * @param status
     			     * @return
     			     */
     			@RequestMapping(path="/delete") 
     			public String delete(SessionStatus status) {
     				status.setComplete(); 
     				return "success"; 
     			} 
     		}
     8. RequestMapping 注解
     	* 作用:
     		用于建立请求 URL 和处理请求方法之间的对应关系。
     	* 属性:
     		// 控制器类
     		@Controller
     		@RequestMapping(path="/user")
     		public class HelloController {
    
     		    /**
     		     * RequestMapping注解
     		     * @return
     		     */
     		    @RequestMapping(value="/testRequestMapping",params = {"username=heihei"},headers = {"Accept"})
     		    public String testRequestMapping(){
     		        System.out.println("测试RequestMapping注解...");
     		        return "success";
     		    }
     		}
     		<!-- a链接发送的是 get方式 -->
     		<a href="user/testRequestMapping?username=heihei">RequestMapping注解</a>
    
     		value:用于指定请求的 URL。它和 path 属性的作用是一样的。
     		method:用于指定请求的方式。eg: method= {RequestMethod.POST}
     		params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 
     				value 必须和配置的一模一样。
     			例如:
     				params = {"accountName"},表示请求参数必须有 accountName
     				params = {"moeny!100"},表示请求参数中 money 不能是 100。
     				params = {"moeny>100"},表示请求参数中 money 大于 100。
     		headers:用于指定限制请求消息头的条件。
    
     		注意:
     			1.以上四个属性只要出现 2 个或以上时,他们的关系是与的关系。
     			2.若类上还有方法上都有该注解,同时注解里的请求名都省略,这时称该方法为一个默认请求的方法
     			即在访问http://localhost:8080/springmvc01/时默认优先访问静态欢迎页,
     			若没有静态欢迎页则访问后台的默认请求。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值