Spring06

news/2024/7/24 2:21:46 标签: java, spring boot, spring

一、SpirngMvc的基本概念

        Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet

        MVC(Model View Controller),一种用于设计创建Web应用程序的开发模式

        Model(模型):数据模型,用于数据处理,包括(service和dao)

        View(视图):页面视图,用于展示数据

        Controller(控制器):处理用户发送的请求,调用model完成数据处理,并对view视图进行响应

        Controller接收浏览器发送的请求后,调用 Model(service和dao)处理完数据后,将响应结果返回给View(视图)

二、SpringBoot访问静态资源的特点 

        当我们在类上只加上@Controller注解,而在方法上没有加上@ResponseBody注解时,此时会进行页面跳转

    后端代码:

java">package com.itheima.cotroller;



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




@Controller
public class CustomerController {
    @RequestMapping("/hello2")
    public String hello2() {
        System.out.println("hello springmvc2");
        return "success.html";

    }

}

页面发送请求并得到返回结果:

后端代码中:

return "success.html";

SpringBoot程序就会默认以下路径去寻找:success.html这个页面

src/main/resources/static/ 下找有没有 success.html

src/main/resources/public/ 下找有没有 success.html

src/main/resources/resources/ 下找有没有 success.html

src/main/resources/META-INF/resources/ 下找有没有 success.html

三、通过jar包运行程序 

        SpringBoot程序默认打jar包,当然也可以打war包,官方推荐打jar包。SpringBoot程序jar包中内置了web服务器可以直接运行jar包并访问程序

        命令:java  -jar  jar 包的名称

3.1、将程序打成jar包

        

3.2、cmd进入jar包所在文件夹的命令行 

3.3、输入命令: java  -jar  jar springmvc_01.jar

可以看到此时spring项目就启动了,我们一样可以通过postman或者页面访问到这个spring程序。

需要注意的是SpringBoot项目中Maven依赖里面如果没有加上下面插件的依赖,项目就会报错

java"><plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

 出现报错

四、Springmvc响应字符串或者JSON

 4.1、配置文件中改变虚拟路径、端口号

java">server.servlet.context-path=/springmvc_02
server.port=8080

加上虚拟路径之前的访问路径:

http://localhost:8080/hello2

此时访问路径就会变成:

http://localhost:8080/springmvc_02/hello2

4.2、 Springmvc不进行页面跳转

        4.2.1、返回字符串给前端页面

        如果Controller中方法不想进行页面跳转,在类或者方法上使用@ResponseBody注解,表示该方法不进行页面跳转,将返回值通过响应体响应给客户端

        后端代码:

java">package com.itheima.cotroller;




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




@Controller
@ResponseBody
public class CustomerController {
    @RequestMapping("/hello1")
    public String hello1() {
        System.out.println("hello springmvc1");
        return "你好, springmvc";
    }
    
}

页面发送请求并得到返回结果:返回给页面的是字符串

 4.2.2、返回JAVA对象给前端页面

后端代码:

java">package com.itheima.cotroller;



import com.itheima.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


import java.util.Date;

@Controller
@ResponseBody
public class CustomerController {


    @RequestMapping("/hello3")
    public User hello3() {
        System.out.println("hello springmvc3");
        return new User("卢本伟",20,new Date());

    }

    
}

 

 页面发送请求并得到返回结果:返回给页面的是JSON数据

说明:

Springmvc底层集成了jackson工具,能够自动将java对象转换成json响应给客户端

4.2.3、@RestController注解

        直接使用@RestController注解,同样能完成返回数据,而不进行页面跳转。@RestController 是一个组合注解,同时含有 @Controller@ResponseBody功能 

 

 

五、postman的使用 

5.1、使用postman发送get请求

        点击右上角的params可以输入传入的参数:

        

        例如上面输入:

        key                                                value

        name                                            张益达

        age                                                22

        

        就会在请求行中自动拼接传入的参数, 因为GET请求的请求参数是从请求行传输的,也可以直接在请求行中输入?name=张益达&age=22       

         

5.2、使用postman发送post请求

        Body中的请求体选raw,最右边选JSON

六、过滤器和拦截器之间的区别

1、归属不同: Filter属于Servlet技术,Interceptor属于SpringMVC技术

2、拦截内容不同: Filter拦截请求响应的,Interceptor拦截访问Controller中的方法。

3、执行顺序不同:先执行过滤器,后执行拦截器

过滤器拦截页面的请求和响应,拦截器拦截Java内部访问Controller中的方法。 

 

过滤器详见csdn上自己总结的内容

JavaWeb(十二)-CSDN博客

 

七、SpringMvc的执行流程 

 

 

Restful风格以及其他接收前端参数的方式详见:

 常见接收前端参数的方式_怎么接收前端传过来的参数-CSDN博客


http://www.niftyadmin.cn/n/5333040.html

相关文章

238.【2023年华为OD机试真题(C卷)】火星文计算(模拟-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-火星文计算二.解题思路三.题解代码Python题解代…

修改iview的表格table展开的默认icon和样式

修改前 修改后 修改内容 .title_label_list .ivu-icon-ios-add{font-size: 26px;color: #888888; } .title_label_list .ivu-icon-ios-add:hover{color: #11AAAA; } .title_label_list .ivu-icon-ios-add:before {content: "\F341"; } .title_label_list .ivu-icon-…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能&#xff08;C&#xff09; Baumer工业相机Baumer工业相机NEOAPI SDK和短曝光功能的技术背景Baumer工业相机通过NEOAPI SDK使用相机日志跟踪功能1.引用合适的类文件2.通过NEOAPI SDK使用相机日志跟踪功能3.通…

Golang leetcode151 翻转字符串中的单词 双指针 常规+进阶

翻转字符串中的单词 leetcode151 常规做法 双指针 func reverseWords(s string) string { WordList : []string{} left : 0 L : len(s) //fmt.Println(L)for i, i2 : range s {//去除重复的空格if i > 0 && s[i-1] && i2 {leftcontinue}//不为空格时…

Android Google 开机向导定制 setup wizard

Android 开机向导定制 采用 rro_overlays 机制来定制开机向导&#xff0c;定制文件如下&#xff1a; GmsSampleIntegrationOverlay$ tree . ├── Android.bp ├── AndroidManifest.xml └── res └── raw ├── wizard_script_common_flow.xml ├── wizard_script…

【Python3】【力扣题】392. 判断子序列

【力扣题】题目描述&#xff1a; 【Python3】代码&#xff1a; 1、解题思路&#xff1a;遍历字符串s&#xff0c;使用一个列表依次记录在字符串t中的位置&#xff0c;若没有该字母则返回False&#xff0c;若索引号小于上一个字母的索引号&#xff0c;返回False。否则返回True。…

centos7 arm服务器编译升级安装动态库libstdc++.so.6,解决GLIBC和CXXABI版本低的问题

前言 由于centos7内置的libstdc.so.6版本太低&#xff0c;导致安装第三方包的时候&#xff0c;会报“CXXABI_1.3.8”不存在等问题。 自带的打印如下&#xff1a; strings /usr/lib64/libstdc.so.6 | grep GLIBC strings /usr/lib64/libstdc.so.6 | grep CXXABI 如图 升级 注…

外观模式介绍

目录 一、外观模式介绍 1.1 外观模式定义 1.2 外观模式原理 1.2.1 外观模式类图 1.2.2 模式角色说明 1.2.3 示例代码 二、外观模式的应用 2.1 需求说明 2.2 需求实现 2.2.1 类图 2.2.2 具体实现 2.2.2.1 灯光类 2.2.2.2 电视类 2.2.2.3 空调类 2.2.2.4 外观面板类…