SpringMvc之常用注解及异常注解

常用注解

1.controller
controller注解用于指示spring类的实例是一个控制器

@Controller用于标记一个类,使用它标记的类就是Spring MVC Controller的对象,即一个控制器。

为了保证Spring能找到控制器,需要完成两件事:
①:在Spring MVC的配置文件中引入 spring-context
②:使用元素,作用为扫描指定位置的包

2.RequestMapping 

@RequestMapping注解可以用来注释一个控制器类

除了可以修饰类还可以修饰方法

@RequestMappping注解支持的属性
①value:用于将指定请求的实例地址映射到方法上
②name:给映射地址一个指定的别名
③method:映射指定的方法类型(post,get)
④consumes:指定请求提交内容的类型
⑤produces:指定返回内容的类型,返回的内容必须是request请求中包含的内容
⑥params:指定request中必须包含的数值
⑦headers:指定必须包含给定的数值时,方法才被执行
⑧path:在方法层上支持相对路径

RequestMapping-PathVariable注解

@PathVariable 映射 URL 绑定的占位符
jsp

Test PathVariable


java code

/*** @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中.* @param id* @return*/
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id) 
{
  System.out.println("testPathVariable: " + id);
  return SUCCESS;
}

3.RequestParam

@RequestParam来映射请求参数

value:值即请求参数的参数名
required 该参数是否为必须,默认为true
defaultValue: 请求参数的默认值

4.RequestHeader

@RequestHeader映射请求头(用的机会较少)

5.CookieValue

@CookieValue 映射一个Cookie值(用的机会较少)

6.RequestAttribute

@RequstAttribute 该注解用于访问由请求处理方法、过滤器或者拦截器创建的、预先存在于Request作用域中的属性。

7.SessionAttribute

@SessionAttribute 该注解用于访问由请求处理方法、过滤器或者拦截器创建的、预先存在于Session作用域中的属性。

8.SessionAttributes

@SessionAttributes 该注解允许我们有选择的指定Model中的那些属性转存到HttpSession对象中

该注解只能放在类的上面,而不能修饰方法

value:可以通过属性名指定需要放到会话属性

tapes:也可以通过模型属性的对象类型指定哪些模型属性需要放到会话中

9.ModelAttribute(重要)

@ModelAttribute与@RequestAttribute 同时注解不同的方法时,@ModelAttribute要优先被调用

① @ModellAttribute(value=XX"")注释返回具体类的方法
value的默认值XX,用来指定model属性名称,而model属性值就是@ModellAttribute注释方法的返回值。

② @ModelAttribute 注释void返回值的方法(要在方法中加入一个Model类型参数)

将@RequstParam中的参数添加到Model类型中,,便可以通过requestScope.XX的方式获取属性值。

③ @ModelAttribute 注解返回具体类的方法
 
将return 的类型存放入Model类型中

④@ModelAttribute与@RequestMapping同时注释一个方法

@RequestMapping注释的方法,返回值就不是一个视图名称,而是Model的属性值
Model的属性值则由@ModelAttribute的value的值指定。

⑤@ModelAttribute注释一个方法的参数(最常用)
一个对象被@ModelAttribute注解时,前台控制的值会自动入参道此对象的同名属性中。

异常注解

为什么要用异常注解?

异常会直接抛到浏览器中,页面显示一大堆错误堆栈信息。用户看到这些错误的堆栈信息,往往会一头雾水,而且错误的堆栈信息由于暴露了后台调用的关系,会存在很大的风险。

1.@ExcepitionHandler
    
一个方法使用了@ExcepitionHandler注解,value=Exception.class表示处理所有的Exception类型异常。当该类抛出异常时,会使用@ExcepitionHandler的方法
去处理异常,不会抛给浏览器,被@ExcepitionHandler注解标记的方法,会将捕捉到的异常对象保存在ModelAndView中。在实际开发过程中@ExcepitionHandler注解的功能
最强大。

2.@ControllerAdvice

如果有异常抛出的时候,该异常会先寻找被@ExcepitionHandler标记的方法来处理异常,如果未找到在,则会去寻找被@ControllerAdvice注解修饰的类种寻找@ExcepitionHandler
注解进行处理。这样的好处就是不用在一个一个的方法中添加@ExcepitionHandler的注解。

3.@ResponseStatus

@ResponseStatus是处理异常最简单的注解方法,是用时首先得先声明一个异常类,使用@ResponseStatus注解标记,他有三个属性值
①code HttpStatus类型 为http状态码
②value String 类型  同code属性
③reason 描述错误信息


4.SimpleMappingExceptionResolver

如果没有指定的异常注解此时@SimpleMappingExceptionResolver会处理所有的异常,使用SimpleMappingExceptionResolver处理异常需要在SpringMVC的配置文件中配置

    
    
        
        
            
                error
            

        

    
    


在Jsp页面中通过${RequstScope.ex.message}来显示异常。
 

你可能感兴趣的:(SpringMvc)