spring实用注解(二)--springMvc注解
来源:互联网 发布:sniffer java 报错 编辑:程序博客网 时间:2024/06/06 01:27
前一篇介绍了spring基本的实用注解,本文将对springMVC注解进行介绍。
一、开启springMvc的注解
1、@EnableWebMvc
开启对spring web mvc支持的配置类,此注解会开启一些默认配置,如ViewResolver等。
2、定制spring mvc需要在加注解@EnableWebMvc类上,实现接口
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter,
并且加上映射器viewResolver、
静态资源映射、
拦截器等
如:
@ComponentScan("com.dragon.springStudy")@Configuration@EnableWebMvcpublic class SpringWebConfig extends WebMvcConfigurerAdapter { @Bean public InternalResourceViewResolver viewResolver(){ InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/classes/views/"); viewResolver.setSuffix(".jsp"); viewResolver.setViewClass(JstlView.class); return viewResolver; } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); } @Bean public MultipartResolver multipartResolver(){ CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(); commonsMultipartResolver.setMaxUploadSize(1000000); return commonsMultipartResolver; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(simpleInterceptor()); } @Override public void addViewControllers(ViewControllerRegistry registry) { super.addViewControllers(registry); registry.addViewController("directPage").setViewName("directPage"); registry.addViewController("servletAsync").setViewName("servletAsync"); } @Bean public SimpleInterceptor simpleInterceptor(){ return new SimpleInterceptor(); }}
3、对于加注解@EnableWebMvc的springMvc配置类,需要在实现org.springframework.web.WebApplicationInitializer接口的类来加载springMvc配置类,
WebApplicationInitializer是用来配置servlet3.0+配置的接口,用来代替配置文件web.xml的功能,
如:
public class WebInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(SpringWebConfig.class); ctx.setServletContext(servletContext); ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher",new DispatcherServlet(ctx)); servlet.addMapping("/"); servlet.setLoadOnStartup(1); servlet.setAsyncSupported(true); //开启servlet3.0+的异步方法支持 }}
二、springMvc常用注解
1、@Controller
声明控制器
2、@RequestMapping
映射web请求,注解在类上或方法上,
内部有参数,
value,表示路径,如value="path";
produces,表示返回的媒体类型和字符集
如返回json数据,则有
@RequestMapping(value = "/getJson", produces = {"application/json;charset=utf-8"})@ResponseBody如返回xml数据,则有
@RequestMapping(value = "/getXml",produces = "application/xml;charset=UTF-8")@ResponseBody
如返回文本,则有
@RequestMapping(value = "/getText" ,produces = {"text/plain;charset=utf-8"})@ResponseBody
实例如:
@RequestMapping(value = "/getJson", produces = {"application/json;charset=utf-8"})@ResponseBodypublic Student getJson(Student stu) { stu.setName("apple"); return stu;}@RequestMapping(value = "/getXml",produces = "application/xml;charset=UTF-8")@ResponseBodypublic Student getXml(Student stu){ stu.setName("apple"); return stu;}
备注:添加json和xml的maven依赖
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.6.0</version></dependency><dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.6.0</version></dependency>
3、@ResponseBody
将返回值直接给用户,而不是表示逻辑页面
4、@RequestBody
表示请求参数在request请求体中,而不是在url后面
5、@RequestParam
表示接收请求参数
6、@PathVariable
用来接收路径中的参数
7、@RestController
是一个组合注解,是@Controller和@ResponseBody的组合,表示是一个控制器,且直接返回结果
8、@ControllerAdivce
注解在类上,开启对控制器全局配置,
如
@ControllerAdvicepublic class BaseControllerAdvice {}
在类内部方法上,有几下注解进行全局配置:
a)@ExceptionHandler
全局处理控制器内的异常,如
@ExceptionHandler(value = Exception.class)public String exceptionHandler(Exception e, WebRequest request, Model model){ model.addAttribute("errorMsg",e.getMessage()); return "error";}
b)@InitBinder
用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中
@InitBinderpublic void initBinder(WebDataBinder webDataBinder){ webDataBinder.setDisallowedFields("name"); //忽略name值的绑定,注意是model中,如自定义的Student实例对象 webDataBinder.registerCustomEditor(Date.class,new MyDateEditor()); //定义string到Date的映射}//自定义Date绑定格式class MyDateEditor extends PropertyEditorSupport{ @Override public void setAsText(String text) throws IllegalArgumentException { try { Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(text); setValue(date); } catch (ParseException e) { e.printStackTrace(); } }}
c)@ModelAttribute
全局绑定键值对到Model中,也就是绑定后,全局controller内的model都有设定的值
@ModelAttributepublic void addDate(Model model){ model.addAttribute("nowDate", DateFormatUtils.format(new Date(),"yyyy-MM-dd hh:mm:ss"));}当然也可以在请求方法内,通过注解@ModelAtttribute获取绑定的值,如:
@RequestMapping("/")public String index(@ModelAttribute("nowDate") String nowDate) {}
阅读全文
0 0
- spring实用注解(二)--springMvc注解
- spring实用注解(一)--基本注解
- spring注解(二)
- spring注解(二)
- 相关注解(spring+springmvc)
- SpringMvc学习心得(二)spring注解配置原理浅析
- spring注解 springmvc的注解
- Spring SpringMVC Hibernate 注解
- springMVC(二)注解使用
- SpringMVC注解(二)
- spring注解详解(二)
- Spring注解Annotation(二)
- SpringMVC入门学习(二)应用注解方式+注解优化
- SpringMVC入门学习(二)应用注解方式+注解优化
- SpringMVC入门学习(二)应用注解方式+注解优化
- spring、springmvc、mybatis整合配置(注解)
- SpringMVC重要注解(二)@ControllerAdvice
- SpringMVC重要注解(二)@ControllerAdvice
- 初探高阶多项式模型
- Linux-视频监控系统(3)-Epoll框架的实现
- 谷歌电子市场开发记录(1)-开发前的准备
- 我的运维日记
- MySQL使用LIMIT限制查询结果的数量
- spring实用注解(二)--springMvc注解
- 剑指offer——删除链表中重复的结点
- ubuntu有以下方式切换到root身份
- tensorflow-4D特征图放缩,tensorboard初使用
- cin&&scanf
- ThinkPHP框架中添加(add)或更新(save)时过滤某些字段的问题
- Qt5.6.2+QtCreator4.3.1与matlabR2016a混合编程(64位)
- JZOJ 5221. 【GDOI2018模拟7.10】A
- C++ 例4.1 私有继承的访问规则举例1