SpringMVC笔记①------使用MVC+Tomcat框架搭建web应用

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内置对象作用域表如下
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() 方法,这一次请求就结束了。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值