Java开发 - Spring MVC框架初体验(三)

简介: Java开发 - Spring MVC框架初体验

Json格式的响应正文


我们创建一个数据类,根据阿里命名规范,我们也学习下,数据类型的命名有一定规范,数据我们统一放在POJO包下,然后再分为VO,DTO等等,后面有时间再给大家详细说说,也可自行查找了解,这里我们创建一个VO类,用于响应客户端:

package cn.codingfire.springmvc.vo;
public class UserVO {
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

实现setter&getter方法,后面会有一个依赖帮我们来做,不需要我们显示的声明,后面再说。jackson-databind会自动调用属性的Setter / Getter方法。


在controller中添加一个新的方法:

package cn.codingfire.springmvc.controller;
import cn.codingfire.springmvc.vo.UserVO;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/user")
@ResponseBody
public class UserController {
    //http://localhost:8080/springmvc_war_exploded/user/login.page
    @RequestMapping("/login.page")
    public String login() {
        return "login page";
    }
    //http://localhost:8080/springmvc_war_exploded/user/info.page
    @GetMapping("/info.page")
    public UserVO userInfo() {
        UserVO userVO = new UserVO();
        userVO.setUsername("codingfire");
        userVO.setPassword("123456");
        return userVO;
    }
}

重启Tomcat,在浏览器输入新的路径,可以在浏览器看到json格式的数据:

1.png

到这里,正常的接口你已经会写了。但这还没完,我们还要去接受 客户端传递的参数,param属性即将登场。


接收请求的参数


我们新增一个注册方法:

    //http://localhost:8080/springmvc_war_exploded/user/register.page
    @GetMapping("/register.page")
    public UserVO register(String username, String password) {
        UserVO userVO = new UserVO();
        userVO.setUsername(username);
        userVO.setPassword(password);
        return userVO;
    }

重启Tomcat,然后在浏览器输入URL,这里要注意,有参数,get方法的参数你应该是了解的:

1.png

回车之后,发起请求,我们在浏览器看看返回的json数据是不是我们自己传入的:

1.png

非常好,达到了我们的预期。这里要注意 几点:


参数要声明为我们想要的类型,在整个过程中,Spring会尝试去转换参数类型为目标类型,如果转换失败,则会抛出异常。


参数名称也要和后端声明的一致,若是不一致,后端将无法得到请求中传入的参数,值将为null。这些值都由服务器决定,客户端需要严格遵守服务端定下的规则。


如果有必要,可在参数前声明@RequestParam注解,指定新的请求参数名,而不再使用声明的参数名。还可以在此注解中配置required属性,默认true,则客户端必传此参数,false时可不传。还可配置置defaultValue属性,设置默认值。


若是客户端提交参数较多,就需要将参数封装为对象的形式,如:

    @GetMapping("/register.page")
    public UserVO register(UserVO user) {
        UserVO userVO = new UserVO();
        userVO.setUsername(user.getUsername());
        userVO.setPassword(user.getPassword());
        return userVO;
    }

这样可以使代码更加简洁,我们在实际开发中也多会使用此模式。但并不是所有情况都需要封装为对象,如果参数较少,只有几个,则用显示的声明的形式更为直观和方便。可自行斟酌。


关于POJO和Model的命名


1.png

1.png

POJO即Plain Ordinary Java Object,是普通Java对象的意思,所有封装属性的对象的类统称POJO,所有POJO类都需要遵守一定的规则:


实现Serializable接口

属性私有

实现setter&getter方法,由开发工具生成,后面我们可以通过依赖自动非显示的生成

重写hashCode方法,equals方法,toString方法,这个也和前一条一样,由开发工具完成,不需要开发者操心


关于命名,后缀需要添加对应的业务领域的名字,如xxxVO,XXXDTO,且后缀需要大写。

目录
相关文章
|
2天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
12天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
73 13
|
17天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
52 10
|
11天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
49 2
|
20天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
SQL Java 数据库连接
Java面试题日积月累(SSM框架面试题22道)
Java面试题日积月累(SSM框架面试题22道)
97 0
|
5月前
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
70 1
|
5月前
|
SQL Java 数据库连接
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
92 0
|
5月前
|
存储 安全 Java
Java面试题:请解释Java中的泛型集合框架?以及泛型的经典应用案例
Java面试题:请解释Java中的泛型集合框架?以及泛型的经典应用案例
61 0
|
5月前
|
设计模式 存储 缓存
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
65 0