博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC小结
阅读量:6648 次
发布时间:2019-06-25

本文共 1712 字,大约阅读时间需要 5 分钟。

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

 

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将该对象转成符合格式的数据,然后直接返回。

 

转载地址:http://yruto.baihongyu.com/

你可能感兴趣的文章
apache 2.2 配置参数详解
查看>>
2013 linux最新面试题及答案 (非常强大)
查看>>
Linux学习之路-Nginx(4)模块简要介绍篇【27】---20180228
查看>>
IDEA 极速导包功能
查看>>
推荐子龙山人的emacs视频教程
查看>>
细说shiro之二:组件架构
查看>>
Linux---解压缩
查看>>
高可用Keepalived
查看>>
CentOS(RHEL)内核版本与系统版本对应关系
查看>>
Linux之本地yum源
查看>>
安装配置SVN服务-1
查看>>
vs2010开发安卓系统
查看>>
Splunk Forward简单部署_Win
查看>>
Oracle 双机热备:Oracle dataguard 和Oracle rac的区别和联系
查看>>
如何只显示不同字段值的行?
查看>>
挂载ISO文件
查看>>
DataGridView 经典用法总结(一)
查看>>
Java并发显式锁和显式条件队列
查看>>
云OS可国产替代
查看>>
try-catch 能否监听多线程中的错误?
查看>>