SpringBoot 入门之响应封装类配置

目录

1. springboot是什么? 

2. 入门实例 - HelloWorld 

 2.1 搭建一个springboot项目 

 2.2 入门实例 - HelloWorld 

3. springboot的配置修改

 3.1 修改内置服务器端口号 

 3.2 在访问项目路径加上项目名

4. 响应封装类配置

 4.1 原始我们将数据 响应 是这样的

 4.2 响应封装类 (简易开发!类型通用助开发)


1. springboot是什么? 

Spring Boot它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具

同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等)
Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑

  • 注1:敏捷式开发
  • 注2:spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,
             就像maven整合了所有的jar包,spring boot整合了所有的框架 

2. 入门实例 - HelloWorld 

  2.1 搭建一个springboot项目 

  

 2.2 入门实例 - HelloWorld 

  2.2.1 在com.jmh.spring包下新建一个子包 controller

  2.2.2 在controller包下新建一个HelloWorldController类开始编写代码

package com.jmh.springboot.controller;

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

/**
 * @author 蒋明辉
 * @data 2022/9/26 16:03
 */
@RestController
public class HelloWorldController {
    
    @RequestMapping("/helloWorld")
    public String demo01(){
        return "HelloWorld";
    }
    
}

  2.2.3  运行启动入口类的main方法

网页输入 http:localhost:8080/helloWorld 访问 HelloWorld 

  •  注1:包和类不能乱改,只能在com.jmh.springboot建子包,因为程序只加载       Application.java所在包及其子包下的内容
 com.zking.springboot
           controller
           service
           mapper
           model
  •  注2:内嵌的Tomcat 

1. 使用内嵌Tomcat的好处
       web应用之间互不影响(springcloud)
          外置
2. 访问地址简化
       http://localhost:8080/mvc/xxx
          内置
       http://localhost:8080/xxx 

3. springboot的配置修改

  3.1 修改内置服务器端口号 

         application.properties 配置文件添加以下内容

 server.port=8081

 3.2 在访问项目路径加上项目名

        application.properties 配置文件添加以下内容

server.servlet.context-path=/springboot

 运行启动入口类的main方法

 

 网页输入 http:localhost:8081/springboot/helloWorld 访问 HelloWorld 

4. 响应封装类配置

  • 实体类  Book
package com.jmh.springboot.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author 蒋明辉
 * @data 2022/9/26 16:46
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Book {

    private int id; //编号
    private String name; //名称
    private float price; //价格
}

  4.1 原始我们将数据 响应 是这样的

  HelloWorldController

package com.jmh.springboot.controller;

import com.jmh.springboot.model.Book;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 蒋明辉
 * @data 2022/9/26 16:03
 */
@RestController
public class HelloWorldController {


    /**
     * 增加
     */
    @RequestMapping("/addBook")
    public Map<String,Object> add(Book book){
        Map<String, Object> map = new HashMap<>();
        try {
            map.put("code",200);
            map.put("msg","增加成功");
        }catch (Exception e){
            map.put("code",500);
            map.put("msg","增加失败");
        }
        return map;
    }

    /**
     * 删除
     */
    @RequestMapping("/delBook")
    public Map<String,Object> delBook(Book book){
        Map<String, Object> map = new HashMap<>();
        try {
            map.put("code",200);
            map.put("msg","删除成功");
        }catch (Exception e){
            map.put("code",500);
            map.put("msg","删除失败");
        }
        return map;
    }

    /**
     * 编辑
     */
    @RequestMapping("/editBook")
    public Map<String,Object> editBook(Book book){
        Map<String, Object> map = new HashMap<>();
        try {
            map.put("code",200);
            map.put("msg","编辑成功");
        }catch (Exception e){
            map.put("code",500);
            map.put("msg","编辑失败");
        }
        return map;
    }

    /**
     * 查询单个
     */
    @RequestMapping("/querySingleBook")
    public Book querySingleBook(Book book){
        return Book.builder().id(1).name("金梅瓶").price(99f).build();
    }

    /**
     * 查询全部
     */
    @RequestMapping("/queryBookAll")
    public List<Book> queryBookAll(Book book){
        List<Book> list = new ArrayList<>();
        list.add(Book.builder().id(1).name("金梅瓶").price(99f).build());
        return list;
    }


}
  •  缺点!!!数据类型太多不通用不方便开发!!!

 4.2 响应封装类 (简易开发!类型通用助开发)

  PageBean

package com.jmh.springboot.utils;

import org.springframework.stereotype.Component;

import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

public class PageBean{

	//页码
	private int page=1;
	//每页显示多少条记录
	private int rows=10;
	//总记录数
	private int total=0;
	//是否分页,分页标记,默认分页
	private boolean pagintaion=true;
	//上一次的请求路径
	private String url;
	//上一次的请求参数
	private Map<String,String[]> map;
	
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public Map<String, String[]> getMap() {
		return map;
	}
	public void setMap(Map<String, String[]> map) {
		this.map = map;
	}
	public int getPage() {
		return page;
	}
	public void setPage(int page) {
		this.page = page;
	}
	public int getRows() {
		return rows;
	}
	public void setRows(int rows) {
		this.rows = rows;
	}
	public int getTotal() {
		return total;
	}
	public void setTotal(int total) {
		this.total = total;
	}
	public boolean isPagintaion() {
		return pagintaion;
	}
	public void setPagintaion(boolean pagintaion) {
		this.pagintaion = pagintaion;
	}
	public PageBean() {
		super();
	}
	
	public void setPage(String page) {
		if(null!=page&&!"".equals(page))
			this.page=Integer.parseInt(page);
	}
	public void setRows(String rows) {
		if(null!=rows&&!"".equals(rows))
			this.rows=Integer.parseInt(rows);
	}
	public void setPagintaion(String pagination) {
		if(null!=pagination&&!"".equals(pagination))
			this.pagintaion=Boolean.parseBoolean(pagination);
	}
	
	/**
	 * 获取sql语句的开始查询位置
	 * @return
	 */
	public int getStartIndex() {
		//(1-1)*10=0   limit 0,10
		//(2-1)*10=10  limit 10,10
		return (this.page-1)*this.rows;
	}
	
	/**
	 * 获取最大页码
	 * @return
	 */
	public int getMaxPager() {
		int maxPager=this.total/this.rows;
		if(this.total%this.rows!=0)
			maxPager++;
		return maxPager;
	}
	
	/**
	 * 上一页
	 * @return
	 */
	public int getProviousPager() {
		int provPager=this.page-1;
		if(provPager<=1)
			provPager=1;
		return provPager;
	}
	
	/**
	 * 下一页
	 * @return
	 */
	public int getNextPager() {
		int nextPager=this.page+1;
		if(nextPager>=getMaxPager())
			nextPager=getMaxPager();
		return nextPager;
	}
	
	public void setRequest(HttpServletRequest req) {
		String page=req.getParameter("page");
		String rows=req.getParameter("rows");
		String pagination=req.getParameter("pagination");
		
		//设置参数
		this.setPage(page);
		this.setRows(rows);
		this.setPagintaion(pagination);
		//设置url请求路径
		this.url=req.getRequestURI();
		//设置请求参数
		this.map=req.getParameterMap();
	}
	
	@Override
	public String toString() {
		return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagintaion=" + pagintaion
				+ ", url=" + url + ", map=" + map + "]";
	}


	
	
	
	
	
	
}

 PageAspect 

package com.zking.ssm.aspect;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zking.ssm.util.PageBean;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
@Aspect
public class PageAspect {

    //环绕通知:前+后
    //切入点:* *..*Service.*Pager(..)  代表多个连接点集合
    //* 代表方法返回值不限
    //*.. 代表包名不限
    //*Service 代表以Service结尾的类或者是接口
    //*Pager   代表以Pager结尾的方法
    //(..)    代表方法的参数不限
    //适配器=通知+切入点
    @Around(value="execution(* *..*Service.*Pager(..))")
    public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable {
        //获取目标的执行参数
        Object[] params = joinPoint.getArgs();
        //定义PageBean对象
        PageBean pageBean=null;
        //循环参数
        for (Object param : params) {
            //判断参数的类型是否是PageBean
            if(param instanceof PageBean){
                pageBean= (PageBean) param;
                break;
            }
        }

        //判断是否分页
        if(null!=pageBean&&pageBean.isPagintaion())
            PageHelper.startPage(pageBean.getPage(),pageBean.getRows());

        //执行目标方法
        Object returnValue = joinPoint.proceed(params);

        if(null!=pageBean&&pageBean.isPagintaion()) {
            if(returnValue instanceof List){
                List list= (List) returnValue;
                PageInfo pageInfo = new PageInfo(list);
                pageBean.setTotal((int) pageInfo.getTotal());
            }
        }

        return returnValue;
    }
}








  JsonResponseStatus

package com.jmh.springboot.utils;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

/**
 * @author 蒋明辉
 * @data 2022/9/26 17:36
 */
@Getter
@NoArgsConstructor
@AllArgsConstructor
public enum JsonResponseStatus {

    success(200,"ok"),
    error(500,"内部异常"),
    operation_success(2000,"操作成功"),
    operation_failed(5000,"操作失败"),
    name_empty(20000,"用户名不能为空"),
    pwd_empty(50000,"密码不能为空")
    ;

    //响应代码
    private int code;
    //响应信息
    private String msg;
}

  JsonResponseBody

package com.jmh.springboot.utils;

import lombok.Data;

/**
 * @author 蒋明辉
 * @data 2022/9/26 17:38
 */
@Data
public class JsonResponseBody<T> {

    //响应代码
    private int code;
    //响应信息
    private String msg;
    //响应数据
    private T obj;
    //响应总记录数
    private int total=0;

    public JsonResponseBody(){
        this.code=JsonResponseStatus.success.getCode();
        this.msg=JsonResponseStatus.success.getMsg();
    }

    public JsonResponseBody(JsonResponseStatus jsonResponseStatus){
        this.code=jsonResponseStatus.getCode();
        this.msg=jsonResponseStatus.getMsg();
    }

    public JsonResponseBody(T obj){
        this.obj=obj;
        this.code=JsonResponseStatus.success.getCode();
        this.msg=JsonResponseStatus.success.getMsg();
    }

    public JsonResponseBody(T obj,int total){
        this.obj=obj;
        this.total=total;
        this.code=JsonResponseStatus.success.getCode();
        this.msg=JsonResponseStatus.success.getMsg();
    }

}

  HelloWorldController 

package com.jmh.springboot.controller;

import com.jmh.springboot.model.Book;
import com.jmh.springboot.utils.JsonResponseBody;
import com.jmh.springboot.utils.JsonResponseStatus;
import com.jmh.springboot.utils.PageBean;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 蒋明辉
 * @data 2022/9/26 16:03
 */
@RestController
public class HelloWorldController {

    /**
     * 增加
     */
    @RequestMapping("/addBook")
    public JsonResponseBody<?> add(Book book){
        try {
            return new JsonResponseBody<>(JsonResponseStatus.operation_success);
        }catch (Exception e){
            return new JsonResponseBody<>(JsonResponseStatus.operation_failed);
        }
    }

    /**
     * 删除
     */
    @RequestMapping("/delBook")
    public JsonResponseBody<?> delBook(Book book){
        try {
            return new JsonResponseBody<>(JsonResponseStatus.operation_success);
        }catch (Exception e){
            return new JsonResponseBody<>(JsonResponseStatus.operation_failed);
        }
    }

    /**
     * 编辑
     */
    @RequestMapping("/editBook")
    public JsonResponseBody<?> editBook(Book book){
        try {
            return new JsonResponseBody<>(JsonResponseStatus.operation_success);
        }catch (Exception e){
            return new JsonResponseBody<>(JsonResponseStatus.operation_failed);
        }
    }

    /**
     * 查询单个
     */
    @RequestMapping("/querySingleBook")
    public JsonResponseBody<Book> querySingleBook(Book book){
        Book b = Book.builder().id(1).name("金梅瓶").price(99f).build();
        return new JsonResponseBody<>(b);
    }

    /**
     * 查询全部
     */
    @RequestMapping("/queryBookAll")
    public JsonResponseBody<List<Book>> queryBookAll(Book book){
        List<Book> list = new ArrayList<>();
        list.add(Book.builder().id(1).name("金梅瓶").price(99f).build());
        return new JsonResponseBody<>(list);
    }

    /**
     * 带有分页的查询全部
     */
    @RequestMapping("/queryBookPager")
    public JsonResponseBody<List<Book>> queryBookPager(HttpServletRequest rep,Book book){
        PageBean pageBean=new PageBean();
        pageBean.setRequest(rep);
        pageBean.setTotal(800);
        List<Book> list = new ArrayList<>();
        list.add(Book.builder().id(1).name("金梅瓶").price(99f).build());
        return new JsonResponseBody<>(list,pageBean.getTotal());
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值