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;
}