Shopping Without Vision 的 project 终于告一段落,teamwork 非常给力,中间也遇到很多困难,还好都一起克服了。这是做的第二个 Spring MVC  项目了,对这个框架在很多细节上又多了些深入的理解。这篇文章想总结一下关于 controller 中我们用到的几个注解。

@Controller

Controller 是 MVC 中的 C —— 控制层,如果不基于注解,该类需要继承 CommandController,如果基于注解,只需要在类名前加上注解 @Controller,这样当服务器启动时,spring 会自动扫描所有包,扫描到带有这个注解的类,spring 会告诉服务器,这是一个 controller,它可以接收和处理来自用户的请求。

@RequestMapping

假设请求的 URL 是: http://localhost:8080/项目名/xxx,这时在所有的 controller 中,根据 “xxx” 寻找处理请求的方法。所以我们只需要在用作 controller 的类里面可以处理请求的对应方法前加上注释,例如:

@RequestMapping(value = "/add", method = RequestMethod.GET)
public String addProduct(Model model) {Product product = new Product();List<Category> categories = categoryService.getCurrent();model.addAttribute("categories", categories);model.addAttribute("product", product);return "addProduct";
}

方法最后 return 的字符串,就是对应的 view 页面。

@ModelAttribute

该注解有两种用法,一种是注释方法,另一种是注释参数,我们用在第二种情况,示例代码:

@RequestMapping(value="/adding",method=RequestMethod.POST)
publicStringaddingProduct(@Valid@ModelAttribute("product")Productproduct,
HttpServletRequestrequest,Modelmodel){
System.out.println(product.getCategory().getCid());
System.out.println("product is"+product);
productDaoImp.insert(product);
List<Product>plist=productDaoImp.getProducts();
model.addAttribute("plist",plist);
List<Category>categories=categoryService.getCurrent();
model.addAttribute("categories",categories);
return"products";
}

@ModelAttribue 前的 @Valid 用来进行数据的校验。由于此处没有用到 @SessionAttributes,所以 product 的 scope 为 request,否则就是 session。在这个例子里,@ ModelAttribute (“product”) Product product 的作用是将绑定的命令对象以 “product” 为名称,又将 “plist” 和 “categories” 添加到模型对象中,供视图页面 (view) 展示使用。我们可以在视图页面使用 {plist.xxx} 和 ${categories.xxx} 来获取绑定的命令对象的属性。

@PathVariable

如果请求路径上有 id 变量值,可以通过 @PathVariable 来获取,如:

@RequestMapping(value="/{productId}/delete",method=RequestMethod.GET)
publicStringdeleting(@PathVariableintproductId,HttpServletRequestrequest,Modelmodel){
Productproduct=productDaoImp.findById(productId);
productDaoImp.delete(product);
List<Product>plist=productDaoImp.getProducts();
model.addAttribute("plist",plist);
List<Category>categories=categoryService.getCurrent();
model.addAttribute("categories",categories);
return"products";
}

欢迎关注我的知乎专栏【数据池塘】,专注于分享机器学习、数据挖掘干货:https://zhuanlan.zhihu.com/datapool

⬇️ 微信公众号 ⬇️

Spring MVC 常用注解之 Controller 篇相关推荐

  1. Spring MVC常用注解说明

    2019独角兽企业重金招聘Python工程师标准>>>     使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02     之前在使用Struts2实现MV ...

  2. Spring MVC常用注解,你会几个?

    转载自 Spring MVC常用注解,你会几个? 常用注解 Controller 注解一个类表示控制器,Spring MVC会自动扫描标注了这个注解的类. RequestMapping 请求路径映射, ...

  3. spring mvc常用注解的说明

    spring mvc常用注解的说明 最近一段时间学习了springboot,所以熟悉一下mvc中常用的注解,这样可以方便开发 简介: @RequestMapping RequestMapping是一个 ...

  4. Spring MVC常用注解--“姐妹花”@RequestBody和@ResponseBody

    1. 引言 在这篇短文中,我们简要地介绍了Spring MVC中常用的注解 @RequestBody和@ResponseBody. 2. @RequestBody 简单地说,在@RequestBody ...

  5. spring mvc 常用注解详解

    @Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model , ...

  6. Spring MVC常用注解汇总

    @Controller @Controller注解在类上,表明这个类是Spring MVC里的Controller,将其声明为Spring的一个Bean,Dispatch Servlet会自动扫描注解 ...

  7. 近100个Spring/SpringBoot常用注解汇总!

    作者 | Guide 来源 | JavaGuide(微信公众号) 毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我 ...

  8. 接近8000字的Spring/SpringBoot常用注解总结!安排!

    文章目录 0.前言 1. `@SpringBootApplication` 2. Spring Bean 相关 2.1. `@Autowired` 2.2. `Component`,`@Reposit ...

  9. Spring源码深度解析(郝佳)-学习-源码解析-Spring MVC(三)-Controller 解析

    在之前的博客中Spring源码深度解析(郝佳)-学习-源码解析-Spring MVC(一),己经对 Spring MVC 的框架做了详细的分析,但是有一个问题,发现举的例子不常用,因为我们在实际开发项 ...

最新文章

  1. go kegg_3分钟了解GO/KEGG功能富集分析
  2. 回归评估+解释方差分
  3. 让PasswordRecovery控件使用Email地址找回密码
  4. 鸟哥的私房菜 第0章
  5. Redis可视化工具 Redis Desktop Manager
  6. MATLAB实战系列(九)-遗传算法(GA)求解旅行商问题(TSP)思路解析
  7. python小数据池,代码块的最详细、深入剖析
  8. CodeForces - 1328F Make k Equal(模拟)
  9. 3、play中的模板引擎
  10. Kafka面试题与答案全套整理
  11. 中断触发流程三(中断控制器)
  12. java 找不到或无法加载类_解决Java中找不到或无法加载主类错误
  13. a start job is running for延迟90s的解决办法
  14. springboot 启动后打印_SpringBoot实战(五):配置健康检查与监控
  15. vue 使用axios发送的请求使用md5加密
  16. 反思设计——从大师身上反思
  17. 管道符、重定向、环境变量
  18. 关于保险的“损失补偿原则”
  19. python3中unicode-objects must be encoded before hashing问题
  20. Android进阶知识树——Android Handler消息机制

热门文章

  1. 未来计算机对世界的改变,到2030年,世界将会发生的10个改变,科学家:科技决定未来!...
  2. 逐行读取txt文件中_Spring系列八:Spring 中读取文件-ResourceLoaderAware
  3. python 组合数据_python-组合数据类
  4. anaconda安装keras_一定要看的Tensorflow-GPU+Keras安装教程
  5. python 单位根检验代码_python时间序列分析
  6. 数据结构vl怎么求_数据结构
  7. Linux(Ubuntu)如何安装常用软件(chrome、输入法、远程桌面)
  8. 内网穿透工具 FRP Linux 环境搭建安装
  9. SPOJ 375 Query on a tree(线段树维护树链剖分)
  10. Nodejs内存控制详解(上篇)