@Component是通用标注
@Controller标注Web控制器
@Service标注Service层的服务
@Respository标注DAO层的数据访问
这些注解都是类级别的,可以不带任何参数,也可以带一个参数,代表bean的名字,在进行注入的时候就可以通过名字进行注入了。
在不清楚使用哪个注解的时候,可以统统使用Component
###############################################################################
@RequestMapping
value代表具体的请求路径,如果不带其他属性value可以省略
method指定请求的method类型,GETPOSTPUTDELETE,可以省略则代表任意请求类型
consumes指定请求的内容类型(Content-Type),application/json,text/html,它的值既可以是字符串也可以是数组
Produces指定请求中必须包含的某些参数值,才会处理这个处理方法,参数可以是字符串或数组
params指定请求中必须包含某些参数的值,才会触发这个处理方法,参数中可以使用=或者!=,也可以不指定具体的值,直接使用“paramName”的格式,代表请求中必须包含参数名为paramName的参与,或”!paramName”。
headers指定头Header中必须包含某些指定的参数值,才能让该方法处理请求
@PathVariable在@RequestMapping注解中使用占位符的情况下,在处理方法中指定占位符参数,PathVariable的值需要与请求Url大括号中的一样,后面定义的变量名可以随意写,如果变量名与Url大括号中的一样,那么PathVariable中的值可以省略,也可以在Url中使用正则表达式。
例子:
@RequestParam,在SpringMVC的Controller中获取参数主要有两种方式,一种是request.getParameter(“name”),另一种是用注解@RequestParam直接获取。
getParameter从Url中获取参数,index.jsp?page=1
@RequestParam取页面对应元素的值,有三个属性value(参数名)、required(是否必须有这个参数)、defaultValue(参数的默认值),如果不带任何属性则表示需要的参数名于标注的变量名相同。
@CookieValue,读取Cookies中的值,并赋值给变量,有value(cookie的名字)、required(是否必须有这个Cookie值)、defaultValue(默认值)三个属性,不带任何属性则表示需要的cookie名和标注的变量名相同。
@SessionAttributes,如果希望在多个请求之间公用某个模型属性数据,则可以在控制类中标注一个@SessionAttributes,SpringMVC会将模型中对应的属性暂存到HttpSerssion中。除了SessionAttributes外,还可以直接用原生态的request.getSession()来处理session数据。
@ResponseBody用于将Controller的方法返回的对方,通过适当的HttpMessageConverter转换为指定的格式后,写入到Response对象的body数据区。一般在返回的不是html页面而是其它的数据格式(json、xml)时使用。
在Controller类中的使用,1使用@ResponseBady注解,2直接返回我们需要的对方
@RequestHeader,可以把Request请求header部分的值绑定到方法的参数上,与@RequesrParam注解使用方法一致
#########################################################################################
SpringMVC的拦截器 ,需要实现HandlerInterceptor接口,或者继承实现了HandlerInterceptor接口的类,主要有3个方法:
preHandle请求处理之前执行
postHandle请求处理之后执行
afterCompletion整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行。
需要在MVC的配置文件中配置
<mvc:interceptors>
<mvc:interceptor>
两个节点
########################################################################
SpringMVC的异常处理,3种方式
1.使用SimpleMappingExceptionResolver
2.自定义异常处理器,实现HandlerExceptionResolver接口
3.使用@ExceptionHandler注解,推荐使用这种方案