springmvc的常用注解

1.@RequestParam

      1.作用在方法传递的参数前,用于接收所传参数(是springmvc中接受普通参数的注解)

      2.属性 :value 请求参数中的名称

                     required:请求参数中是否提供此参数,默认为true

                    defaultValue:指定参数的默认值

 @RequestMapping("/user")
 @Controller
 public class QuickController {
     @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam("username")String username,@RequestParam(value = "age",required = false,defaultValue = "0")Integer age){
        System.out.println(username +",,," + age);
        return "index";
    }
 }
 <form action="user/testRequestParam" method="post">
      姓名:<input type="text" name="username"><br>
      年龄:<input type="text" name="age"><br>
      <input type="submit" value="testRequestParam">

  </form>

输入姓名和年龄 控制台会得到所输入的姓名和年龄

 

 

2.@Controller

     1.@Controller用于标记一个类,使用它标记的类就是一个springmvc Controller对象,即一个控  制器类 。Spring使用扫描机制查找所有基于注解的控制器类。它通常是和基于注解@RequestMapping的方法结合使用的。

    2.该注解有个默认方法,返回类型为String类型 value的默认值为空

package org.springframework.stereotype;

@java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Documented
@org.springframework.stereotype.Component
public @interface Controller {
    @org.springframework.core.annotation.AliasFor(annotation = org.springframework.stereotype.Component.class)
    java.lang.String value() default "";
}

3.@RequestMapping

     1.在springmvc中使用@RequestMapping来映射请求,也是通过它来指定控制器可以处理哪些URL请求。相当servlet中在web.xml的配置

     2.@RequestMapping有六个属性,一般在项目中常用的有三个属性:value,method,produces

         value:指定请求的实际地址

         method:指定类型的请求,主要有GET,POST,PUT,DELETE,默认为GET

         produces:指定返回内容类型 produces="application/json;charset=UTF-8"

@RequestMapping(value = "/user",produces="application/json;charset=UTF-8")
@Controller
public class QuickController {
     @RequestMapping(value = "/testPost",method = RequestMethod.POST)
    public String testPost(){
        System.out.println("quickMethod running.....");
        return "index";
    }
}
<form action="user/testPost" method="post">
  <input type="submit" value="testPost">
</form>

4.@SessionAttributes

   1.可以让参数在多个请求间共享,配置需要在session中存放数据范围,@SessionAttributes只能使用在类定义上。

      2.

@SessionAttributes(value = {"user"},types = {String.class})

会将model中属性名为user以及类型为String的属性添加到会话中。

@SessionAttributes(value = {"user"},types = {String.class})
@RequestMapping("/user")
@Controller
public class QuickController {
    @RequestMapping("/testSessionAttribute")
   public String testSessionAttribute(Map<String,Object> map){
        User user = new User();
        user.setName("LBJ");
        user.setAge(37);
       Car car = new Car();
       car.setKind("aodi");
       user.setCar(car);
       map.put("user",user);
       map.put("a","wc");
       map.put("inter",new Integer(12));
       return "index";
   }
}

 

<a href="user/testSessionAttribute">testSessionAttribute</a>
request:${requestScope.user};${requestScope.a};${requestScope.inter}
<br>
session:${sessionScope.user};${sessionScope.a};${sessionScope.inter}

很明显 session没有拿到12这个值

 

5.@ModelAttribute

     1.@ModelAttribute可以用于修饰方法和参数

       用在方法上:被@ModelAttribute注释的方法会在此controller的每个方法执行前执行,可以修饰没有返回值的方法,也可修饰有具体返回值的方法。

       用在参数上:会将客户端传递来的参数按名称注入到指定对象中

应用场景:当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。

@RequestMapping("/user")
@Controller
public class QuickController {
    @RequestMapping("/testModuleAttribute")
    public String testModuleAttribute(User user){
        System.out.println(user);
        return "index";

   }
<form action="user/testModuleAttribute" method="post">
    <input type="text" name="name">
    <input type="submit" value="testModuleAttribute">
  </form>

此时我们只能得到名字

当我们加上@ModelAttribute

 @ModelAttribute
    public void test(Map<String,User> map){
        System.out.println("1111");
        User user = new User();
        user.setName("Gurry");
        user.setAge(31);
        map.put("user",user);

   }

 输入名字的同时 可以得到名字和年龄

 

6.@PathVariable

   1.通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中:URL中的{xxx}占位符可以通过@PathVariable("xxx")绑定到方法入参中

       2.@PathVariable可以接收多个参数但是无法接收对象

@RequestMapping("/user")
@Controller
public class QuickController {
     @RequestMapping(value = "/testPathVariable/{id}")
    public String testPathVariable(@PathVariable("id") Integer id){
        System.out.println("testPathVariable running....." + id);
        return "index";
    }
}

 

<a href="user/testPathVariable/12">testPathVariable</a>

 

7.@ResponseBody  

     1.@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入response对象的body区,通常返回JSON数据或者XML数据,使用此注解不会再走视图处理器。

 不加@ResponseBody注解 返回字符串需要response.getWriter.write();

 @RequestMapping("/testString")
    public void testString(HttpServletResponse response){
        try {
            response.getWriter().print("hello");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

加入@ResponseBody注解之后

 @RequestMapping("/testResponsebody")
    @ResponseBody
    public String testResponsebody(){
       return "abcdefg";
    }

 8.@RequestHeader

        1.@RequestHeader注解用于获取请求消息头

        2.属性 value:提供消息头名称 参数值为String类型  

                   required : 是否必须有消息头,默认值为true

                  defaultValue:请求头变量绑定失败时的默认值

 @RequestMapping("/testHead")
    public String testHead(@RequestHeader(value = "Accept") String myHeader){
        System.out.println("testHead");
        System.out.println(myHeader);

        return "index";
    }

 

 <a href="user/testHead">testHead</a>

 部署成功,控制台获取了请求头的值

 

 

 

 

 

 

 

 

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值