1. 程式人生 > >SpringMVC相關常用註解

SpringMVC相關常用註解

請求 cto ring use 請求頭 attribute converter and 解析

@Controller:

@Controller 用於標記在一個類上,使用它標記的類就是一個SpringMVC Controller 對象

@RequestMapping:

RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。

列子:@RequestMapping(value = "/testRestPut/{id}", method = RequestMethod.PUT)

RequestMapping註解有六個屬性:

  1、 value

    value:指定請求的實際地址;

2、method;

    method: 指定請求的method類型, GET、POST、PUT、DELETE等

Rest 風格的 URL(以 CRUD 為例):
     *         新增:/order POST
     *         修改:/order/1 PUT
     *         獲取:/order/1 GET
     *         刪除:/order/1 DELETE

3、consumes

    consumes: 指定處理請求的提交內容類型(Content-Type),例如application/json, text/html;

  4、produces

    produces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回;

  5、params

    params: 指定request中必須包含某些參數值是,才讓該方法處理。

  6、headers

    headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。

<!-- xml配置視圖解析器:如何把 handler 方法返回值解析為實際的物理視圖 -->
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <property name="prefix" value="/WEB-INF/views/"></property>
         <property name="suffix" value=".jsp"></property>
     </bean>

@RequestMapping("/helloword/?/aa") 的 Ant 路徑,匹配符:
    ?:匹配文件名的一個字符
    *:匹配文件名的所有字符
     **:匹配多層路徑

@Resource和@Autowired

列子:

 // 下面兩種@Autowired只要使用一種即可
    @Autowired
    private UserDao userDao; // 用於字段上
    
    @Autowired
    public void setUserDao(UserDao userDao) { // 用於屬性的方法上
        this.userDao = userDao;
    }
 // 下面兩種@Resource只要使用一種即可
    @Resource(name="userDao")
    private UserDao userDao; // 用於字段上
    
    @Resource(name="userDao")
    public void setUserDao(UserDao userDao) { // 用於屬性的setter方法上
        this.userDao = userDao;
    }

1、共同點

    兩者都可以寫在字段和setter方法上。兩者如果都寫在字段上,那麽就不需要再寫setter方法。

2、不同點

  (1)@Autowired

    @Autowired為Spring提供的註解,需要導入包org.springframework.beans.factory.annotation.Autowired;只按照byType註入。

(2)@Resource

    @Resource默認按照ByName自動註入,由J2EE提供,需要導入包javax.annotation.Resource。@Resource有兩個重要的屬性:name和type,而Spring將@Resource註解的name屬性解析為bean的名字,而type屬性則解析為bean的類型。

@PathVariable:

用於將請求URL中的模板變量映射到功能處理方法的參數上,即取出uri模板中的變量作為參數。

列子:
@RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET) public String getLogin(@PathVariable("userId") String userId

@CookieValue:

列子:

@RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET)  
     public String getLogin(@PathVariable("userId") String userId

作用:用來獲取Cookie中的值;

  參數: value:參數名稱 required:是否必須 defaultValue:默認值

@RequestParam:

列子:

 @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam("id") int id)

  @RequestParam用於將請求參數區數據映射到功能處理方法的參數上

@SessionAttributes:

列子:

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

@SessionAttributes即將值放到session作用域中,寫在class上面。

@SessionAttributes 除了可以通過屬性名指定需要放到會話中的屬性外(value 屬性值)

@SessionAttributes
      除了可以通過屬性名指定需要放到會話中的屬性外(value 屬性值),
      還可以通過模型屬性的對象類型指定哪些模型屬性需要放到會話中(types 屬性值)。
     註意: 該註解只能放在類的上面,不能放在方法上面

@ModelAttribute:

該Controller的所有方法在調用前,先執行此@ModelAttribute方法,可用於註解和方法參數中,可以把這個@ModelAttribute特性,應用在BaseController當中,所有的Controller繼承BaseController,即可實現在調用Controller時,先執行@ModelAttribute方法。

@ResponseBody 

  作用: 該註解用於將Controller的方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式後,寫入到Response對象的body數據區。

使用時機:返回的數據不是html標簽的頁面,而是其他某種格式的數據時(如json、xml等)使用

SpringMVC相關常用註解