1.spring mvc介绍
Spring mvc是java实现了一种轻量级web框架,
将web层进行了职责解耦,其目的就是为了简化web开发
2.servlet 三大作用域
request:每一个请求都是一个新的request对象,如果在web组件之间需要共享同一个请求中的数据,只能使用请求转发。
session:每一个会话都是一个新的session对象,如果需要在一次会话中的多个请求之间需要共享数据,只能使用session。
application:应用对象,tomcat启动到tomcat关闭,表示一个应用,在一个应用中有且只有一个application对象,作用于整个web应用,可以实现多次会话之间的数据共享
4个JSP内置对象的作用域分别为:application、session、request、page 。
JSP内置对象作用域表如下
3.spring mvc优缺点
Spring mvc 优点:
1.将数据、业务及展现进行分离,目的解决企业应用开发的复杂性
2.轻量级
3.spring 最核心框架就是依赖注入和控制反转
4.使用简单,学习成本低
缺点:
1.没有明确定义
2.不适合小型,中等规模的应用程序
Struts优点:多层拦截器,多实例action性能都很好
缺点:应用性能差
4.spring mvc运行原理
5.spring mvc使用
1.第一步构建maven web-app项目
2.将项目加载到tomcat容器中
3.把项目结构补充完整
4.新建UserServlet类继承HttpServlet可通过url访问
5.启动tomcat验证可访问前端页面及后端接口
6.新建HelloWorldController类
7.补全web.xml
8. 新建applicationContext.xml
9.新建helloworld.jsp
10. 启动tomcat验证
注:
值栈:是一个可以线程安全的为每个请求提供公共存储数据服务
当请求到达的时候,struts2会为每个请求安排不同的值栈,一个值栈对应一个请求。值栈封装了一次请求所需要的所有的数据。
ognl:对象表达式语言,可以用一个表达式快速地访问一个对象的属性,还可以调用对象的方法
DispatcherServlet 处理流程
在整个 Spring MVC 框架中,DispatcherServlet 处于核心位置,它负责协调和组织不同组件完成请求处理并返回响应工作。在看 DispatcherServlet 类之前,我们先来看一下请求处理的大致流程:
1.Tomcat 启动,对 DispatcherServlet 进行实例化,然后调用它的 init() 方法进行初始化,在这个初始化过程中完成了:对 web.xml 中初始化参数的加载;建立 WebApplicationContext (SpringMVC的IOC容器);进行组件的初始化;
2.客户端发出请求,由 Tomcat 接收到这个请求,如果匹配 DispatcherServlet 在 web.xml 中配置的映射路径,Tomcat 就将请求转交给 DispatcherServlet 处理;
3.DispatcherServlet 从容器中取出所有 HandlerMapping 实例(每个实例对应一个 HandlerMapping 接口的实现类)并遍历,每个 HandlerMapping 会根据请求信息,通过自己实现类中的方式去找到处理该请求的 Handler (执行程序,如Controller中的方法),并且将这个 Handler 与一堆 HandlerInterceptor (拦截器) 封装成一个 HandlerExecutionChain 对象,一旦有一个 HandlerMapping 可以找到 Handler 则退出循环;
4.DispatcherServlet 取出 HandlerAdapter 组件,根据已经找到的 Handler,再从所有 HandlerAdapter 中找到可以处理该 Handler 的 HandlerAdapter 对象;
5.执行 HandlerExecutionChain 中所有拦截器的 preHandler() 方法,然后再利用 HandlerAdapter 执行 Handler ,执行完成得到 ModelAndView,再依次调用拦截器的 postHandler() 方法;
6.利用 ViewResolver 将 ModelAndView 或是 Exception(可解析成 ModelAndView)解析成 View,然后 View 会调用 render() 方法再根据 ModelAndView 中的数据渲染出页面;
7.最后再依次调用拦截器的 afterCompletion() 方法,这一次请求就结束了。