SpringMVC 01 -SpringMVC入门

news2024/11/23 19:26:04

高效学习习惯啊 坚持,比如这样经常更新博客,保持学习哈哈哈

SpringMVC-SpringMVC引入

  • 1 SpringMVC引入
    • 1.1 引言
    • 1.2 MVC架构
      • 1.2.1 概念
      • 1.2.2 好处
    • 1.2.3 执行流程【重点】
  • 2 快速入门
    • 2.1 导入依赖
    • 2.2 配置核心(前端)控制器
    • 2.3 springmvc核心配置文件
    • 2.4 创建处理器(Handler)
    • 2.5 测试访问
    • 2.6 配置视图解析器

1 SpringMVC引入

1.1 引言

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。

使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。

1.2 MVC架构

一种编码习惯

1.2.1 概念

名称职责
Model模型:即业务模型,负责完成业务中的数据通信处理,对应项目中的 service和dao
View视图:渲染数据,生成页面。对应项目中的Jsp
Controller控制器:直接对接请求,控制MVC流程,调度模型,选择视图。对应项目中的Servlet

1.2.2 好处

  • MVC是现下软件开发中的最流行的代码结构形态;

  • 人们根据负责的不同逻辑,将项目中的代码分成 M V C 3个层次;

  • 层次内部职责单一,层次之间耦合度低;

  • 符合低耦合 高内聚的设计理念。也实际有利于项目的长期维护。

1.2.3 执行流程【重点】

SpringMVC执行流程
在这里插入图片描述

处理请求和做出响应:servlet(MVC框架底层技术)和过滤器filter(Struts 2)

中央控制器dispatcherservlet (调度程序小程序) 相当于CPU

处理器映射器 handlermapping 接收请求,寻找对应路径

视图解析器

处理器适配器

2 快速入门

2.1 导入依赖

  • spring的核心依赖 spring-context
  • SpringMVC的依赖 spring-webmvc
 <!--  导入Spring的依赖  -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.6</version>
</dependency>
<!--  导入SpringMVC的依赖  -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.6</version>
</dependency>

2.2 配置核心(前端)控制器

作为一个MVC框架,首先要解决的是:如何能够收到请求!

所以MVC框架大都会设计一款前端控制器,选型在 Servlet 或 Filter两者之一,在框架最前沿率先工作,接收所有请求。

此控制器在接收到请求后,还会负责springMVC的核心的调度管理,所以既是前端又是核心。

<?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">
    <!--  配置前端控制器DispatcherServlet  -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--初始化参数(在Servlet初始化的时候可以获取)   希望SpringMVC的配置文件在此刻加载-->
        <init-param>
            <!--配置文件的路径-->
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        
        <!--当tomcat启动的时候,就创建这个Servlet(不一定非要配置)-->
        <load-on-startup>1</load-on-startup>
        
    </servlet>  
    
    
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <!--
              1、完全匹配
                    /aaa     /hello   /user/xxx
              2、通配符匹配
                    /          匹配所有路径     不包含.jsp  (推荐)
                    /*         匹配所有路径
              3、后缀名匹配      现在用restful模式,后缀名匹配现在不常用
                    *.xxx       *.do     *.action
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>  
</web-app>

2.3 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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">
    <!--开启Spring的注解扫描-->
    <context:component-scan base-package="com.ying"/>
    <!--开启SpringMVC的注解扫描-->
    <mvc:annotation-driven />   
</beans>

2.4 创建处理器(Handler)

@Controller
public class TestController {
    @RequestMapping("/t1")
    public void test01(){
        System.out.println("SpringMVC执行了");
    }
}

2.5 测试访问

http://localhost:8080/t1

此时控制台会打印结果,但是会出现404的错误,原因是因为没有配置视图解析器

500 HTTP状态 500 - 内部服务器错误

2.6 配置视图解析器

在springmv的配置文件中加入视图解析器的配置

只能配置一个

  • 如果是前后端分离则无需配置 将统一访问JSON
<!--配置视图解析器(如果是前后端分离则无需配置)-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--前缀:在视图前加上  xxx-->
    <property name="prefix" value="/pages/"/>
    <!--视图解析器后缀配置:在视图后加上  xxx-->
    <property name="suffix" value=".jsp"/>
</bean>
@Controller   //表示当前类是一个控制器,可以用于处理请求和响应
public class TestController {

    @RequestMapping("t1")  // /test01
    public String test01(){
        System.out.println("SpringMVC执行了......");
        return "hello"; //String就是模型视图  内部转发(路径未变,内容变了),自动添加为 "/pages/hello.jsp"
    }
    
        @RequestMapping("t2")
    public String test02(){
        System.out.println("springmvc执行了test02");
        return "hello";
    }
    //前端页面均访问了,并且后端返回对应的SpringMVC执行了......或者springmvc执行了test02
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开心档之C++ 修饰符类型

C 修饰符类型 目录 C 修饰符类型 实例 C 中的类型限定符 C 允许在 char、int 和 double 数据类型前放置修饰符。修饰符用于改变基本类型的含义&#xff0c;所以它更能满足各种情境的需求。 下面列出了数据类型修饰符&#xff1a; signedunsignedlongshort 修饰符 signed、…

Gitlab中Pipeline语法六

Gitlab中Pipeline语法 needs/include/extends nodes 阶段并行 - 可以无序执行作业,无序按照阶段顺序运行某些作业,可以让多个阶段同时运行. - 如果nedds:设置为指向因only/except规则而未实例化的作业,或者不存在,则创建管道时会出现yaml错误. stages:- build- test- depl…

Moviepy模块之视频添加字幕(二)

文章目录前言一、素材1.1 原视频1.2 字幕文件二、视频添加字幕2.1 引入库2.2 加载视频文件2.3 设置字幕的字体、大小、颜色2.4 加载字幕文件2.5 设置字幕位置2.6 将字幕添加到视频中2.7 保存带有字幕的视频文件三、新视频效果总结前言 大家好&#xff0c;我是空空star&#xff…

2023蓝桥杯C++A组题解(第十四届)

面向爆零选手 水平有限&#xff0c;将就着看&#xff0c;有空再补充后5题 目录 &#x1f92f;吐槽 &#x1f61f;A&#xff0c;2067: [蓝桥杯2023初赛] 幸运数 &#x1f61f;B&#xff0c;2068: [蓝桥杯2023初赛] 有奖问答 &#x1f33c;AC DFS &#x1f33c;AC DP &a…

Apache 配置与应用

目录构建虚拟 Web 主机基于域名的虚拟主机1&#xff0e;为虚拟主机提供域名解析2.为虚拟主机准备网页文档3.添加虚拟主机配置4.设置访问控制5.加载独立的配置文件6.在客户机中访问虚拟 Web 主机基于IP地址的虚拟主机基于端口的虚拟主机Apache 连接保持构建Web虚拟目录与用户授权…

基于html+css的盒子展示3

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

[ 应急响应基础篇 ] 使用 Process Explorer 进程分析工具分析系统进程(附Process Explorer安装教程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

《C Primer Plus》第17章复习题与编程练习

《C Primer Plus》第17章复习题与编程练习复习题1. 定义一种数据类型涉及哪些内容&#xff1f;2. 为什么程序清单17.2只能沿一个方向遍历链表&#xff1f;如何修改struct film定义才能沿两个方向遍历链表&#xff1f;3. 什么是ADT&#xff1f;4. QueueIsEmpty()函数接受一个指向…

OpenAI创始人:GPT-4的研究起源和构建心法

OneFlow编译 翻译&#xff5c;杨婷、贾川、徐佳渝 三十年前&#xff0c;互联网&#xff08;Web 1.0&#xff09;时代开启。人们只能在笨重的电脑上用鼠标点击由HTML编写的网页文本&#xff0c;随后开始支持插入图片&#xff0c;可以上传视频&#xff0c;于是有了网络新闻、搜索…

MapReduce之WordCount案例实操

目录 前期准备&#xff1a; 本机测试&#xff1a; mapper阶段&#xff1a; Reduce阶段&#xff1a; Driver类&#xff1a; 集群测试&#xff1a; 前期准备&#xff1a; 因为MapReduce中案例比较多&#xff0c;所以需要单独创建一个工程 准备工作 创建工程后先改maven仓…

ssh远程端口转发

ssh远程转发的原理&#xff1a;内网主机开了一个程序去连接外网的服务器&#xff0c;一直等待外网的服务器来连接。 应用场景 设备 IP 备注 系统 内网电脑C 192.168.10.129 内网&#xff0c;可访问外网。SSH登陆端口为22。 linux 个人电脑A 动态变化 无公网IP Linux…

Java的Idea怎么用ChatGpt,让些代码变丝滑?

发现两款idea的AI插件神器&#xff0c;和一个AI编辑器 1、tabnine https://zhuanlan.zhihu.com/p/343938113 当提示代码出现后&#xff0c;其中 按tab键就可以通用提示出的代码了&#xff0c;alt[ 是换提示代码&#xff0c;试用期限为14天。&#xff08;注意标红的&#xff0…

获美国企业认可,中国大飞机取得重大突破,已具备挑战波音的实力

日前消息指美国通用电气资本航空服务公司订购了20架中国商飞C919客机&#xff0c;这是中国大飞机首次获得美国航空企业的认可&#xff0c;代表着中国大飞机的重大突破&#xff0c;证明中国的大飞机已达到国际先进水平。通用电气资本航空服务公司是全球最大的飞机租赁公司&#…

初学C++,坚决不能挂!

目录 1、C&#xff0b;&#xff0b;相对于C语言的不同 2、类&#xff08;class&#xff09; 3、类与实例&#xff08;对象&#xff09;的关系 4、头文件 5、命名空间 6、输入输出 7、位运算 8、基本数据类型 9、结构体和三目运算符 10、for循环 11、const 12、类型别…

SEEM:微软基于 CV 大模型新作,分割“瞬息全宇宙”

文 | 智商掉了一地交互式视觉分割新作&#xff0c;具有语义感知的新模型~自从 Meta 发布了“分割一切”的 SAM 之后&#xff0c;各种二创如雨后春笋般冒出&#xff0c;昨天微软的一篇论文又在推特上引起讨论&#xff0c;虽然最开始吸引小编的是它的名字——分割“瞬息全宇宙”&…

让技术造福残障人士,让开发助力无障碍

前言 随着互联网技术的快速发展&#xff0c;越来越多的领先技术运用到公益领域中来。运用科技来造福残障人士&#xff0c;比如前几年比较智能化的自动行走轮椅&#xff0c;盲人阅读器&#xff0c;以及聋哑人助听器等&#xff0c;都是通过科技来帮助残障人士方便生活的例子。作为…

OpenAI文档翻译——在不通的场景下如何更好的设计ChatGPT提示词

概述 OpenAI可以被广泛的应用于各种任务&#xff0c;他为各种模型提供使用简单而功能强大的API。你可以输入一些文本作为提示词&#xff0c;OpenAI则会生成对应的提示词补全&#xff0c;在使用过程中这就是会话形式以及能够记住上下文的体现。探索如何生成提示词的最好方法就是…

地图和规则来啦!全国大学生智能汽车竞赛百度创意组正式发布

‍‍「全国大学生智能汽车竞赛」是教育部倡导的大学生科技A类竞赛&#xff0c;是2022年全国普通高校大学生竞赛榜单内竞赛&#xff0c;中国高等教育学会将其列为含金量最高的大学生竞赛之一。在全国数百所高校的支持下&#xff0c;全国大学生智能汽车竞赛至今已成功举办了十七届…

2023AE软件、Adobe After Effects下载、安装教程

最后附下载地址 2023AE软件是一款由Adobe公司开发的视频编辑软件&#xff0c;也被称为Adobe After Effects。它在广告、电影、电视和网络视频等领域广泛应用&#xff0c;用于制作动态图形、特效、合成和其他视觉效果。该软件支持多种视频和音频文件格式&#xff0c;具有丰富的…

一文了解vue3的toRef和toRefs?

文章目录toRef / toRefs首先toRef的使用toRefs的使用&#xff1a;总结reactive定义对象类型<template><h3>姓名&#xff1a;{{ person.name }}</h3><h3>年龄&#xff1a;{{ person.age }}</h3><h3>薪资&#xff1a;{{ person.job.j1.salar…