以POJO获取请求参数

378 阅读1分钟

前言:

在做一个springmvc的demo中浏览器报了一下错误,我定义到POJO寻找错误

image.png

一.初识

1.什么是POJO

POJO(Plain Ordinary Java Object)简单的Java对象

实际就是普通JavaBeans,使用POJO名称是为了避免和EJB(企业Java Beans)混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

在此文章中,我将用POJO来获取前端数据,传入Controller方法,实现数据库操作

二.POJO实现

2.实现POJO

相比@RequestParam注解以及ServletAPI的request.getParameter方法。以POJO方式实现参数在面对获取多个数据的情况下,它显得更加简单。

想要实现,首先应有一个类加上你的set方法以及对应的构造器, 其次在控制器方法的形参位置设置一个实体类类型的形参。若此时若浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值

类:

image.png

image.png

Controller方法

@RequestMapping(value = "/addCat",method = RequestMethod.POST)
//JGSCat实体类
public String addCat(JGSCat jgsCat){
    //添加数据的方法
    boolean add = jgsCatService.add(jgsCat);
    if (add){
        return "index";
    }
    return "add";
}

HTML页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>添加界面</title>
</head>
<body>
<table>
    <form th:action="@{/addCat}" method="post">
        name:<input type="text" name="catName"><br>
        gender:<input type="radio" name="gender" value="1">male
        <input type="radio" name="gender" value="0">female<br>
        peculiarity:<input type="text" name="peculiarity"><br>
        status:<input type="text" name="status"><br>
        place:<input type="text" name="place"><br>
        <input type="submit" value="add"/><br>
</table>
</body>
</html>

三:bug原因

出现这个bug的原因是因为没有在类中设置set方法,上图是已经修改过的。

POJO的实现原理简单一点来说就是请求参数名若与类属性名一致的话,就会调用set方法去给属性赋值