当前位置: 首页 > news >正文

SpringMVC概述及入门案例

目录

三层架构

MVC

SpringMVC

准备测试工作

开始入门

SpringMVC六大核心组件


  • 三层架构

  • 表现层:负责数据展示
  • Servlet,HTML...,Spring,SpringMVC
  • 业务层:负责业务处理
  • Spring
  • 数据层:负责数据操作
  • JDBC,Mybatis,Spring
  • MVC

  • MVC(Model View Controller),一种用于设计创建Web应用程序表现层的模式
  • Model(模型):数据模型,用于封装数据
  • View(视图):页面视图,用于展示数据
  • jsp,html
  • Controller(控制器):处理用户交互的调度器,用于根据用户需求处理程序逻辑
  • Servlet,SpringMVC
  • SpringMVC

  • SpringMVC是一种基于Java实现MVC模型的轻量级Web框架
  • SpringMVC优点
  • 使用简单
  • 性能突出(相比现有的框架技术)
  • 灵活性强
  • 准备测试工作

  • 导入相关坐标与插件,配置打包方式
  • 配置Servlet
  • 编写相关表现
  • 测试成功
  • 开始入门

  • 入门案例工作流程分析
  • 服务器启动
  • 1.加载web.xml中DispatcherServlet
  • 2.读取spring-mvc.xml中的配置,加载所有com.superdemo包中所有标记为bean的类
  • 3.读取bean中方法上方标注@RequestMapping的内容
  • 处理请求
  • 1.DispatcherServlet配置拦截所有请求/
  • 2.使用请求路径与所有加载的@RequestMapping的内容进行比对
  • 3.执行对应的方法
  • 4.根据方法的返回值在webapp目录中查找对应的页面并展示
  • 实现:
  • 0.坐标已经导入完成
  • 1.web.xml中配置SpringMVC核心控制器,用于将请求转发到对应的具体业务处理器Controller中(等同于Servlet配置)
  • <?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">
        <servlet>
            <servlet-name>DispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath*:spring-mvc.xml</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>DispatcherServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>
  • 2.开启扫描
  • <context:component-scan base-package="com.superdemo"/>
  • 3.定义表现层业务处理器Controller,并配置成spring的bean(等同于Servlet)
  • 并设定具体Controller的访问路径(等同于Servlet在web.xml中的配置)
  • 再设置返回页面
  • @Controller
    public class UserController {
        @RequestMapping("/save")
        public String save(){
            System.out.println("user mvc controller is running...");
            return "success.jsp";
        }
    }
  • 测试成功
  • SpringMVC六大核心组件

  • DispatcherServlet:
  • 前端控制器,是整体流程控制的中心,由其调用其它组件处理用户的请求,有效的降低了组件间的耦合性
  • HandlerMapping:
  • 处理器映射器,负责根据用户请求找到对应具体的Handler处理器
  • Handler:
  • 处理器,业务处理的核心类,通常由开发者编写,描述具体的业务
  • HandlAdapter:
  • 处理器适配器,通过它对处理器进行执行
  • View Resolver:
  • 视图解析器,将处理结果生成view视图
  • View:
  • 视图,最终产出结果,常用视图如jsp、html

相关文章:

  • 这篇文章告诉你三个好用的配音软件
  • 看漫画学Python 原来真的有用
  • Spring Cloud Gateway获取认证用户信息
  • 软件项目的自动化测试
  • 华为云的云计算比阿里云的云计算认证好吗?
  • Linux教程:RocketMq介绍以及集群服务搭建(双主双从同步双写)
  • RK3399平台开发系列讲解(设备树篇)设备树资源的处理
  • 项目实战第二十二讲:使用职责链模式实现商品审核
  • 笔试强训(十三)
  • node.js基于微信小程序的外卖订餐系统 uniapp 小程序
  • u盘文件删除怎么恢复?解决方法很简单
  • 【刷题日记】笔试经典编程题目(八)
  • 阿里巴巴编程规范实战(一):编程规约之常量定义代码格式
  • 人生苦短 我用Python,零基础运行你的第一行Python代码
  • zabbix案例--zabbix监控nginx状态
  • [译] 怎样写一个基础的编译器
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • Android优雅地处理按钮重复点击
  • HTTP中的ETag在移动客户端的应用
  • IDEA 插件开发入门教程
  • Mithril.js 入门介绍
  • Zsh 开发指南(第十四篇 文件读写)
  • 对JS继承的一点思考
  • 关于extract.autodesk.io的一些说明
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 类orAPI - 收藏集 - 掘金
  • 试着探索高并发下的系统架构面貌
  • 源码安装memcached和php memcache扩展
  • 云大使推广中的常见热门问题
  • 走向全栈之MongoDB的使用
  • puppet连载22:define用法
  • ​批处理文件中的errorlevel用法
  • (4.10~4.16)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (二十三)Flask之高频面试点
  • (三)Honghu Cloud云架构一定时调度平台
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)人的集合论——移山之道
  • .NET/C# 的字符串暂存池
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • /boot 内存空间不够
  • @EnableConfigurationProperties注解使用
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [Android] Upload package to device fails #2720
  • [BJDCTF2020]The mystery of ip1
  • [BZOJ] 3262: 陌上花开
  • [c语言]小课堂 day2
  • [Flex] PopUpButton系列 —— 控制弹出菜单的透明度、可用、可选择状态
  • [JS] 常用正则表达式集(一)
  • [LeetCode刷题笔记]1 - 两数之和(哈希表)