SpringMvc之常⽤注解及异常注解常⽤注解
controller注解⽤于指⽰spring类的实例是⼀个控制器
@Controller⽤于标记⼀个类,使⽤它标记的类就是Spring MVC Controller的对象,即⼀个控制器。
为了保证Spring能到控制器,需要完成两件事:
①:在Spring MVC的配置⽂件中引⼊ spring-context
②:使⽤<context:component-scan class="指定扫描的包"/>元素,作⽤为扫描指定位置的包
2.RequestMapping
@RequestMapping注解可以⽤来注释⼀个控制器类
除了可以修饰类还可以修饰⽅法
@RequestMappping注解⽀持的属性
①value:⽤于将指定请求的实例地址映射到⽅法上
②name:给映射地址⼀个指定的别名
③method:映射指定的⽅法类型(post,get)
④consumes:指定请求提交内容的类型
⑤produces:指定返回内容的类型,返回的内容必须是request请求中包含的内容
⑥params:指定request中必须包含的数值
⑦headers:指定必须包含给定的数值时,⽅法才被执⾏
⑧path:在⽅法层上⽀持相对路径
RequestMapping-PathVariable注解
@PathVariable 映射 URL 绑定的占位符
jsp
<a href="springmvc/testPathVariable/1">Test PathVariable</a>
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标记的⽅法来处理异常,如果未到在,则会去寻被
mvc的controller@ControllerAdvice注解修饰的类种寻@ExcepitionHandler
注解进⾏处理。这样的好处就是不⽤在⼀个⼀个的⽅法中添加@ExcepitionHandler的注解。
3.@ResponseStatus
@ResponseStatus是处理异常最简单的注解⽅法,是⽤时⾸先得先声明⼀个异常类,使⽤@ResponseStatus注解标记,他有三个属性值
①code HttpStatus类型 为http状态码
②value String 类型  同code属性
③reason 描述错误信息
4.SimpleMappingExceptionResolver
如果没有指定的异常注解此时@SimpleMappingExceptionResolver会处理所有的异常,使⽤SimpleMappingExceptionResolver处理异常需要在SpringMVC的配置⽂件中配置
<!-- 配置使⽤ SimpleMappingExceptionResolver 来映射异常 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionAttribute" value="ex"></property>
<property name="exceptionMappings">
<props>
<prop key="java.lang.ArrayIndexOutOfBoundsException">error</prop>
</props>
</property>
</bean>
在Jsp页⾯中通过${ssage}来显⽰异常。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。