天天看點

mvc 注解相應配置

SpringMvc相應注解配置

@RequestParam
        參數注解
     @RequestHeader
         請求頭注解
     @CookieValue
         Cookie注解           

注解的好處是什麼:

隻要你寫上相應的注解他就會給你得到相應的參數、減少了一些繁雜的操作           
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.net.ssl.HostnameVerifier;
import javax.servlet.http.Cookie;

@Controller
//所明這個類是控制器 要想管理servlet就得将他們集中起來進行統一的管理

@RequestMapping("/mm")
//@RequestMapping 請求注解 也可以寫在類上 相當于一個虛拟夾子 也可以當做加一個父路徑

public class Action {
    private String key;

    @RequestMapping(value = "/hehe", method = RequestMethod.POST, params = {"name", "a=10"})
    // 可以選擇同一個url也就是value 不同的請求方式的方法 好處根據你的請求方式選擇參數
    // params 根據參數确定方法
    //method 此參數是請求方式的選擇
    public void Method(String uname, String password) {
        //需要表單參數可以直接在方法參數上寫參數名他會自動幫你獲得
        // 不用從請求頭上面獲得了 友善了不少
    }

    @RequestMapping("/H1")
    public void Method1(@RequestParam(value = "H1", required = false, defaultValue = "小明") String name) {
        //@RequestParam
        // value 參數重命名 可以幫你獲得裡面的值
        // required 必填選擇預設必填 false表示不用必填
        //defaultValue 表示預設值 你要是不填我就按這個填寫
    }

    @RequestMapping("/H2")
    public void Method2(@RequestHeader(value = "key", required = true, defaultValue = "") String Key) {
        //@RequestHeader
        // value 參數重命名 可以幫你獲得裡面的值
        // required 必填選擇預設必填 false表示不用必填
        //defaultValue 表示預設值 你要是不填我就按這個填寫
    }

    @RequestMapping("H3")
    public void Method3(@CookieValue(value = "JSESSIONID") String json) {
        // @CookieValue
        // value 參數重命名 可以幫你獲得裡面的值
        // required 必填選擇預設必填 false表示不用必填
        //defaultValue 表示預設值 你要是不填我就按這個填寫
        //好處可以幫你拿到cookie 因為cookie的拿取  和指派的操作是真的麻煩

    }
    
}           

@RequestBody 注解 接收請求的内容體 例如json、txt、xml等

public void aVoid(@RequestBody String body) {
       //尼瑪 這個注解 隻能這樣接受String body
       // 可以用來接受 json、txt、xml等格式
       //主要用法還是用來接收 json 将json一口氣讀上來
       System.out.println(body);
   }
           

mvc中的用對象來接收資料

@RequestMapping(value = "/HH",method = RequestMethod.POST)
    public void Method(Stu stu) {
        //注意 他隻接受對應着這個對象的值
        System.out.println(stu.getAddress());
        System.out.println(stu.getName());
    }           

@RequestAttribute 标記 相當于request.setAttribute("a","A");//生命周期短

@ModelAttribute 标記在所有 方法之前執行 永遠是這個标記下的方法最先執行

在其他方法中取值 @ModelAttribute("address") 在方法中說明注解及請求參數名稱即可

public void m1(Model model) {
        model.addAttribute("address","上海");//可以帶參到請求頭
        System.out.println(1111);
    }           

Model&Map 參數 MVC會自動把你的Model中的資料預設存儲在request對象中(用add的方法添加即可,他會自動将參數帶入請求頭當中)

@SessionAttributes 注解 (檢索Model和Map的資料是否要存儲在Session中)全Action都有效果

names 名字(Model和Map中如果有這個屬性自動塞入到session中)

types 類型(Model和Map中如果有這個類自動塞入 session中)

@SessionAttribute 在方法屬性中聲明此注解

在session中幫我取一個值 required必填項 、 name和value表示名字

傳回參數都會包裝成ModelAndView對象 可以設定跳轉的頁面 可以将資料帶入請求頭 帶值到跳轉頁面(轉發形式的)

public ModelAndView A(ModelAndView modelAndView/*這裡的對象Spring會幫我們建立好*/) {
        //ModelAndView modelAndView=new ModelAndView(); 當然你也可以自己選擇new對象
        modelAndView.addObject("name", "小紅");//轉發所帶的值
        modelAndView.setViewName("aa");//跳轉頁面
        return modelAndView;//執行将對象傳回出去 他就會按照你的參數進行跳轉
    }           

傳回json資料 因為有些需求是需要 将值進行運算後 傳回json資料的

1.添加處理jsonjar包、版本可以自己選

com.fasterxml.jackson.core

jackson-databind

2.9.4

2.在spring xml中支援 mvc的注解

mvc:annotation-driven>

3.然後把 @RsponseBody

可以寫在方法傳回值及方法上

也可以直接在類上寫 @RestController(寫在類上這個類的傳回值都是json資料)

@Controller @ResponseBody 寫這兩個和前面意思一樣 都是這個類傳回值都是json資料

接受JSON資料可以使用 @RequestBody進行注解(寫在屬性上面)

public @ResponseBody Stu A(Stu stu) {
        //可以将對象包裝成json傳回出去,對象的建立與傳回 都有spring幫你完成
        stu.setAddress("北京");
        stu.setName("小明");
        return stu;
    }
    @RequestMapping("/execute")
    //這裡是響應頭
    public @ResponseBody HashMap execute10() {
        //傳回鍵值對集合、可以嵌套包裝成json傳回
        HashMap hashMap = new HashMap();
        hashMap.put("name", "熬夜那不要怕多喝點花茶");
        hashMap.put("address","這樣猝死會比較香");
        HashMap hashMap1 = new HashMap();
        hashMap1.put("名言",hashMap);
        return hashMap1;
    }