首页 > 其他分享 >SpringMVC超详细

SpringMVC超详细

时间:2024-07-19 19:57:22浏览次数:10  
标签:RequestMapping SpringMVC System 详细 println out public String

首先SpringMVC项目需要导包

<dependency>
    <groupId>com.jfinal</groupId>
    <artifactId>enjoy</artifactId>
    <version>5.0.3</version>
</dependency>

并且在项目中添加config.SpringBootConfig包,这个包用来进行enjoy配置和整合spring对象。

package com.ape.springwebdemo1.config;

import com.jfinal.template.Engine;
import com.jfinal.template.ext.spring.JFinalViewResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author Mr.WBY
 * @version 1.0
 * @since 2024/7/19
 */
@Configuration
public class SpringBootConfig {

    @Bean(name = "jfinalViewResolver")
    public JFinalViewResolver getJFinalViewResolver() {

        // 创建用于整合 spring boot 的 ViewResolver 扩展对象
        JFinalViewResolver jfr = new JFinalViewResolver();

        // 对 spring boot 进行配置
        jfr.setSuffix(".html");
        jfr.setContentType("text/html;charset=UTF-8");
        jfr.setOrder(0);

        // 设置在模板中可通过 #(session.value) 访问 session 中的数据
        jfr.setSessionInView(true);

        // 获取 engine 对象,对 enjoy 模板引擎进行配置,配置方式与前面章节完全一样
        Engine engine  = JFinalViewResolver.engine;

        // 热加载配置能对后续配置产生影响,需要放在最前面
        engine.setDevMode(true);

        // 使用 ClassPathSourceFactory 从 class path 与 jar 包中加载模板文件
        engine.setToClassPathSourceFactory();

        // 在使用 ClassPathSourceFactory 时要使用 setBaseTemplatePath
        // 代替 jfr.setPrefix("/view/")
        engine.setBaseTemplatePath("/templates/");


        // 更多配置与前面章节完全一样
        // engine.addDirective(...)
        // engine.addSharedMethod(...);

        return jfr;
    }
}

一:请求

@RequestMapping

意义:处理用户的请求,相似于doget与dopost

位置:

类上:一级目录

方法:二级目录

例如:user/save

user/delete

student/save

student/delete

属性:

value = "",path = ""

表示请求路径

method=常量,此请求的类型(get,post),若不设置则此请求适配所有的请求方式

params = ""

限制请求参数,例如:params={"msg1","msg2"}表示请求路径中必须携带参数名为msg1与msg2的参数

注意:

1.超链接默认发送的是get请求

2.所有请求所携带的参数格式均为:key = value

@DeleteMapping删除

@PutMapping 修改

@GetMapping 查询

@PostMapping 新增

@RequestMapping可以点击查看源码

@Target({ElementType.METHOD, ElementType.TYPE})

METHOD==代表修饰方法,TYPE==代表修饰类

@RequestMapping("/one")
public class UserController {
    
    @RequestMapping(value="/init")//二级目录
    public String userInit(){
        System.out.println("==========进入了springMVC的控制器=========");
        return "success";
    }

    @RequestMapping(value="/show1",method ={RequestMethod.POST})
    public String show1(){
        System.out.println("==========进入了springMVC的控制器=========");
        System.out.println("使用post方式发送请求进入");
        return "success";
    }
}

二:请求参数的绑定

springMVC请求参数的绑定

绑定的机制:SpringMVC 绑定请求参数的过程是通过把表单提交请求参数,作为控制器中方法参数进行绑定的

一.支持数据类型:

1.基本类型参数:

包括基本类型和 String 类型

2.POJO类型参数:

包括实体类,以及关联的实体类

3.数组和集合类型参数:

包括 List 结构和 Map 结构的集合(包括数组)

4.使用 ServletAPI 对象作为方法参数

HttpServletRequest

HttpServletResponse

HttpSession

java.security.Principal

Locale

二.使用要求

1.发送请求中携带数据的key与方法参数的name必须一致

2.数据类型合法

@Controller
@RequestMapping("/one")
public class OneController {

    /**
     * 进入one.html页面
     * */
    @RequestMapping("/show")
    public String show(){
        return "one";
    }

    //基本类型和 String 类型作为参数
    @RequestMapping("/show1")
    public String show1(String msg1){
        System.out.println("=====接受到用户发送数据为:"+msg1+"=======");
        return "success";
    }

    @RequestMapping("/show2")
    public String show2(String msg1,int msg2){
        System.out.println("=====接受到用户发送数据为:"+msg1+"=======");
        System.out.println("=====接受到用户发送数据为:"+msg2+"=======");
        return "success";
    }

    //POJO 类型作为参数
    //单一对象
    @RequestMapping("/show3")
    public String show3(Emp emp){
        System.out.println("=====接受到用户发送数据为:"+emp+"=======");
        return "success";
    }

    //@RequestParam
    @RequestMapping("/map")
    public String map(@RequestParam Map map){
        System.out.println(map);
        return "success";
    }

   //POJO 类中包含集合类型参数
    @RequestMapping("/show5")
    public String show5(Dep dep){
        System.out.println("=====接受到用户发送数据为:"+dep+"=======");
        return "success";
    }

    }
}

三:springMVC常用注解

1.@RequestParam

作用:

把请求中指定名称的参数给控制器中的形参赋值。

如果页面标签名称和方法参数名称不一致,可以使用此注解实现

属性:

name属性:设置参数名称

defaultValue属性:设置默认值

required属性:设置是否为必传

@Controller
@RequestMapping("/one")
public class OneController {

    @RequestMapping("/show1")
    public String show1(@RequestParam(name="msg1") String msg){
        System.out.println("=====接受到用户发送数据为:"+msg+"=======");
        return "success";
    }

    @RequestMapping("/show2")
    public String show2(@RequestParam("msg1") String msg, @RequestParam("msg2") int num){
        System.out.println("=====接受到用户发送数据为:"+msg+"=======");
        System.out.println("=====接受到用户发送数据为:"+num+"=======");
        return "success";
    }


    @RequestMapping("/show3")
    public String show4(@RequestParam(name = "uname",defaultValue = "暂无用户") String name){
        System.out.println("账号:"+name);
        return "success";
    }

    @RequestMapping("/test")
    public String test(@RequestParam String name){
        System.out.println("账号:"+name);
        return "success";
    }
  
}

2.@RequestBody

作用:

用于获取"请求体"内容。直接使用得到是 key=value&key=value...

结构的数据,并可以转换为对象

属性:

required:是否必须有请求体。默认值是:true。

@Controller
@RequestMapping("/one")
public class OneController {
    
    @RequestMapping("/show1")
    public String show1(@RequestBody Emp emp){
        System.out.println("=========="+emp+"==========");
        return "success";
    }
}

3.@PathVaribale

作用:

用于绑定 url 中的占位符。例如:请求 url 中 /delete/{id},

这个{id}就是 url 占位符。url 支持占位符是 spring3.0 之

后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志

属性:

value:用于指定 url 中占位符名称。

required:是否必须提供占位符。

Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。

主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,

更易于实现缓存机制等。

Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP 协议里面四个表示操作方式的动词如下:

GET:用于获取资源

POST:用于新建资源

PUT:用于更新资源

DELETE:用于删除资源

@Controller
@RequestMapping("/one")
public class OneController {
     @PostMapping("/show1/{uname}/{pwd}")
    public String show1(@PathVariable("uname") String msg1, @PathVariable("pwd") String msg2){
        System.out.println(msg1);
        System.out.println(msg2);
        return "success";
    }

    @PostMapping("/show2/{uname}/{pwd}")
    public String show2(@PathVariable String uname, @PathVariable String pwd){
        System.out.println(uname);
        System.out.println(pwd);
        return "success";
    }

}

4.@RequestHeader

作用:

用于获取请求消息头。

属性:

value:提供消息头名称

required:是否必须有此消息头

@Controller
@RequestMapping("/two")
public class TwoController {
@RequestMapping("/show1")
    public String show1(@RequestHeader(value="msg1") String msg){
        System.out.println(msg);
        return "success";
    }
}

5.@CookieValue

作用:

用于把指定 cookie 名称的值传入控制器方法参数。

属性:

value:指定 cookie 的名称。

required:是否必须有此 cookie。

@Controller
@RequestMapping("/two")
public class TwoController {
@RequestMapping("/show2")
    public String show2(@CookieValue(value = "JSESSIONID",required = false)
                                    String jsessionid){
        System.out.println(jsessionid);
        return "success";
    }
}

标签:RequestMapping,SpringMVC,System,详细,println,out,public,String
From: https://blog.csdn.net/qq_64669006/article/details/140558451

相关文章

  • Python-request库的详细解析
    引言在现代网络应用中,与服务器进行通信是一个非常基础且重要的功能。Python的requests库是一个非常强大且易于使用的HTTP库,它允许我们发送HTTP请求,与Web服务进行交互。本文将详细介绍requests库的使用,包括其基本概念、常用功能以及一些高级用法。安装requests库在使用req......
  • 最全面最详细的字符集讲解来了!
    1.字符集在计算机科学中,信息的存储和处理都是基于二进制数的,这是因为二进制数在计算机硬件层面上实现起来最为简单和高效。二进制数由两个基本元素组成:0和1,这两个元素可以通过电子器件(如晶体管)的开关状态来轻松表示。而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进......
  • 从零开始部署yolov8到安卓手机详细教程 ——使用YOLOV8大模型开发的物体检测Android手
    1.使用了yolov8大模型来进行物体检测android手机APP⒉.使用了coco数据集进行训练,app可以检测出“人类"∵"自行车"."汽车"∵"摩托车"."飞机","公共汽车"∵"火车","卡车"∵."船","红绿灯","消防栓","停车标志"∵,"停车收费表&......
  • 【windows11】笔记本电脑使用PE工具重装系统超详细步骤及常见问题
    因为一些原因昨天重装了一次系统,本来以为是一次简单快捷的重装,但是我们在重装系统的过程中遇到了一些问题,导致重装之后很多出现了一系列小毛病,一度以为自己没装成功,多次重装等烦恼。下面为大家附上部分教程及一些注意事项,相信大家参考别的教程配合可以很顺利地完成。第五步之......
  • Ubuntu 22.04.4 LTS (linux) Tomcat 下载 安装配置详细教程
    1官网下载下载链接2ubuntu服务器安装#下载wgethttps://dlcdn.apache.org/tomcat/tomcat-9/v9.0.91/bin/apache-tomcat-9.0.91.tar.gz#解压tarzxvfapache-tomcat-9.0.91.tar.gzsudomvapache-tomcat-9.0.91//data/tomcat#配置环境变量sudovi/etc/profile......
  • aippt对接API的详细说明文档
    要获取API--KEY  对接到自己系统或者测试体验可以在官网自己获取:文多多AiPPT|一键搞定PPT (右上角开放平台)以下是详细接口说明大家可以自行查看,学习开放接口线上接口地址:https://chatmee.cnSDKjsdemohttps://github.com/veasion/aipptvuedemohttps://github.......
  • 卷积神经网络【CNN】--卷积层的原理详细解读
    卷积层(ConvolutionalLayer)是卷积神经网络(ConvolutionalNeuralNetwork,CNN)中的核心组件,它通过卷积运算对输入数据进行特征提取。以下是对卷积层的相关概述:一、基本概念定义:卷积层由多个卷积单元组成,每个卷积单元的参数通过反向传播算法优化得到。卷积运算的目的是提取输入......
  • 神仙级AI大模型入门教程(非常详细),从零基础入门到精通,从看这篇开始!
    一.初聊大模型1.为什么要学习大模型?在学习大模型之前,你不必担心自己缺乏相关知识或认为这太难。我坚信,只要你有学习的意愿并付出努力,你就能够掌握大模型,并能够用它们完成许多有意义的事情。在这个快速变化的时代,虽然新技术和概念不断涌现,但希望你能静下心来,踏实地学习。一......
  • FreeRTOS操作系统(详细速通篇)——— 第四章
             本专栏将对FreeRTOS进行快速讲解,带你了解并使用FreeRTOS的各部分内容。适用于快速了解FreeRTOS并进行开发、突击面试、对新手小白非常友好。期待您的后续关注和订阅!目录任务创建和删除1任务创建方式1.1动态任务创建1.2静态任务创建2任务删除函数......
  • FreeRTOS操作系统(详细速通篇)——— 第一章
            本专栏将对FreeRTOS进行快速讲解,带你了解并使用FreeRTOS的各部分内容。适用于快速了解FreeRTOS并进行开发、突击面试、对新手小白非常友好。期待您的后续关注和订阅目录1FreeRTOS简介1.1 什么为FreeRTOS?1.2为什么选择FreeRTOS?1.3FreeRTOS与裸机的区......