springMVC
钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>
SpringMVC 执行流程
1、DispatcherServlet前端控制器接收发过来的请求,交给HandlerMapping处理器映射器
2、HandlerMapping处理器映射器,根据请求路径找到相应的HandlerAdapter处理器适配器(处理器适配器就是那些拦截器或Controller)
3、HandlerAdapter处理器适配器,处理一些功能请求,返回一个ModelAndView对象(包括模型数据、逻辑视图名)
4、ViewResolver视图解析器,先根据ModelAndView中设置的View解析具体视图
5、然后再将Model模型中的数据渲染到View上
1. 用户发送请求至前端控制器DispatcherServlet[dɪˈspætʃə(r)]。
2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3. 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4. DispatcherServlet调用HandlerAdapter处理器适配器。
5. HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6. Controller执行完成返回ModelAndView。
7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9. ViewReslover解析后返回具体View.
10. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11. DispatcherServlet响应用户。
1.客户端发送请求到DispacherServlet(分发器)
2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller
3.Controller调用业务逻辑处理后,返回ModelAndView
4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图
5.视图负责将结果显示到客户端
SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决
问题:单例模式,在多线程访问时有线程安全问题
解决方法:不要用同步,因为会影响性能。解决方案,是在控制器里面不能写成员变量
SpringMvc 中控制器的注解
@Controller:该注解表明该类扮演控制器的角色
@RequestMapping 注解用在类上的作用?
作用:用来映射一个URL到一个类或者一个特定的处理方法上(请求到处理器功能方法的映射规则)
前台多个参数,这些参数都是一个对象,快速得到对象
方法:直接在方法中声明这个对象,SpringMvc就自动把属性赋值到这个对象里面
SpringMvc中函数的返回值
String,ModelAndView,List,Set 等
一般String,Ajax请求,返回一个List集合
SpringMvc中的转发和重定向
转发:return:“hello”
重定向 :return:“redirect:hello.jsp”
SpringMvc和Ajax之间的相互调用
通过JackSon框架把java里面对象直接转换成js可识别的json对象,具体步骤如下:
加入JackSon.jar
在配置文件中配置json的映射
在接受Ajax方法里面直接返回Object,list等,方法前面需要加上注解@ResponseBody
Struts2 和 SpringMvc的区别
入口不同:
Struts2:filter过滤器
SpringMvc:一个Servlet即前端控制器
开发方式不同:
Struts2:基于类开发,传递参数通过类的属性,只能设置为多例
SpringMvc:基于方法开发(一个url对应一个方法),请求参数传递到方法形参,可以为单例也可以为多例(建议单例)
请求方式不同:
Struts2:值栈村塾请求和响应的数据,通过OGNL存取数据
SpringMvc:通过参数解析器将request请求内容解析,给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过request域传输到页面,jsp视图解析器默认使用的是jstl。
- SpringMVC中使用Interceptor拦截器顺序等
- Eclipse中Maven+Spring3.2.8+SpringMVC HelloWorld项目
- SpringMVC源码剖析(三)- DispatcherServlet的初始化流程
- Spring整合SpringMVC
- springmvc支持json和jsonp类型数据
- 一张图理清SpringMVC工作原理
- springmvc自定义参数转换器的配置
- 030301-web框架之springmvc入门
- Eclipse maven构建springmvc项目
- springmvc整合mybatis出现Could not autowire field:No matching bean of type错误
- springmvc+quartz,实现定时任务
- 使用SpringMVC 创建REST API
- springMVC发送邮件的简单实现
- 基于SpringMVC的文件上传下载功能
- springmvc页面跳转后缀HTML和jsp不同时的解决方案
- springmvc
- springMVC对于controller处理方法返回值的可选类型
- springmvc 集成apache cxf 开发webservice 示例
- SpringMVC的注解方式
- SpringMVC中静态方法调用非静态方法