IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringCloud -> 正文阅读

[Java知识库]SpringCloud

🍿*★如果文章对你有帮助【关注👍点赞??收藏?】一起努力!★* 🍿

🧑?🎓 个人主页:花棉袄

📖 本章内容:【Spring】📺学习视频推荐🗒?配套代码📝官方文档
👑 版权: 本文由【花棉袄】原创🟠在CSDN首发🟠需要转载请联系博主

🏰SpringMVC概述

?🏰SpringMVC是基于Servlet封装的用于实现MVC控制的框架,实现前端和服务端的交互。
?🏰SpringMVC是基于Spring的扩展、提供了一套完善的MVC注解
?🏰SpringMVC对RESTful URL设计方法提供了良好的支持
?🏰SpringMVC在数据绑定、视图解析都提供了多种处理方式,可灵活配置


🥦SpringMVC本质工作

?🥦接收并解析请求
?🥦处理请求
?🥦数据渲染、响应请求


🍵框架部署

?🍵基于Maven创建一个web工程
??💜SpringMVC是一个web框架,应用在web工程中
??💜添加webapp目录并创建WEB-INF目录
??💜打包方式改成war
在这里插入图片描述??💜首先通过组件的方式添加tomcat
在这里插入图片描述
??💜配置tomcat用来启动项目
在这里插入图片描述
?🍵添加SpringMVC依赖

?🧡spring-context
?🧡spring-aspects
?🧡spring-jdbc
?🧡spring-test
?🧡spring-web
?🧡spring-webmvc

	 <properties>
        <spring.version>5.2.13.RELEASE</spring.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

    </dependencies>

?🍵创建SpringMVC配置文件
??添加MVC命名空间

<?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:aop="http://www.springframework.org/schema/aop"
       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/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
	<!--IoC采用注解配置-->
    <context:annotation-config/>
    <context:component-scan base-package=""/>

    <!--  声明MVC使用注解驱动  -->
    <mvc:annotation-driven/>

</beans>

?🍵在web.xml中配置SpringMVC的前端控制器
?SpringMVC提供了一个名为DispatcherServlet的类(SpringMVC前端控制器),用于拦截用户请求交由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_3_1.xsd"
         version="3.1">

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>

?如果出现下面这个问题需要进行配置
在这里插入图片描述
?web.xml 是部署描述器,不能直接拷贝,需要进行配置
在这里插入图片描述


🍥框架使用

?在SpringMVC中,我们把接收用户请求、处理用户请求的类称之为Controlelr(控制器)

?🍥创建控制器
????创建控制器类

????创建一个名为com.qfedu.controllers的包(包需要在Spring注解扫描的范围内)
????创建一个类(无需做任何的继承和实现)
????在类上添加@Controller注解声明此类为SpringMVC的控制器
????在类上添加@RequestMapping("url")声明此控制器类的请求url(可以省略)

@Controller
@RequestMapping("/book")
public class BookController {

    @RequestMapping("/add")
    public void addBook(){
        System.out.println("---book akdd");
    }  
}

访问:http://localhost:8080/springmvc/book/add
?🍥静态资源配置
????/* 和 / 的区别
???/* 拦截所有的HTTP请求,包括.jsp的请求,都做为控制器类的请求路径来处理
???/ 拦截所有的HTTP请求,但不包括.jsp的请求,不会放行静态资源的请求(html/css/js/图片)
????静态资源放行配置

<!--配置静态资源放行-->
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/imgs/**" location="/imgs/"/>
<mvc:resources mapping="/pages/**" location="/pages/"/>

🧆前端提交数据到控制器

?🧆表单提交
??表单提交:输入框需要提供name属性,SpringMVC控制器是通过name属性取值的

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
    <title>Title</title>
    <link rel="stylesheet" href="css/style.css">
</head>

<body>
    <h3>添加图书</h3>
   <form action="book/add" method="post">
   	 <p>图书名称:<input type="text" name="name"/></p>
   	 <p>图书作者:<input type="text" name="author"/></p>
   	 <p>图书价格:<input type="text" name="price"/></p>
   	 <p><input type="submit" value="提交"/></p>
	</form>
</body>
</html>

?🧆URL提交

<h3>超链接提交</h3>
<a href="book/get?name=Java">URL提交</a>

?🧆AJAX提交
??AJAX提交:请求行、请求头、请求体都可以用来传值

<h3>AJAX提交</h3>
<input type="button" value="ajax提交" id="btn1"/>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
    $("#btn1").click(function(){
        var obj = {};
        obj.bookName = "Python";
        obj.bookAuthor="杰哥";
        obj.bookPrice = 2.22;

        var s = JSON.stringify(obj);

        $.ajax({
            url:"book/update",
            type:"post",
            contentType:"application/json",
            data:s,
            success:function(res){
                console.log(res);
            }
        });
    });
</script>

🍑控制器接收前端提交的数据

?🍑 @RequestParam 接收请求行传值

💜 表单提交
💜 URL提交
💜 $.ajax()请求的url传值
💜 $.post()中的{}传值
💜 $.get()中的{}传值

??前端提交数据

<form action="book/add" method="post">
    <p>图书名称:<input type="text" name="name"/></p>
    <p>图书作者:<input type="text" name="author"/></p>
    <p>图书价格:<input type="text" name="price"/></p>
    <p><input type="submit" value="提交"/></p>
</form>

??控制器接收数据

/*接收请求行数据*/
@RequestMapping("/add")
public void addBook(@RequestParam("name") String a,
                    @RequestParam("author") String b,
                    @RequestParam("price") double c){
    System.out.println("---book add");
    System.out.println(a);
    System.out.println(b);
    System.out.println(c);
}

🚨注意如果控制器方法中接收数据的参数名与请求行传值的key一致,则@RequestParam注解可省略

?🍑 @RequestHeader:接收请求头传递的数据

??前端提交数据

<input type="button" value="ajax提交" id="btn1"/>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
        $("#btn1").click(function(){
            $.ajax({
                url:"book/get",
                type:"post",
                headers:{
                    token:"ajax:headers"
                },
                success:function(res){
                    console.log(res);
                }
            });
        });
</script>

??控制器接收数据

@RequestMapping("/get")
    public void getName(@RequestHeader("token") String token) {
        System.out.println(token);
 }

?🍑 @RequestBody:注解用于接收请求行传递的数据
??前端提交数据

<input type="button" value="ajax提交" id="btn1"/>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
        $("#btn1").click(function(){
            var obj = {};
            obj.bookName = "Python";
            obj.bookAuthor="杰哥";
            obj.bookPrice = 2.22;

            var s = JSON.stringify(obj); //将对象转换成JSON格式
      
            $.ajax({
                url:"book/update",
                type:"post",
                contentType:"application/json",
                data:s,   //如果data的值为json格式字符串,contentType必须设置为"application/json"
                success:function(res){
                    console.log(res);
                }
            });
        });
</script>

??控制器接收数据

 @RequestMapping("/update")
    public void update(@RequestBody String param) {
        Map maps = JSON.parseObject(param);
        for (Object obj : maps.keySet()){
            System.out.println("key为:"+obj+"值为:"+maps.get(obj));
        }
    }

?🍑
??前端提交数据

??控制器接收数据
?🍑


🍵


🌸


🍅


🍎


🥭


🍍?


🍌


🍏往期回顾

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

🍵往期回顾🍵💜🤎地址💜🤎
??Java学习路线??👉????????????👈
🤎MyBatis参考手册🤎 👉🤎🤎🤎🤎🤎🤎👈
💛Spring参考手册💛👉💛💛💛💛💛💛👈
💙Mybatis-Plus💙👉💙💙💙💙💙💙👈
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-15 11:30:57  更:2022-05-15 11:31:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:57:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码