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