Spring学习笔记(七)SpringMVC入门

一.什么是Spring MVC

1.什么是MVC(一种思想模式)

M:模型

V:视图

C:控制器

2、Java EE三层架构

在Java EE开发中,系统经典的三层架构包括表现层、业务层和持久层

表现层(Web层)负责接收客户端请求,并向客户端响应结果;

业务层(Service层)负责业务逻辑处理,和项目需求息息相关;

持久层(Dao层)负责和数据库交互,对数据库表进行增删改查。

MyBatis:作为持久层

Spring作为粘合剂处理接口

Spring MVC 作为表现层

3、对Spring MVC在表现层作用的分析

Spring MVC作用于三层架构中的表现层,用于接收客户端的请求并进行响应。Spring MVC中包含了控制器和视图,控制器接收到客户端的请求后对请求数据进行解析和封装,接着将请求交给业务层处理。业务层会对请求进行处理,最后将处理结果返回给表现层。表现层接收到业务层的处理结果后,再由视图对处理结果进行渲染,渲染完成后响应给客户端。

4、特点

a.支持多语言

b.支持多视图

c.易扩展

二、第一个SpringMVC程序

1、新建一个普通的maven工程

2.在文件中找到项目结构,点击加号添加web

(或者直接在pom.xml声明当前是一个maven的web工程,语法:<packaging>war</packaging>)

3、引入Maven依赖:项目创建完成后,为保障项目的正常运行,需要导入项目所需的依赖到项目的pom.xml文件中

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>SpringMVCdemo01</artifactId>
    <version>1.0-SNAPSHOT</version>
<!--   声明当前是一个maven的web工程-->
    <packaging>war</packaging>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>
        <!--        Spring的核心基本包 ioc相关-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.26</version>
        </dependency>
<!--        服务器相关配置-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        <!--依赖范围-->
            <scope>provided</scope>
        </dependency>
        <!--        jdbc相关-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.26</version>
        </dependency>
        <!--        spring事务相关-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.3.26</version>
        </dependency>
        <!--        springAOP相关-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>6.0.9</version>
        </dependency>
        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-aop</artifactId>

            <version>5.2.8.RELEASE</version>

        </dependency>
        <!-- Spring MVC相关 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.8.RELEASE</version> <!-- 版本号根据您的实际情况进行调整 -->
        </dependency>

    </dependencies>
    <build>
    <!--          加入tomcat插件-->
    <plugins>

    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <uriEncoding>utf-8</uriEncoding>
            <port>8080</port> <!-- 访问端口-->
         <!--虚拟项目名-->
            <path>/SpringMVCdemo01</path>    <!-- 访问路径,一般就是你的项目名注意前面有个‘/’-->
        </configuration>
    </plugin>
    </plugins>
    </build>
</project>

 需要注意的是,要在IDEA中使用插件运行Maven项目,除了需要在pom.xml文件中配置对应的插件外,还需要在IDEA中进行项目运行的相关配置,具体操作如下:

单击IDEA工具栏中的“Run”(运行)→“Edit Configurations...”(编辑配置)选项,弹出Run/Debug Configurations对话框。

在Run/Debug Configurations对话框中,单击左上角的“+”按钮,弹出Add New Configurations菜单列表

在Add New Configurations菜单列表中,单击左侧菜单中的“Maven”选项,进入Maven指令的配置界面。

4、配置前端控制器:在项目的web.xml文件中进行Spring MVC前端控制器的配置

<?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>
        <!-- 配置初始化参数,读取Spring MVC的配置文件 --><init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>	</servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

5、配置处理器映射信息和视图解析器:创建Spring MVC的配置文件spring-mvc.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.yx.controller"/>

<!--    视图解析器-->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--       后缀-->
       <property name="suffix" value=".jsp"/>
<!--       前缀-->
       <property name="prefix" value="/WEB-INF/pages/"/>
   </bean>

</beans>

注意前缀<property name="prefix" value="/WEB-INF/pages/"/>的“/”的用法

6、创建处理器:创建处理器FirstController类,用于处理客户端的请求并指定响应时转跳的页面。

 

package com.yx.controller;

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

@Controller
public class FirstController {
    @RequestMapping("/firstController")
    public String sayHello(){
        System.out.println("你好!这是访问的第一个controller");
//     string返回值,默认返回的是视图的名字(视图解析器的前缀+此处的字符串+视图解析器的后缀)
      return "success";
    }
}

7、创建视图(View)页面:创建名称为page的文件夹,并在page文件夹下创建名称为success的jsp文件,用于对客户端请求进行处理后的视图展示、

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<h1>Hello Spring MVC!!!</h1>
<h2>这是你的第一个Spring MVC</h2>

</body>
</html>

8、启动项目,测试应用:项目启动成功后,在浏览器中对处理器进行请求访问,访问地址为localhost:8080/SpringMVCdemo01/firstController,访问后,IDEA控制台打印信息“访问到FirstController!”,并且浏览器跳转到success.jsp页面中,页面内容如下所示。

9、整体项目位置

注意好WEB-INF文件的位置

10.部署maven的快捷键

在idea的最右边找到maven点击开后在插件中找到tomcat7:run,然后右键编辑配置

效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux基本指令(下)

目录 1. less指令 2. head与tail指令 3. find指令 示例 4. grep指令 示例 ​编辑 5. zip/unzip 打包与压缩 示例 ​编辑 6. tar指令 7. find指令&#xff1a; -name 8. echo指令 9. 时间相关的指令 1.在显示方面&#xff0c;使用者可以设定欲显示的格式&#xff…

更详细的软件测试理论基础:流程,开发、测试模型,测试分类,测试用例及其设计方法,缺陷

文章目录 一、测试流程二、开发模型1、 瀑布模型2、增量模型3、快速模型4、其他 三、测试模型1、V模型2、W模型 四、测试分类五、测试用例 test case六、测试用例设计方法1、等价类划分法2、边界值分析法3、因果图法4、判定表法5、正交法6、场景法7、流程分析法8、错误推测法方…

OpenAI回击马斯克的起诉:GPT-4不是AGI,所以没必要开源

前情提要 上一集我们讲到&#xff0c;马斯克起诉了OpenAI&#xff0c;扬言其背叛了公司成立时达成的一项协议&#xff0c;即开发技术的目的是“造福人类”而非利润。 “OpenAI已经变成了微软的一个闭源形态的实际子公司。在其新的董事会领导下&#xff0c;公司不仅在开发&…

FreeCad 有限元分析入门

2024.3 最新版本 0.21.2 FreeCad 有限元分析入门 基本步骤&#xff1a; 一、零件制作 1、创建立方体 2、修改参数 二、建立力学分析 1、为零件附着材料 2、增加固定约束 3、增加均布在表面的受力 4、零件网格化 …

Decoupled Knowledge Distillation解耦知识蒸馏

Decoupled Knowledge Distillation解耦知识蒸馏 现有的蒸馏方法主要是基于从中间层提取深层特征&#xff0c;而忽略了Logit蒸馏的重要性。为了给logit蒸馏研究提供一个新的视角&#xff0c;我们将经典的KD损失重新表述为两部分&#xff0c;即目标类知识蒸馏&#xff08;TCKD&a…

2024 年广东省职业院校技能大赛(高职组)“云计算应用”赛项样题 2

#需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; 某企业根据自身业务需求&#…

第八节 龙晰Anolis 8.8 安装 DDE 桌面环境

一、前言 最小化安装的龙晰 Anolis OS 8.8 是不带图形化界面的&#xff0c;只能使用命令行&#xff0c;有些时候需要用到桌面环境&#xff0c;而DDE (Deepin Desktop Enviroment) 就是很好的桌面环境&#xff0c;它是指龙晰 Anolis 所搭载的中国自主桌面环境&#xff0c;用起来…

常数项级数

定义 级数的形式如下&#xff1a; ∑ n 1 ∞ u n u 1 u 2 u 3 . . . u n . . . \sum_{n1}^{\infin}u_n u_1u_2u_3...u_n... n1∑∞​un​u1​u2​u3​...un​... 这个数列的项数是无穷多个&#xff0c;如果取其前n项 S n u 1 u 2 . . . u n S_n u_1u_2...u_n Sn…

Java集合相关面试题(2024大厂高频面试题系列)

1、说一说Java提供的常见集合&#xff1f;&#xff08;画一下集合结构图&#xff09; 在java中提供了量大类的集合框架&#xff0c;主要分为两类&#xff1a; 第一个是Collection 属于单列集合&#xff0c;第二个是Map 属于双列集合 在Collection中有两个子接口List和Set。…

C#中多语言编程原理及实例解析

文章目录 一、了解C#多语言编程原理1. 通用语言运行库&#xff08;CLR&#xff09;2. 通用类型系统&#xff08;CTS&#xff09;3. 微软中间语言&#xff08;MSIL&#xff09;4. 元数据和反射5. 公共语言规范&#xff08;CLS&#xff09; 二、实例说明 一、了解C#多语言编程原理…

sql基本语法+实验实践

sql语法 注释&#xff1a; 单行 --注释内容# 注释内容多行 /* 注释内容 */数据定义语言DDL 查询所有数据库 show databases;注意是databases而不是database。 查询当前数据库 select database();创建数据库 create database [if not exists] 数据库名 [default charset 字符…

大话设计模式——4.装饰模式(Decorator Pattern)

1.定义 1&#xff09;可以在不改动原有对象代码的情况下扩展对象的功能&#xff0c;通过聚合的方式相较于继承更加灵活。 2&#xff09;UML图 2.示例 汽车有很多装饰可选&#xff0c;如座椅、音响、轮胎等都可以进行自定义组装 1&#xff09;抽象汽车对象 public interfac…

【yolov8部署实战】VS2019环境下使用Onnxruntime环境部署yolov8目标检测|含源码

一、前言 部署yolo项目&#xff0c;是我这几个月以来做的事情&#xff0c;最近打算把这几个月试过的方法&#xff0c;踩过的坑&#xff0c;以博客的形式&#xff0c;分享一下。关于下面动态中讲到的如何用opencv部署&#xff0c;我在上一篇博客中已经详细讲到了&#xff1a;【…

项目-论坛系统

基于Spring前后端分离版本的论坛系统。 1、构建项目结构 common公共类&#xff1a;统一返回结果、全局变量、异常枚举信息config配置类&#xff1a;Swagger&#xff0c;用于自动生成CRUD和基本对象controller控制器类&#xff1a;用于接受前端信息和控制路由dao数据库访问类&…

LeetCode206题:反转链表(python3)

采用递归 class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:cur headpre Nonewhile cur:temp cur.next # 保存下一轮循环的节点cur.next pre # 将当前节点 cur 的指针指向上一个节点 prepre curcur tempreturn pre

前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)

一、前缀和的原理和特点 prefix表示前缀和&#xff0c;前缀和由一个用户输入的数组生成。对于一个数组a[]&#xff08;下标从1开始&#xff09;&#xff0c;我们定义一个前缀和数组prefix[]&#xff0c;满足&#xff1a; prefix有一个重要的特性&#xff0c;可以用于快速生成p…

sql注入之sqli-labs-less-1 错误注入

输入?id1 得到登录页面&#xff1a; 通过order by 函数试探&#xff1a; 5的时候报错 试探到3 的时候返回正确的值&#xff1a; 然后继续注入&#xff1a;?id -1 union select 1,2,3 -- 查看回显点&#xff1a; 开始查看数据库内容&#xff1a;id-1 union select 1,databa…

【C++精简版回顾】17.io流,流中提供的函数

1.流含义 2.流类 3.流对象 4.流对象的函数 举例&#xff1a; 要求&#xff1a;数据结构中经常需要对齐输出数据&#xff0c;应该怎么做&#xff1f; 1.头文件 #include<iomanip> 2.创建表格头 cout << setiosflags(ios::left) << setw(8) << "姓名…

Linux系统忘记root密码重置方法

一、操作系统-麒麟v10 操作方法和Centos系统进入救援模式类似&#xff0c;BMC中重启操作系统&#xff0c;启动界面按e键进入 进入救援模式需要密码 root/Kylin123123 进入编辑内核启动界面&#xff0c;找到以linux开头的那一段&#xff0c;在linux内核信息后面加入单用户模式…

Doris——基础概念 FAQ盘点

基本概念&#xff1a; 基于Apache Doris在读写流程、副本一致性机制、存储机制、高可用机制等概念进行整理&#xff1a; FE&#xff1a;Frontend&#xff0c;即 Doris 的前端节点。主要负责接收和返回客户端请求、元数据以及集群管理、查询计划生成等工作。BE&#xff1a;Back…