SpringMVC 注解
1、@value —— 全局常量值
controller中的注解:
@value(value="${url}")
private String url;
${url}在配置文件中赋值
如果在applicationContext.xml(是Spring的主配置文件)中定义properties配置文件,则可在service中注解
如果在xxx-servlet.xml(是Spring的主配置文件)中定义properties配置文件,则可在controller中注解
2、@InitBinder —— 表单日期字符串和JavaBean的Date类型转换
controller注解:
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
在需要使用转换日期的controller中使用注解@InitBinder配合Spring自带的WebDataBinder类来操作
WebDataBinder是用来绑定请求参数到指定的属性编辑器.由于前台传到controller里的值是String类型的,当往Model里Set这个值的时候,如果set的这个属性是个对象,Spring就会去找到对应的CustomDateEditor进行转换,然后再set进去
需要在SpringMVC的配置文件加上
<!-- 解析器注册 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="stringHttpMessageConverter"/> </list> </property> </bean> <!-- String类型解析器,允许直接返回String类型的消息 --> <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"/>
换种写法
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
详解:SpringMVC在绑定表单之前都会注册这些编辑器,SpringMVC提供了一些实现类(如:CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor),上诉方法中调用WebDataBinder的registerCustomEditor方法。
3、@SessionAttributes —— 将Model中的属性同步到session中
controller注解:
@SessionAttributes({"str1","str2"}) public class A{ public void index(String str1, String str2){ model.addAttribute("str1", str1); model.addAttribute("str2", str2); } }
上述代码中,当执行index方法之后存入model中的值会直接同步到session中(@SessionAttributes指定)供全局使用。
4、@ModelAttributes
controller注解:
/** * 设置这个注解之后可以直接在前端页面使用hb这个对象(List)集合 * @return */ @ModelAttribute("hb") public List<String> hobbiesList(){ List<String> hobbise = new LinkedList<String>();return hobbise; }
页面可以直接使用"hb"集合
<c:forEach items="${hb}" var="ho"> </c:forEach>
5、@PathVariable —— 获取URL中的动态参数
@PathVariable("a") Integer a
URL:/b/c/{d}/e/{a}
6、@ExceptionHandler —— 异常捕获
/** * 参数绑定异常 */ @ExceptionHandler({BindException.class, ConstraintViolationException.class, ValidationException.class}) public String bindException() { return "error/400"; } /** * 授权登录异常 */ @ExceptionHandler({AuthenticationException.class}) public String authenticationException() { return "error/403"; }
捕获异常,出现对应的异常类时,跳转到指定页面
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7、@SuppressWarnings注解
该注解的作用就是让代码段(类或方法)中的警告"保持沉默",比如某个对象未使用,可以使用@SuppressWarnings("unchecked")来去掉警告,对应的关键字如下:
|