SpringMVC入门篇2 --- 请求与响应

news2024/11/19 6:42:51

目录

1.请求映射路径

在类上面统一设置@RequestMapping注解,统一设置访问路径前缀。
在上文案例的基础上进行修改。

src/main/java/org/example/controller/UserController.java

package org.example.controller;

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

@Controller
@RequestMapping("/user")
public class UserController {
    // 设置当前操作的访问路径
    @RequestMapping("/save")
    // 设置当前操作的返回值类型
    @ResponseBody
    public String save() {
        System.out.println("user save...");
        return "{'module':'springmvc'}";
    }

    @RequestMapping("/delete")
    // 设置当前操作的返回值类型
    @ResponseBody
    public String delete() {
        System.out.println("user delete...");
        return "{'module':'user delete'}";
    }
}

src/main/java/org/example/config/SpringMvcConfig.java

package org.example.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("org.example.controller")
public class SpringMvcConfig {
}

src/main/java/org/example/config/ServletContainerConfig.java

package org.example.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class ServletContainerConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

2.普通请求参数的传递

src/main/java/org/example/controller/UserController.java

package org.example.controller;

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

@Controller
public class UserController {

    @RequestMapping("/commonParam")
    @ResponseBody
    public String commonParam(String name, int age) {
        System.out.println("参数 =>" + name + age);
        return "{'module':'common param'}";
    }
}

请求参数名和形参名不同,可以使用RequestParam()方法。

public String commonParam(@RequestParam("name") String name, @RequestParam("age") int age){
}

使用postman测试接口。  

Get请求 

 

Post请求

3.其它类型的参数的传递

①pojo类、json对象参数传参

src/main/java/org/example/controller/UserController.java

package org.example.controller;

import org.example.domain.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;

@Controller
public class UserController {

    @RequestMapping("/pojoParam")
    @ResponseBody
    public String pojoParam(User user) {
        System.out.println("pojo类参数 =>" + user);
        return "{'module':'pojo param'}";
    }

    @RequestMapping("/pojoParamForJson")
    @ResponseBody
    public String pojoParamForJson(@RequestBody User user) {
        System.out.println("json对象参数 =>" + user);
        return "{'module':'pojo for json param'}";
    }
}

src/main/java/org/example/domain/User.java

package org.example.domain;

public class User {
    private String name;
    private int age;

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

json对象传参需要在pom.xml中额外导入jackson-databind依赖,并且在配置文件中使用EnableWebMvc注解,用于json数据的自动类型转换。

src/main/java/org/example/config/SpringMvcConfig.java 

package org.example.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@ComponentScan("org.example.controller")
@EnableWebMvc
public class SpringMvcConfig {
}

 

②日期型参数传递

src/main/java/org/example/controller/UserController.java

package org.example.controller;

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

import java.util.Date;

@Controller
public class UserController {

    @RequestMapping("/dateParam")
    @ResponseBody
    public String pojoParam(Date date,
                            @DateTimeFormat(pattern = "yyyy-MM-dd") Date date1,
                            @DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss") Date date2) {
        System.out.println("参数date =>" + date);
        System.out.println("参数date1 =>" + date1);
        System.out.println("参数date2 =>" + date2);
        return "{'module':'date param'}";
    }
}

 

4.响应

响应页面、文本数据、POJO对象

src/main/java/org/example/controller/UserController.java 

package org.example.controller;

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

@Controller
public class UserController {

    @RequestMapping("/toJumpPage")
    public String toJumpPage(){
       System.out.println("跳转页面");
       return "page.jsp";
    }

    @RequestMapping("/toText")
    @ResponseBody
    public String toText(){
        System.out.println("返回文本数据");
        return "response text";
    }

    @RequestMapping("/toJsonPOJO")
    @ResponseBody
    public User toJsonPOJO(){
        System.out.println("返回json对象数据");
        User user = new User();
        user.setAge(16);
        user.setName("lisi");
        return user;
    }
}

 src/main/webapp/page.jsp

<html>
<body>
<h2>This is page.jsp</h2>
</body>
</html>

其它

请求的url默认要有一个项目名称xxx的前缀,比如:http://localhost:8080/xxx/commonParam。想删掉这个前缀,需要配置一下,如下图:

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

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

相关文章

寻寻觅觅,彩电厂商能否“智”取未来?

彩电业&#xff0c;还能不能好&#xff1f; 电视行业的发展&#xff0c;一直伴随着漫长的价格战。从黑白到彩电再到超大屏&#xff0c;从CRT到平板再到液晶&#xff0c;在每一轮技术革新之后&#xff0c;市场总会经历从落到起&#xff0c;从起到落的循环&#xff0c;然后陷入价…

重磅!2023年影响因子正式发布 , Nature/Science等顶刊普遍下降 (附名单下载)~

2023年6月28日&#xff0c;科睿唯安&#xff08;Clarivate Analytics&#xff09;发布了最新年度期刊引证报告(JCR), 其中包含我们所关注的最新影响因子(Impact Factor, IF). 科研界对每年影响因子发布可谓是翘首以待&#xff0c;据小编统计发现&#xff0c;今年的影响因子普遍…

安科瑞故障电弧探测器在建筑电气的设计与应用

安科瑞 崔丽洁 【摘要】&#xff1a;电气设备是建筑中不可缺少的一部分&#xff0c;具有较为重要的作用和意义&#xff0c;在应用过程中不仅能够提升建筑本身实用性能&#xff0c;而且可为消费者提供更加优良的生活环境。但设备一旦在运行过程中出现故障&#xff0c;不仅会影响…

使用python3的sqlalchemy+sqlcipher3对sqlite3数据加密,使用pysqlcipher3编译打建环境,并写项目测试

一、背景 最近有个想法&#xff0c;想写一个软件&#xff0c;前期本来想用java的springboot加vue来实现&#xff0c;数据库选sqlite来存储&#xff0c;但在用spingboot框架搭好之后&#xff0c;感觉这款软件更适合用python来写&#xff0c;java不适windows桌面系统&#xff0c…

Spring Boot 中的 Environment

Spring Boot 中的 Environment 在 Spring Boot 中&#xff0c;Environment 是一个重要的组件&#xff0c;用于管理应用程序的配置。它是一个接口&#xff0c;提供了访问应用程序配置属性的方法。在本文中&#xff0c;我们将深入探讨 Spring Boot 中的 Environment&#xff0c;…

Git基本操作总结

0.Git操作关系图 1.初次创建仓库 1)git ini&#xff08;初次提交时使用&#xff0c;项目中会生成.git文件&#xff09; 2)git add . 3)git commit -m “提交代码” 4)git remote add origin “http://xxx.git”&#xff08;关联远程主机&#xff09; / git remote rm origin …

服务器数据恢复-NetApp FAS存储误删文件夹的数据恢复案例

NetApp存储故障&分析&#xff1a; 某公司一台NetApp存储&#xff0c;工作人员误操作删除一个重要的文件夹。 虽然被删除已经有一段时间了&#xff0c;但是根据NetApp文件系统WAFL的特点&#xff0c;数据被覆盖的可能性不大。 NetApp存储数据恢复过程&#xff1a; 1、由于不…

自学黑客(网络安全),一般人我劝你还是算了吧(自学网络安全学习路线--第二十章 欺骗攻击及防御技术上)【建议收藏】

文章目录 一、自学网络安全学习的误区和陷阱二、学习网络安全的一些前期准备三、自学网络安全学习路线一、概述二、IP欺骗及防御技术1、基本的IP欺骗2、源路由攻击3、IP欺骗的高级应用——TCP会话劫持4、TCP三步握手连接建立5、TCP会话劫持过程6、IP欺骗攻击的防御7、防范源路由…

【实用工具】MapStruct—性能无限接近原生手写的对象转换工具

文章目录 优秀借鉴 1、引入2、什么是MapStruct2.1、概述2.2、横向对比2.3、优势 3、快速入门3.1、Maven3.2、POJO3.3、统一映射接口3.4、业务映射接口3.5、测试3.6、输出 4、简单分析5、拓展使用 优秀借鉴 What is a Data Transfer Object (DTO)?Java bean mappings, the easy…

多元回归预测 | Matlab北方苍鹰算法(NGO)优化极限学习机ELM回归预测,NGO-ELM回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab北方苍鹰算法(NGO)优化极限学习机ELM回归预测,NGO-ELM回归预测,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %% 清…

HTTP模式下STM32程序远程升级设计

针对嵌入式终端设备架设分散、数量庞大以及应用程序更新迭代速度快带来的程序升级困难局面&#xff0c;运用STM32微控制器的在应用中编程&#xff08;IAP&#xff09;原理&#xff0c;设计了通过以太网远程升级程序的方案。 HTTP协议和LwIP协议的使用&#xff0c;不仅让整个方…

安装mmdetection2.22(windows下)

安装mmdetection2.22 确定版本安装mmcv1.4安装mmdetection测试方案1方案2 确定版本 安装mmcv1.4 首先.cuda,pytorch得安装好&#xff0c;这里我拷贝pt1.8虚拟环境 安装mmcv1.4 安装mmdetection 参考文章 下载 cd E:\Code\mmdetection\mmdetection-2.22.0 pip install -r…

机械臂笛卡尔空间轨迹规划

目录 1 引言 2 任务位置规划 2.1直线轨迹规划 2.2圆弧轨迹规划 (1)进行第一个步骤&#xff1a; (2) 进行第二步骤&#xff1a; &#xff08;3&#xff09;进行第三个步骤&#xff1a; &#xff08;4&#xff09;进行第四个步骤&#xff1a; 1 引言 随着6R机械人的使用…

设备通过ehome接入到EasyCVR后,通道数量显示不全是什么原因?

EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。 有用…

【LeetCode】HOT 100(19)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

linux修改oracle sys密码

忘记了sys密码 su - oracle&#xff1b; sqlplus / as sysdba; alter user system identified by test; navicat测试连接

【软件测试三】测试用例篇

目录 1.测试用例的基本要素 2.测试用例的给我们带来的好处 3.设计测试用例的万能公式 3.1.水杯的测试用例 3.2.微信发送朋友圈的测试用例 4.设计测试用例的方法 基于需求设计的测试用例 1.等价类 2.边界值 3.判定表 4.正交法 1.正交表表达式 2.特点&#xff1a; …

【OSI体系结构】网络杂谈(14)之OSI体系结构精准理解

涉及知识点 什么是OSI体系结构&#xff0c;OSI体系结构的概念&#xff0c;网络协议三要素&#xff0c;应用层&#xff0c;表示层&#xff0c;会话层&#xff0c;传输层&#xff0c;表示层&#xff0c;数据链路层&#xff0c;物理层&#xff0c;开放系统互连参考模型各层的功能…

CRM系统助力医疗机构数字化营销全链路,让获客和留存更简单

在数字经济背景下&#xff0c;医疗行业面临经营、管理、组织变革升级的迫切需求。伴随云计算、大数据、物联网、5G、人工智能等数字化技术的创新应用&#xff0c;加速推动了国内医疗机构数字化转型地落地。后疫情时代下&#xff0c;如何展望未来、寻找医疗健康行业重回增长轨道…

原生DOM与组件绑定 原生DOM事件和自定义事件

1. 原生DOM可以绑定原生DOM系统事件 2. 组件标签可以绑定系统事件&#xff08;不起作用&#xff0c;因为属于自定义事件&#xff09;------ .native &#xff08;可以把自定义事件变为原生DOM事件&#xff09; 3. 原生DOM绑定自定义事件 ---无意义&#xff1a;因为没有办法触…