【框架:SpringMVC】SpringMVC概述与第一个SpringMVC应用

1 SpringMVC简介

(1)传统的JavaWeb

在这里插入图片描述
(2)MVC
在这里插入图片描述
(3)SpringMVC

在这里插入图片描述
(4)SpringMVC

SpringMVC 也叫 Spring web mvc。是 Spring 框架的一部分,是在 Spring3.0 后发布的。

特点:

  • 基于MVC架构
  • 容易上手,简单
  • 作为Spring的一部分,可以很容易与其他框架进行整合
  • SpringMVC 强化注解的使用,在控制器,Service,Dao 都可以使用注解。方便灵活。
    (使用
    @Controller 创建处理器对象,
    @Service 创建业务对象,
    @Autowired 或者@Resource在控制器类中注入 Service,
    Service 类中注入 Dao。)

(5)具体应用过程
在这里插入图片描述

2 第一个注解的 SpringMVC 程序

需求:用户在页面发起一个请求,请求交给SpringMVC的控制对象,并显示请求的处理结果。

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

2.1 中央调度器创建SpringMVC容器对象

在这里插入图片描述
在这里插入图片描述
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--

    启动tomcat报错,读取这个文件 /WEB-INF/springmvc-servlet.xml(/WEB-INF/myweb-servlet.xml)
        springmvc创建容器对象时,读取的配置文件默认是 /WEB-INF/<servlet-name>-servlet.xml,
        所以我们需要重新自定义

    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
     
    -->
    <servlet>
        <servlet-name>myWeb</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!--自定义SpringMVC读取的配置文件的位置-->
        <init-param>
            <!--springMvc的配置文件的位置-->
            <param-name>contextConfigLocation</param-name>
            <!--指定自定义文件的位置-->
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>

        <!--Tomcat启动后,创建对象
        load-on-startup表示Tomcat启动后创建的顺序,
        它的值是整数,数字大于等于0,数字越小,创建对象的时间越早。
        -->

        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>myWeb</servlet-name>
        <!--
            使用框架的时候,url-pattern可以使用两种值
            1.使用扩展名的方式,语法 *.xxxx, xxxx是自定义的扩展名。常用的方式 *.dao, *.action, *.mvc等等
                http://localhost:8080/myweb/some.do
                http://localhost:8080/myweb/other.do
            2.使用斜杠 "/"
        -->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

2.2 创建发起请求页面

<%--
  Created by IntelliJ IDEA.
  User: 北极星
  Date: 2021/9/16
  Time: 23:00
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>index</title>
</head>
<body>
    <p>SpringMVC的第一个项目</p>
    <a href="some.do">发起some请求</a>
</body>
</html>

2.3创建控制类

package com.sdnu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * @Controller:创建处理器对象,对象放在springmvc容器中。
 * 位置:在类的上面,和spring中的@Service, @Component
 */
@Controller
public class MyController {
    /*
      处理用户提交的请求,springmvc中是使用方法处理的。
      方法是自定义的,可以有多种返回值,多种参数,方法名称自定义
    */

    /**
     * 准备使用dosome方法处理some.do请求
     * @RequestMapping: 请求映射,作用是把一个请求地址和一个方法绑定在一起。一个请求指定一个方法处理。
     *      属性:1.value 是一个String,表示请求的url地址(some.do)。value的值必须是唯一的,不能重复。
     *      位置:1.在方法的上面,常用的。
     *           2.在类的上面。
     *      说明:使用@RequestMapping修饰的方法叫做处理器方法或者控制器方法。
     *           使用@RequestMapping修饰的方法可以处理请求,类似Servlet中的doGet, doPost
     * @Return ModelAndView 表示本次请求的处理结果
     *         Model: 数据,请求处理完成后,要显示给用户的数据
     *         View: 视图,比如jsp等等。
     */
    @RequestMapping(value="/some.do")
    public ModelAndView doSome(){
        //处理some.do请求。相当于service调用处理完成了。
        ModelAndView mv = new ModelAndView();
        //添加数据,框架在请求后把数据放入到request作用域中
        //request.setAttribute("msg", "欢迎使用springmvc做web开发");
        mv.addObject("school", "深圳大学");
        mv.addObject("age", "21");
        //指定视图,指定视图的完整路径
        //框架对视图执行的forward操作,request.getRequestDispather("/show.jsp").forward(...)
        mv.setViewName("/show.jsp");
        //返回mv
        return mv;
    }
}

2.4 结果处理页面

<%--
  Created by IntelliJ IDEA.
  User: 北极星
  Date: 2021/9/16
  Time: 23:00
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>index</title>
</head>
<body>
    <p>SpringMVC的第一个项目</p>
    <a href="some.do">发起some请求</a>
</body>
</html>

2.5 SpringMVC的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="com.sdnu.controller"/>
</beans>

2.6 SpringMVC的请求过程

在这里插入图片描述

在这里插入图片描述

2.7 SpringMVC的源码请求过程

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

2.8 定义目标页面

我们发现一个问题,我们在浏览器的地址栏中输入http://localhost:8080/SpringMVC1/some.do可以直接访问some.do,这不是我们想要的,我们想要的是从Jsp页面中访问some.do,所以我们需要修改目标页面,我们只需将我们的页面放到WEB-INF之下即可。
在这里插入图片描述

2.9 配置视图解析器

我们发现有这样的一个问题,当我们的页面有很多个的时候,我们在中央调度器中会写许多如下的代码
在这里插入图片描述
代码中的路径前面都是相同的,而我们使用框架的目的是简化我们的操作,所以我们能不能使用框架使得我们的操作变得简单呢。

在这里插入图片描述

作者:Beyong    
出处:Beyong博客
github地址:https://github.com/beyong2019

本博客中未标明转载的文章归作者Beyong有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值