您的位置:首页 > 编程语言 > Java开发

springMVC

2020-05-04 20:28 260 查看

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

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。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息