SpringMVC第一阶段:SpringMVC的介绍和使用

news2024/11/26 22:39:03

1、SpringMVC的概述

Spring MVC框架是一个开源的Java平台,为开发强大的基于JavaWeb应用程序提供全面的基础架构支持,并且使用起来非常简单容易。
Spring web MVC框架提供了MVC(模型 - 视图 - 控制器)架构,用于开发灵活和松散耦合的Web应用程序的组件。 MVC模式使应用程序的不同组件(输入逻辑,业务逻辑和UI逻辑)合理有效的分离,同时又有效的将各组件组合一起完成功能。

**模型(Model):**封装了应用程序数据,通常它们将由POJO类组成。

**视图(View):**负责渲染模型数据,一般来说它负责生成客户端浏览器可以解释HTML输出。

**控制器(Controller):**负责处理用户请求并构建适当的模型,并将其传递给视图进行渲染。

2、SpringMVC的核心DispatcherServlet程序

在SpringMVC中有一个非常非常重要的核心组件.叫前端控制器 类名是: DispatcherServlet .
DispatcherServlet 是一个Servlet程序. 用于接收 客户端发送过来全部的请求.然后分发给不同的资源去处理请求。
在这里插入图片描述

3、SpringMVC的第一个Hello示例程序

3.1、SpringMVC——Hello world程序的步骤:

1、创建一个动态的web工程:

在这里插入图片描述

2、导入需要的jar包:

spring-aop-5.2.5.RELEASE.jar
spring-beans-5.2.5.RELEASE.jar
spring-context-5.2.5.RELEASE.jar
spring-core-5.2.5.RELEASE.jar
spring-expression-5.2.5.RELEASE.jar
spring-jcl-5.2.5.RELEASE.jar
spring-web-5.2.5.RELEASE.jar
spring-webmvc-5.2.5.RELEASE.jar

3、在web.xml 中配置前端控制器:

<!--
    DispatcherServlet 是前端控制器.用于接收全部的请求.然后分发给不同资源处理.<br/>
    SpringMVC框架也需要一个 Spring 容器
-->
<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--
        配置 SpringMVC 框架 的 Spring 容器配置文件路径
    -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
	<!--
    让前端控制器在web工程启动的时候创建,并创建Spring容器.
	-->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <!--
        表示接收全部请求
    -->
    <url-pattern>/</url-pattern>
</servlet-mapping>

4、编写Controller控制器:

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

/**
 *@Controller 注解作用相当于 : <br/>
 *  <bean id="helloController" class="com.atguigu.controller.HelloController" /> <br/>
 *  @Controller 表示Controller控制器 <br/>
 */
@Controller
public class HelloController {
    /**
     * @RequestMapping 可以配置一个请求地址给当前方法 <br/>
     * / 表示请求地址为: http://ip:port/工程路径/   *映射*   到web目录    <br/>
     * /hello 表示地址为: http://ip:port/工程路径/hello <br/>
     */
    @RequestMapping(value = "/hello")
    public String hello(){
        System.out.println("SpringMVC Hello 程序");
        // 返回值表示跳转的路径   ===  SpringMVC底层默认是以 请求转发 来进行页面的跳转
        return "/pages/ok.jsp";
    }
}

5、在src 源码目录下创建SpringMVC.xml配置文件

<?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"></context:component-scan>

</beans>

6、准备页面:

在这里插入图片描述

Hello 程序的访问地址是: http://localhost:8080/20_springmvc_hello/hello

3.2、SpringMVC的配置文件的另一种存放方式:

SpringMVC的 配置文件 可以存放两个位置:

第一种: 放在源码目录下

需要在web.xml中去配置 配置文件的路径 , 也就是以下的配置内容:

<!--
    配置 SpringMVC 框架 的 Spring 容器配置文件路径
-->
<init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springmvc.xml</param-value>
</init-param>

第二种: 放在WEB-INF目录下 ( 不需要到web.xml中去配置路径 )

规则如下: 如果SpringMVC的配置文件 放到WEB-INF目录下.则它的配置文件名必须遵守规则如下:
SpringMVC配置文件名: <servlet-name> + -servlet.xml

前端控制器的 名称是 :
在这里插入图片描述

在WEB-INF目录下的配置文件名是 : dispatcher-servlet.xml
在这里插入图片描述

4、视图解析器

视图解析器是SpringMVC框架中一个组件 , 它可以用来解析 Controller类中 业务方法返回字符串 为 请求的视图( 视图就是页面 )。
也就是说. 可以有一个组件用于解析 return "/pages/ok.jsp";
有视图解析器 和 没有视图解析器的时候 , 在Controller控制器 业务 方法中返回的路径是有不同的.。
没有视图解析器的时候:
在业务方法中 需要返回完整的路径 ===>>>> return "/pages/ok.jsp";
有视图解析器的时候 :

<!--
    视图解析器
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--
        完整的返回值: /pages/ok.jsp

        /pages/ 是前缀
       .jsp 是后缀
       在有前缀,后缀的情况下.我们又管文件名叫 : 视图名 ok
     -->
    <!-- prefix 表示前缀 -->
    <property name="prefix" value="/pages/" />
    <!-- suffix 表示前缀 -->
    <property name="suffix" value=".jsp" />
</bean>

那么在 Controller 控制器的业务方法中 返回值 只需要写 视图名即可。
当有了视图解析器之后 , Controller 控制器中的业务方法的返回值 都会和 视图解析器中的前缀和后缀做 字符串拼接操作,再得到完整的路径。

@RequestMapping(value = "/hello")
public String hello(){
    System.out.println("SpringMVC Hello 程序");
    // 返回值表示跳转的路径   ===  SpringMVC底层默认是以 请求转发 来进行页面的跳转
    return "ok";
}

ok就会和前缀后缀做拼接 ====>>>> 前缀+视图名+后缀 得到完整的请求地址.
视图名是 : ok
前缀是 : /pages/
后缀是 : .jsp
完整的路径是 : /pages/ok.jsp

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

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

相关文章

【原创】创建Vue3 ts项目

文章目录 创建Vue3 ts项目工作空间创建vue 项目进入项目目录启动项目 & 停止项目访问成功 创建Vue3 ts项目 工作空间 进入工作空间目录&#xff1a;D:\workspace\vue 创建vue 项目 vue create vt #创建vt项目vue test 选择手动进行配置&#xff1a; 选中下面几个核心…

利用 Mybatis-Plus 的动态数据源实现多数据源配置

目录 一、导入依赖 二、Application.yaml配置文件 三、切换数据源 四、其他方法 4.1 配置多个数据源 4.2 定义Datasource和EntityManager 4.3 在需要使用数据源的地方注入不同的EntityManager 官网&#xff1a;https://baomidou.com/pages/a61e1b/#dynamic-datasource …

vue2实现路由跳转后隐藏底部固定导航栏Tabber的一种方式

在使用vue路由的时候&#xff0c;跳转到某些页面上是不需要展示底部固定的导航栏的&#xff0c;所以在某些特定的页面跳转时候&#xff0c;就需要隐藏底部的导航栏 这里用了一种方式去解决这个问题 1、前提 这里我把底部导航栏做了一个组件的封装&#xff0c;然后在App.vue里…

玩转 LLMs 之基础设施「利刃出鞘」

LLMs 时代已经到来&#xff0c;这个由 ChatGPT 开始的全球化技术浪潮&#xff0c;所经之处&#xff0c;风起云涌。LLMs 之于当下&#xff0c;更像是 iOS 、Android 之于移动互联网时代。开发者沸腾&#xff0c;投资机构争抢&#xff0c;与赛道相关的基础设施建设自然也成为整个…

IOC容器中的核心容器ApplicationContext

文章目录 1 环境准备2 容器2.1 容器的创建方式2.2 Bean的三种获取方式2.3 容器类层次结构2.4 BeanFactory的使用 前面已经完成bean与依赖注入的相关知识学习&#xff0c;接下来我们主要学习的是IOC容器中的核心容器。 这里所说的核心容器&#xff0c;大家可以把它简单的理解为…

聊聊我在三家IT公司的工作经历,C++程序员都在做什么?

我想分享一些关于C程序员工作的经验。我先自我介绍一下&#xff1a;我是一名毕业于普通985大学的程序员&#xff0c;已经工作了5年&#xff0c;但是我曾在三家互联网公司工作过&#xff0c;这些公司都还算是比较有名的互联网公司。 好了&#xff0c;不多说了&#xff0c;进入正…

真题详解(自顶向下)-软件设计(七十六)

真题详解&#xff08;传引用&#xff09;-软件设计&#xff08;七十五)https://blog.csdn.net/ke1ying/article/details/130695214 计算机软件著作权&#xff0c;正确的是_____。 非法进行拷贝、发布或更改软件的人被称为软件盗版者 循环冗余CRC校验&#xff0c;设数据位为k位…

KVM网络管理-创建桥接网络

KVM网络管理-创建桥接网络 分类 网络&#xff1a; nat isolated 接口&#xff1a; bridge 虚拟交换机&#xff1a; linux-bridge(linux) ovs(open-Vswitch) NAT网络拓扑图 仅主机模式网络拓扑图 桥接模式网络拓扑图 在Linux主机上开启vm1&#xff0c;从交换机上把…

第五章 面向对象-6.内部类

内部类 内部类分为: 成员内部类、静态嵌套类、匿名内部类&#xff08;直接new 抽象类&#xff0c;直接new 接口&#xff09;$1 $2。 如果是函数式接口&#xff0c;可以使用lambda表达&#xff0c;这样可以避免new 接口产生内部匿名类 内部类仍然是一个独立的类&#xff0c;在…

接口测试要测试什么?怎么测?我来告诉你

目录 本文主要分为两个部分&#xff1a; 第一部分&#xff1a; 第二部分&#xff1a; 备注&#xff1a; 本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与…

SGI STL(四)——_S_chunk_alloc函数解析

情况一&#xff1a;内存池剩余空间的大小不满足需要分配的内存空间 假设调用为 _S_chunk_alloc(8, 20), 即希望分配8个20B的内存小块构成的chunk块 代码如下 template <bool __threads, int __inst> char* __default_alloc_template<__threads, __inst>::_S_chu…

Ansible 自动化运维工具(二)——Ansible 的脚本(playbook 剧本)

文章目录 一、playbooks 概述以及实例操作1、playbooks 的组成2、操作示例一&#xff1a;3、操作实例二&#xff1a;定义、引用变量4、操作示例三&#xff1a;指定远程主机sudo切换用户5、操作示例四&#xff1a;when条件判断6、操作示例:五&#xff1a;迭代 二、playbook的模块…

怎么把视频压缩变小一点,必须收藏的方法

怎么把视频压缩变小一点&#xff1f;我们发现现在视频在工作中的占比也很大的。当我们拍摄了很多视频后&#xff0c;当然是需要进行后续的编辑和传输啦。但是我们发现视频的进行传输的时候最大的问题就是&#xff0c;视频太大导致无法发送或是发送的时间很慢。现今许多平台都对…

5springboot

SpringBoot 1.SpringBoot是什么 我们知道&#xff0c;从 2002 年开始&#xff0c;Spring 一直在飞速的发展&#xff0c;如今已经成为了在Java EE&#xff08;Java Enterprise Edition&#xff09;开发中真正意义上的标准&#xff0c;但是随着技术的发展&#xff0c;Java EE使…

C++实现图—邻接矩阵,邻接表,深度遍历,广度遍历

目录 1.图的基本概念 2.图的存储结构 2.1邻接矩阵 2.2 邻接表 3.图的遍历 3.1广度优先遍历 3.2图的深度遍历 总结&#xff1a; 1.图的基本概念 图是由顶点集合以及顶点之间的关系组成的一种数据结构&#xff1a;G (V,E),其中顶点集合V{x|x属于某个对象集}是有穷非空集合…

“西湖论剑”四大观察:十年筑梦向未来,数字安全开新局

既有人工智能与安全何去何从的激烈讨论&#xff0c;又有数据安全与数据治理的深度解读&#xff0c;还有数字中国建设背景下安全产业升级的蓝图规划&#xff0c;更有数字安全人才培养的期许与行动……这就是2023 西湖论剑数字安全大会所呈现出的一片热闹景象。 自2012年&#x…

2023全网最全真人总结的常见接口测试面试题,一定不能错过

1、按你的理解&#xff0c;软件接口是什么&#xff1f; 答&#xff1a; 就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。 2、HTTP和HTTPS协议区别&#xff1f; 答&#xff1a; https协议需要到CA&#xff08;Certificate Authority&#xff0c;证书…

理论力学专题:理论力学(物理类)框架

理论力学专题&#xff1a;理论力学&#xff08;物理类&#xff09;框架 拉格朗日方程 虚位移&#xff1a;任意方向的微变化 约束分类&#xff1a; 稳定/不稳定&#xff08;显含时间与否&#xff09;可解/不可解&#xff1a;完整/微分约束&#xff1a; 几何约束&#xff08;完…

F5—创建DDR3内存条DIMM读写测试程序2023-05-16

本文区别于DDR颗粒的配置&#xff0c;记录几个与颗粒配置不同的地方&#xff0c;具体DDR的原理请查看DDR3的应用总结&#xff08;一&#xff09;DDR3的应用总结&#xff08;二&#xff09; 1.确认板卡FPGA型号为xc7k325tffg900 -2&#xff0c;据此创建FPGA工程。 2.添加MIG I…

干货|SPSS方差分析中的简单效应检验(上)

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 今天和大家分享的是包寒吴霜博士生介绍的 SPSS 方差分析中的简单效应检验系列中的第一部分 —— SPSS 方差分析中的简单效应检验&#xff1a;完整教程。 SPSS 是一个入门级的统计分析软件&…