您的位置:首页 > 编程语言 > Java开发

SpringMVC4.3x教程之二常用注解说明

2017-08-02 08:49 357 查看
在使用SpringMVC的时候就少不了注解的存在,来看看常用的注解有哪些,分别有什么样的作用?

1、@Controller—bean:显示层的控制器

控制器类的标记

内部可以出现映射方法

@Component------bean:普通类
@Repository-----bean:持久层的类---操作数据库
@Service--------bean:业务逻辑层---service

2、@RequestMapping
该方法或类对应的请求路径
常用属性:
1、value:请求的路径名称
2、method:请求方式,默认都支持,可以单独指明,RequestMethod枚举中的值
3、headers:请求参数信息,设置当前请求该方法必须包含的消息头
4、consumes:设置响应内容的MIME类型,其实就是Content-Type
5、params:设置必须包含的参数
6、produces:标记请求内容的类型,也就是消息头:Accept必须包含
7、name:别名
8、path:路径,等价于value
3、@PathVariable
动态路径,根据当前的请求来发起对应的映射方法的调用
结合视图名称拦截器使用(标记前后缀)

4、属性注入
@Autowired根据数据类型注入
@Qualifier根据IOC的id和name注入,不可单独使用,必须跟在@Autowired之后
@Resource根据IOC的id或name注入,也可以直接根据数据类型进行注入

5、@RequestParam
设置请求参数的信息
常用属性:
1、name:参数名称
2、required:是否必须
3、defaultValue:默认值,只要设置了那么参数就可以不用传递
6、@RequestHeader
设置请求消息头
常用属性:
1、name:消息头key名称
2、required:是否必须
3、defaultValue:默认值,只要设置了那么消息头key就可以不用传递
7、@ModelAttribute
设置Model中的数据
用法:
1、修饰方法
使用在方法上,当前的控制器类中所有的映射方法执行之前,先执行该方法
1、方法无返回值:方法一定有参数Model
通过model设置属性内容
2、方法有返回值
这个返回值会默认添加到Model中
2、修饰参数
修饰映射方法的形式参数,可以从Model获取数据
要求:
1、类型需要一致
2、需要指明哪一个key
8、@SessionAttributes
为HttpSession添加数据,主要用在类上
一般只是标记key,通过Model赋值
只要当前方法执行完后(视图渲染)才会将数据添加到HttpSession中
常用属性:
names:HttpSession中的key
一般配合@ModelAttribute使用
@SessionAttribute主要用来方法的参数上,用于获取指定key的值
SessionStatus:清空@SessionAttributes对应的map集合
常用方法setComplete:清空对应的map集合

HttpSession的removeAttribute和SessionStatus的setCompelete的区别?
removeAttribute:移除的是HttpSession内部Map集合的元素
setCompelete:清空@SessionAttributes对应的Map集合

9、@CookieValue
获取Cookie中的值
常用属性:
name:cookie的key


@Controller
public class TestController {

//修饰方法第一种:无返回值
@ModelAttribute
public void pre(Model model){
model.addAttribute("content", "下课");
}
//修饰方法第二种:有返回值
@ModelAttribute("food")
public String pre1(){
return "西瓜";
}

//设置请求参数信息注解
@RequestMapping(value="/getTime")
public String test1(@RequestParam(name="id",required=true) String id, Model model){
System.out.println("id="+id);
model.addAttribute("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis())));
return "study1";
}
@RequestMapping("/getMsg")
public String test2(@RequestHeader(name="Cookie",required=true)String cookie,Model model,@ModelAttribute(name="food")String food){
System.out.println("你喜欢:"+food);
model.addAttribute("msg", "有点小困");
return "study1";
}
}


@Controller
@SessionAttributes(names={"name"})
public class TestController2 {

@ModelAttribute("name")
public String test2(Model model){
model.addAttribute("test", "测试");
return "zhangsan";
}
@RequestMapping("/add")
public String test1(@SessionAttribute(name="name") String n,@ModelAttribute(name="name") String n1,HttpSession session){
System.out.println("model:"+n1);
System.out.println("session:"+n);
System.out.println("第一次:"+session.getId());
return "redirect:getSession";//转发
}
//获取Session中的内容
@RequestMapping("/getSession")
public String test1(HttpSession session,SessionStatus status){

//status.setComplete();//清除了@SessionAttributes设置的内容
System.out.println("第二次:"+session.getId());
session.setAttribute("pass", "654321");
//session.removeAttribute("name");
System.out.println("HttpSession:"+session.getAttribute("name"));
return "study2";
}
//获取Cookie的第一种方式
@RequestMapping("/getLast")
public String test3(HttpServletRequest request){
Cookie[] cookies=request.getCookies();
for(Cookie c:cookies)
{
if(c.getName().equals("lastTime")){
System.out.println("最后一次访问时间:"+new Date(Long.parseLong(c.getValue())));
break;
}
}
return "study2";
}
//获取Cookie的第二种方式
@RequestMapping("/getLastTime")
public String test4(@CookieValue(name="lastTime") String l,@SessionAttribute(name="test")String pass){
System.out.println("最后一次访问时间:"+new Date(Long.parseLong(l)));
System.out.println("Session:"+pass);
return "study2";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息