一放下就生疏,所以要温故,所以要笔记。

Tip,多数情况下,SpringMVC建议单例执行,Struts2建议多例执行。

原因就在于Struts2使用属性驱动或模型驱动,而SpringMVC则使用方法的形参接收参数。后者的方法在调用后数据就会销毁。

前提一,SpringMVC的执行流程:DispatcherServlet - HandlerMapping - HandlerAdapter - ViewResolver。

其实就是解析Url,调用合适的Handler,处理Handler的返回数据(ModelAndView,查源码可知其本质仍是操作request和response)。

注意,SpringMVC的Handler又叫Controller,概念可类比Struts2的Action。

前提二,SpringMVC的使用有传统代码和注解两种方式。两种方式需要在xml中配置的HandlerMapping和HandlerAdapter是不同的。

前提三,SpringMVC可以开启RESTful风格访问。

前提四,xml配置文件中的标签都有对应的类或接口,所以如果不知道怎么配置,可以查找对应的类或接口。

Handler(Controller)的实现方式:

①(非注解)实现Controller接口;

②(非注解)实现HttpRequestHandler接口;

③(注解)@Controller@RequestMapping@RequestParam@PathVariable等。

非注解方式需要实现接口的方法,每次实现都只能对应一个Controller,不方便,仅作了解即可。

注解方式,灵活多变(方法有多种返回类型,方法返回的数据有多种操作方式),当是最佳选择。

Handler(Controller)中方法的形参类似Struts2中Action的属性或模型,通过不同的形参可以注入不同的对象(如request,pojo等)。

如:

@RequestMapping(value = "/xxx", method = { RequestMethod.POST, RequestMethod.GET })
public String xxx(HttpServletRequest request) throws Exception {request.setAttribute("xxx", xxx);return "abc/xxx";// return "redirect:xxx.action"; //路径是相对于当前方法路径的上一级路径。// return "forward:xxx.action"; //路径是相对于当前方法路径的上一级路径。// 其实就是类内的action。
}

上面就是通过形参注入了request对象,从而可以在方法内部操作该对象。

---------------------------------------------------------------------

SpringMVC已加入了RESTful支持。RESTful是面向资源的架构思想,个人理解:对资源的访问及处理是其重点。

SpringMVC通过以下三点来保证(个人理解):

【】【】@ResponseBody使Controller【直接返回数据】,而不是直接指向具体的视图;同时通过MessageConverter和produces="text/plain;charset=UTF-8"可以返回各种格式的数据(XML,json,RSS,TEXT,字节流等)。
    【】【】@ResponseBody就是对应了HTTP协议里的响应体!!!
    【】【】ResponseEntity可以认为是ResponseHeader+ResponseBody。
    
    以上三点(直接返回数据而非页面、对应响应体、响应头和响应体),都是针对RESTful风格所需。务必理解啊。

Controller方法直接返回ResponseEntity对象,@ResponseBody将该对象转成符合格式的数据,然后直接返回。

转载于:https://www.cnblogs.com/larryzeal/p/5336042.html

SpringMVC小结相关推荐

  1. 【SpringMVC框架】小结+视图解析器配置前缀和后缀

    1.入门程序小结 通过入门程序理解springmvc前端控制器.处理器映射器.处理器适配器.视图解析器用法. 前端控制器配置: 第一种:*.action,访问以.action结尾 由Dispatche ...

  2. springmvc个人小结

    1.springMVC是什么?他和struts2有什么区别? springMVC和struts2都属于表现层的框架,他是spring框架的一部分. 区别: a)  springMVC的入口是servl ...

  3. spring+springmvc+ibatis整合小结

    最近在整合Spring和ibatis时,不管applicationContext.xml放在哪儿,在web.xml中怎么配置,tomcat启动时始终报applicationContext.xml的错. ...

  4. SpringMVC中@RequestMapping 6个基本用法小结

    1)最基本的,方法级别上应用,例如: Java代码   @RequestMapping(value="/departments") public String simplePatt ...

  5. SpringMVC拦截器-知识小结

    拦截器中的方法说明如下

  6. SpringMvc项目加载顺序及上下文小结

    https://www.cnblogs.com/angry-scholar/p/7729052.html

  7. SpringMVC之请求参数的获取方式

    转载出处:https://www.toutiao.com/i6510822190219264516/ SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数? 一般最常见的请求 ...

  8. SpringMVC学习(一)———— springmvc框架原理分析和简单入门程序

    一.什么是springmvc? 我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解这个思想,struts2在web层,spring在中间控制,hibernate在dao层与数据库打交 ...

  9. 在web项目中使用SpringMVC

    为什么80%的码农都做不了架构师?>>>    什么是springmvc springmvc是spring框架的一个模块,springmvc和spring无需通过中间整个层进行整合, ...

最新文章

  1. bufferedreader读取中文乱码_Python读取excel的两种方法
  2. sql join教程
  3. Java黑皮书课后题第5章:**5.17(显示金字塔)编写程序,提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案
  4. Visio各图形如何一键自动对齐?
  5. zookeeper启动失败
  6. Mysql学习总结(40)——MySql之Select用法汇总
  7. WebService远程调试
  8. winform 窗口伸缩 panel控件太多闪烁问题
  9. 对于目标文件系统,文件过大放不到U盘里
  10. Cadence PSpice 仿真2: 三极管运放交流小信号仿真图文教程
  11. 任正非对姚安娜是劝退式支持吗
  12. word去掉标题前面的黑点
  13. Grand Prix of Saratov - D. Elevator - DP
  14. 旺旺打标工具,淘宝搜索打标软件(含旺旺打标API接口)
  15. mevan 的常用命令和参数解释
  16. 飞猪大数据:85后带来春节旅行新气氛
  17. PBRT-v2在windows下的配置与使用
  18. 元宇宙,现实与虚拟交互的新一代互联网?
  19. 数据结构(Java实现)-详谈树与二叉树结构
  20. 在浏览器中直接访问linux服务器中的文件(以图片为例)

热门文章

  1. 借入单的后续处理-借入归还
  2. 支撑计算机高速化的半导体技术
  3. 15个月纪念,开心!
  4. 5.1 tushare包介绍
  5. 给字母保密的c语言,C语言练习题
  6. 云服务器一直显示关机中,云服务器一直提示关机中
  7. computed get set 传参_ES6 的 Set 与 Map深入理解
  8. centos网络隔一段时间就断_“路由器隔一段时间就上不了网,断一下电又能用了,这是什么原因...
  9. 阿里云PolarDB论文入选数据库顶会SIGMOD2021 最新一代架构领先世界
  10. 阿里云CDN产品经理陈章炜:边缘创新技术和落地实践