> 文章列表 > 02-参数传递+统一响应结果

02-参数传递+统一响应结果

02-参数传递+统一响应结果

  1. 参数传递:

         -- 简单参数 

 如果方法形参数名称与请求方法名称不匹配,采用@RequestParam注解 

         -- 实体参数

        -- 数组集合参数

        -- 日期参数

        -- JSON参数

        -- 路径参数

2. 统一响应结果

        -- 1. 创建Result类(放到pojo包中)

package demo01.pojo;public class Result {private Integer code;//1 成功,0 失败private String msg;//提示信息private Object data;//数据datapublic Result() {}public Result(Integer code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}/*** 获取* @return code*/public Integer getCode() {return code;}/*** 设置* @param code*/public void setCode(Integer code) {this.code = code;}/*** 获取* @return msg*/public String getMsg() {return msg;}/*** 设置* @param msg*/public void setMsg(String msg) {this.msg = msg;}/*** 获取* @return data*/public Object getData() {return data;}/*** 设置* @param data*/public void setData(Object data) {this.data = data;}public static Result success(Object data){return new Result(1,"success",data);}public static Result success(){return new Result(1,"success",null);}public static Result error(String msg){return new Result(0,msg,null);}public String toString() {return "Result{code = " + code + ", msg = " + msg + ", data = " + data + "}";}
}

        -- 2. 修改接口

//    修改前
//    @RequestMapping("/hello")
//    public String hello(){
//        return "Hello World!";
//    }//    统一响应结果(修改后)@RequestMapping("/hello")public Result hello(){return Result.success("Hello World!");}

案例:获取员工数据,返回统一响应结果,在页面渲染展示

 目录结构:

 1. 在pom.xml 文件中引入dom4j的依赖,用于解析XML文件

        <dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version></dependency>

 2.编写解析XML的工具类XMLParserUtils、对应的实体类Emp、XML文件emp.xml

XMLParserUtils:

package demo01.utils;import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;public class XmlParserUtils {public static <T> List<T> parse(String file , Class<T> targetClass)  {ArrayList<T> list = new ArrayList<T>(); //封装解析出来的数据try {//1.获取一个解析器对象SAXReader saxReader = new SAXReader();//2.利用解析器把xml文件加载到内存中,并返回一个文档对象Document document = saxReader.read(new File(file));//3.获取到根标签Element rootElement = document.getRootElement();//4.通过根标签来获取 user 标签List<Element> elements = rootElement.elements("emp");//5.遍历集合,得到每一个 user 标签for (Element element : elements) {//获取 name 属性String name = element.element("name").getText();//获取 age 属性String age = element.element("age").getText();//获取 image 属性String image = element.element("image").getText();//获取 gender 属性String gender = element.element("gender").getText();//获取 job 属性String job = element.element("job").getText();//组装数据Constructor<T> constructor = targetClass.getDeclaredConstructor(String.class, Integer.class, String.class, String.class, String.class);constructor.setAccessible(true);T object = constructor.newInstance(name, Integer.parseInt(age), image, gender, job);list.add(object);}} catch (Exception e) {e.printStackTrace();}return list;}}

实体类Emp:

package demo01.pojo;public class Emp {private String name;private Integer age;private String image;private String gender;private String job;public Emp() {}public Emp(String name, Integer age, String image, String gender, String job) {this.name = name;this.age = age;this.image = image;this.gender = gender;this.job = job;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getImage() {return image;}public void setImage(String image) {this.image = image;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}@Overridepublic String toString() {return "Emp{" +"name='" + name + '\\'' +", age=" + age +", image='" + image + '\\'' +", gender='" + gender + '\\'' +", job='" + job + '\\'' +'}';}
}

 XML文件emp.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<emps><emp><name>金毛狮王</name><age>55</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/1.jpg</image><!-- 1: 男, 2: 女 --><gender>1</gender><!-- 1: 讲师, 2: 班主任 , 3: 就业指导 --><job>1</job></emp><emp><name>白眉鹰王</name><age>65</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/2.jpg</image><gender>1</gender><job>1</job></emp><emp><name>青翼蝠王</name><age>45</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/3.jpg</image><gender>1</gender><job>2</job></emp><emp><name>紫衫龙王</name><age>38</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/4.jpg</image><gender>2</gender><job>3</job></emp>
</emps>

3. 引入静态页面文件

 emp.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>员工信息</title>
</head><link rel="stylesheet" href="element-ui/index.css">
<script src="./js/vue.js"></script>
<script src="./element-ui/index.js"></script>
<script src="./js/axios-0.18.0.js"></script><body><h1 align="center">员工信息列表展示</h1><div id="app"><el-table :data="tableData" style="width: 100%"  stripe border ><el-table-column prop="name" label="姓名" align="center" min-width="20%"></el-table-column><el-table-column prop="age" label="年龄" align="center" min-width="20%"></el-table-column><el-table-column label="图像" align="center"  min-width="20%"><template slot-scope="scope"><el-image :src="scope.row.image" style="width: 80px; height: 50px;"></el-image></template></el-table-column><el-table-column prop="gender" label="性别" align="center"  min-width="20%"></el-table-column><el-table-column prop="job" label="职位" align="center"  min-width="20%"></el-table-column></el-table></div>
</body><style>.el-table .warning-row {background: oldlace;}.el-table .success-row {background: #f0f9eb;}
</style><script>new Vue({el: "#app",data() {return {tableData: []}},mounted(){axios.get('/listEmp').then(res=>{if(res.data.code){this.tableData = res.data.data;}});},methods: {}});
</script>
</html>

4. 编写Controller程序,处理请求,响应数据

EmpController:

package demo01.Controller;import demo01.pojo.Emp;
import demo01.pojo.Result;
import demo01.utils.XmlParserUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class EmpController {@RequestMapping("/listEmp")public Result list(){
//        1. 加载并解析XML文件String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();
//        此时file是emp.xml的磁盘路径List<Emp> empList =  XmlParserUtils.parse(file, Emp.class);
//        2. 对数据进行转换处理empList.stream().forEach(emp -> { // 此时是个循环,遍历empList集合
//            处理gender 1:男,2:女String gender = emp.getGender();if ("1".equals(gender)) emp.setGender("男");else if ("2".equals(gender)) emp.setGender("女");//            处理job 1:讲师,2:班主任,3:就业指导String job = emp.getJob();if ("1".equals(job)) emp.setJob("讲师");else if ("2".equals(job)) emp.setJob("班主任");else if ("3".equals(job)) emp.setJob("就业指导");});
//        3. 响应数据return Result.success(empList);}
}

 返回结果: