【SpringMVC】概述(附带实例)

1、SpringMVC概述

1.1、 SpringMVC概念

    SpringMVC 也叫 Spring web mvc。是 Spring内置的一个MVC框架,在 Spring3.0 后发布。
    SpringMVC 框架解决了WEB开发中常见的问题(参数接收、文件上传、表单验证等等),而且使用简单,与Spring无缝集成。支持 RESTful风格的URL请求。采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。

1.2、SpringMVC原理

    在没有使用SpringMVC之前我们都是使用Servlet在做Web开发。但是使用Servlet开发在接收请求参数, 数据共享,页面跳转等操作相对比较复杂。
    servlet是java进行web开发的标准,既然springMVC是对 servlet的封装,那么很显然SpringMVC底层就是Servlet,SpringMVC就是对Servlet进行深层次的封装。

1.3、SpringMVC优势

    1、基于 MVC 架构,功能分工明确。解决页面代码和后台代码的分离。
    2、简单易用。SpringMVC 也是轻量级的,jar 很小。不依赖的特定的接口和类就可以开发一个注
        解的 SpringMVC 项目。
    3、作 为 Spring 框架一部分 , 能够使用Spring的IoC和AOP 。 方 便 整 合
        MyBatis,Hiberate,JPA等 其他框架。
    4、springMVC的注解强大易用。

2、MVC模式回顾

模型1:jsp+javabean模型----在jsp页面中嵌入大量的java代码
模型2:jsp+servlet+javabean模型----jsp页面将请求发送给servlet,由servlet调用javabean,再由
            servlet将制定jsp页面响应给用户。
区别:不会在jsp页面编写大量的java代码,而是把jsp专门做成页面展示部分,所有数据处理部分
都交给Servlet进行操作

模型2一般就是现在的MVC模式,也是我们一直使用的。
Model-View-Controller:模型–视图–控制器
Model: 模型层 javaBean 负责数据访问和业务处理 dao service pojo
View: 视图 JSP技术 负责收集和展示数据
Controller: 控制器 servlet技术 中间调度

控制器的工作:
    1、接受客户端的请求(包括请求中携带的数据)
    2、处理请求:调用后台的模型层中的业务逻辑
    3、页面导航:处理完毕给出响应:JSP页面

3. 入门程序

3.1 创建maven项目

创建项目并补齐目录结构
在这里插入图片描述

3.2 pom.xml文件添加依赖和插件

在这里插入图片描述
在这里插入图片描述

3.3 创建Spring和SpringMVC的配置文件

我们一般将除了 Controller 之外的所有 Bean 注册到 Spring 容器中,而将 Controller 注册到 SpringMVC 容器中。所以我们在 resources 目录下添加 applicationContext.xml 作为 spring 的配置, 添加springmvc.xml作为springmvc的配置文件。

3.3.1 创建Spring配置文件applicationContext.xml文件

在这里插入图片描述

3.3.2 创建SpringMVC的配置文件springmvc.xml

在这里插入图片描述

3.4 在web.xml中进行Spring和SpringMVC配置

在这里插入图片描述
在这里插入图片描述

SpringMVC的配置解析:

1、servlet-class:前端控制器的完全限定名
    在spring-webmvc-5.2.5.RELEASE.jar包中的 org.springframework.web.servlet下
2、load-on-startup:标记是否在Web服务器(这里是Tomcat)启动时会创建这个 Servlet 实例
    即是否在 Web 服务器启动时调用执行该 Servlet 的 init()方法,而不是在真正访问时才创建。
    要求取值是整数。
    值大于0:表示容器在启动时就加载并初始化这个 servlet,数值越小,该 Servlet的优先级就
        越高,其被创建的也就越早
    值小于0或者省略:表示该 Servlet 在真正被使用时才会去创建。 值相同:容器会自己选择
        创建顺序
3、url-pattern:可以写为 / ,可以写为*.do 、.action、.mvc等形式,
    此处先写*.do,以后 介绍不同写法的区别。
4、init-param:表示了springmvc配置文件的名称和位置。
如没有配置,默认在项目的WEB-INF 目录下找名称为 Servlet 名称-servlet.xml 的配置文件
如果没有配置,启用默认的规则:即如果配置文件放在 webapp/WEB-INF/ 目录下,并且配
置文件的名字等于 DispatcherServlet 的名字+ -servlet(即这里的配置文件路径是 webapp/WEBINF/dispatcherServlet-servlet.xml),如果是这样的话,可以不用添加 init-param 参数,即不用手动配置 springmvc 的配置文件,框架会自动加载。
而一般情况下,配置文件是放在类路径下,即 resources 目录下。所以,在注册前端控制器时, 还需要设置查找 SpringMVC 配置文件路径。
其中contextConfigLocation属性:来自DispatcherServlet的父类FrameworkServlet, 该类中的contextConfigLocation属性用来配置springmvc的路径和名称。

3.5 创建控制器

@Controller
public class TeamController {
    @Autowired
    private TeamService teamService;
    @RequestMapping("hello.do")
    public ModelAndView add(){
        System.out.println("TeamController----add");
        teamService.add();
        ModelAndView mv = new ModelAndView();
        //相当于request.setAttribute(key,value)
        mv.addObject("name","湖人");
        //未来经过springMvc视图解析器处理,转换成物理路径,即跳转到这个页面
        //相当于 request.setRequestDispatcher("index.jsp").forward(req,resp)
        //经过internalResourceViewResolver处理之后加上前后缀就变为了 /jsp/index.jsp
        mv.setViewName("index");
        return mv;
    }
}

service层:

@Service
public class TeamService {
    public void add(){
        System.out.println("TeamService-----add");
    }
}

3.6 配置视图解析器

在springmvc.xml配置文件中添加视图解析器的配置
在这里插入图片描述

    annotation-driven是一种简写形式,也可以手动配置替代这种简写形式,简写形式可以让初学者快速 应用默认配置方案。
    该注解会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是springMVC为@Controller分发用户请求所必须的,解决了@Controller注解使用的前提配置。
同时它还提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB,读写JSON的支持(Jackson)。我们处理响应ajax请求时,就使用到了对json 的支持(配置之后,在加入了jackson的core和mapper包之后,不写配置文件也能自动转换成json)。

3.7 编写index.jsp页面

webapp文件夹下面创建文件夹jsp,然后jsp文件夹中添加index.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>index</title>
</head>
<body>
<h1>index-----------${name}</h1>
</body>
</html>

3.8 测试

双击运行,端口和路径有配置的插件决定
在这里插入图片描述
将地址复制到浏览器之后追加控制中add方法的访问路径hello.do,看到如下页面表示运行成功!
在这里插入图片描述

4、 解析

当 Spring 和 SpringMVC 同时出现,我们的项目中将存在两个容器,一个是 Spring 容器,另一个是 SpringMVC 容器,Spring 容器通过 ContextLoaderListener 来加载,SpringMVC 容器则通过 DispatcherServlet 来加载,这两个容器不一样:
在这里插入图片描述
如图所示:
ContextLoaderListener 初始化的上下文加载的 Bean 是对于整个应用程序共享的,不管是使用什 么表现层技术,一般如 dao层、service层的bean;
DispatcherServlet 初始化的上下文加载的 bean 是只对 Spring Web MVC 有效的 bean,如 Controller、HandlerMapping、HandlerAdapter 等等,该初始化上下文应该只加载 Web相关组 件。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王某人@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值