Springbootweb快速开发

本文详细介绍了如何使用SpringBoot创建一个基础Web应用,包括创建工程、定义请求处理类、接收请求参数(简单、实体对象、数组和日期),以及响应数据的统一格式化。还涉及了XML文件解析和员工数据处理示例。
摘要由CSDN通过智能技术生成

1.简单的Springbootweb程序入门

1.创建工程,填写模块信息,勾选web开发

2.定义一个请求处理类

controller包下定义一个请求处理类,请求处理路径是/hello

当输入/hello请求路径时,执行hello方法,服务端会返回hello给浏览器

3. 选择主函数下启动类,启动Springboot工程

 4.效果展示

浏览器输入路径/hello时,服务器执行hello方法并返回hello给浏览器

 

2.请求参数的接收

1.原始web程序
原始web获取请求参数

需要创建HttpServletRequest对象,调用getParmeter接收,

并且如果参数不是int,需要进行类型转化

HttpServletRequest

 公共接口类HttpServletRequest继承自ServletRequest。客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。对象包含了客户端请求信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。HttpServletResponse继承了ServletResponse接口,并提供了与Http协议有关的方法  

HttpServletresponse

HttpServletResponse继承了ServletResponse。专门为基于HTTP协议的HTTPServlet 封装、提供响应信息,是响应的抽象。

2.sprintboot方式 直接定义形参接收

3.不同请求参数的接收

 

//参数为简单参数 请求参数名和变量名相同
    public int simpleParm(int id) {

        System.out.println(id);
        return id;
    }

    //参数为简单参数 请求参数名和变量名不同
    @RequestMapping("/simpleDifParam")

    public int simpleDifParm(@RequestParam(name = "id", required = false) int Stuid) {
//@RequestParam(name = " 请求参数名")  Stuid是接收参数名
        System.out.println(Stuid);
        return Stuid;
    }

    @RequestMapping("/simplePolo")
    //参数为实体对象,定义一个类,封装对象
    //传入的请求参数会自动填入形参的user对象属性里面去
    //比如user对象有2个属性,name和age 传入请求参数name="小明" age=20,会自动给Uesr对象属性赋值
    public String simplePolo(User user) {

        System.out.println(user);
        return "ok";
    }

    @RequestMapping("/arrayParam")
    //请求参数名相同,数组接收
    public String arrayParam(String[] task) {

        System.out.println(Arrays.toString(task));
        return "ok";
    }

    @RequestMapping("/listParam")
    // 请求参数名相同,集合接收加入注解@RequestParam
    // http://localhost:8080/listParam?task=java&task=web&task=mysql
    public String listParam(@RequestParam List<String> task) {
//RequestParam
        for (int i = 0; i < task.size(); i++) {
            System.out.println(task.get(i));
        }
        return "ok";
    }
    //参数是日期类型
    //需要使用@DateTimeFormat注解
    @RequestMapping("/dateParam")

    public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd")LocalDateTime time) {
        System.out.println(time);
        return "ok";
    }
    @RequestMapping("/jsonParam")
    //请求参数是json格式时,使用注解@RequestBody,形参定义一个对象,json的key对应对象的属性
    public String jsonParam(@RequestBody User user) {
        System.out.println(user);
        return "ok";
    }

 需要注意参数是实体对象和json时形参都是对象接收,但json格式需要使用注解@RequestBody

4.响应数据

1.ResponseBody

ResponseBody把当前类下面的所有方法返回值返回,如果是实体对象或者集合,以json格式返回

我们定义Controller类时,上面添加的注解@RestController就是隐含Responsebody

@RestController=@Controller+@Responsebody

2.设置统一响应数据的格式

如果返回数据格式不一致,有的是字符串,有的是json格式,就会难以管理,需要按照统一格式返回,便于管理

定义使用Result类返回固定格式代码

Result除了设置属性还要有一些方法

5.统一响应数据格式案例

小项目

自动获取员工数据,以统一格式响应数据,在页面展示

1..导入Emp实体类 导入Emp.xml文件

Emp实体类就是员工类,有员工对应的属性已经构造方法,getset方法

Emp.xml文件提供员工具体数据

2.导入解析XML文件的工具类

工具类内部parse方法把文件(xml)中的数据解析 返回到对应类型的list集合中中

3.导入前端资源

放入static目录下

Springboot项目静态资源(html css js等前端资源)

默认存放目录是clsaapath:/static classpath:/public classpath:/resources

使用Springboot官方项目结构自动创建的resource的static

java目录下存放java

Resource目录存放其他类型的文件

4.编写empcontroller程序

作用:处理请求,响应数据

package com.itheima.controller;

import com.itheima.popo.Emp;
import com.itheima.popo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import until.XmlParserUtils;

import java.util.List;

@RestController
public class EmpController {
    @RequestMapping("/listEmp")
    public Result list() {
        //1.加载解析emp.xml
        String file = getClass().getClassLoader().getResource("emp.xml").getFile();
        List<Emp> emplist = XmlParserUtils.parse(file, Emp.class);
        //XmlParserUtils工具解析文件封装到Emp集合emplist中
        //2.对数据进行转化处理
        //比如把编号转为具体性别
        emplist.stream().forEach(emp -> {
            String gender = emp.getGender();
            if ("1".equals(gender)) {
                emp.setGender("男");
            } else if (
                    "2".equals(gender)
            ) {
                emp.setGender("女");
            }

            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.响应数据  以Result固定的格式类返回
        return Result.success(emplist);
    }
}

5.结果展示

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山河清风悠

你的鼓励就是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值