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

在使用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";
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值