ssm框架整合入门系列——查询-返回分页的json数据

查询-返回分页的json数据


ajax查询过程

  1. index.jsp页面直接发送ajax请求进行员工分页数据的查询
  2. 服务器将查出的数据,以json字符串的形式返回给浏览器
  3. 浏览器收到js字符串。可以使用js对json进行解析,使用js通过dom增删改改变页面。
  4. 返回json。实现客户端的无关性。

添加json支持

pom.xml中添加:


    
    
        com.fasterxml.jackson.core
        jackson-databind
        2.8.8
    

修改EmployeeMapper.java

主要是添加了getEmpsWithJson方法

package com.liantao.crud.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.liantao.crud.bean.Employee;
import com.liantao.crud.bean.Msg;
import com.liantao.crud.service.EmployeeService;

/**
 * 处理员工的crud请求
 * @author liantao.me
 *
 */
@Controller
public class EmployeeController {
    
    @Autowired
    EmployeeService employeeService;
    
    /**
     * 需导入jackson包
     * @param pn
     * @return
     */
    @RequestMapping("/emps")
    @ResponseBody
    public Msg getEmpsWithJson(@RequestParam(value="pn",defaultValue="1")Integer pn){
        //引入PageHelper分页插件
        //查询之前需要调用,,传入页码,以及每页的大小
        PageHelper.startPage(pn,5);
        //startPage后面紧跟的是这个查询就是一个分页查询
        List emps = employeeService.getAll();
        //使用pageInfo包装查询后的结果,只需要将Pageinfo交给页面就行了
        //封装了详细的分页信息,包括我们查出来的数据,传入连续显示的数据
        PageInfo page = new PageInfo(emps,5);
        
        return Msg.success().add("pageInfo",page);
        
    }
    

    /*
     * 查询员工数据(分页查询)
     * @return
     */
    //@RequestMapping("/emps")
    public String getEmps(@RequestParam(value="pn",defaultValue="1")Integer pn,Model model){
        
        //引入PageHelper分页插件
        //查询之前需要调用,,传入页码,以及每页的大小
        PageHelper.startPage(pn,5);
        //startPage后面紧跟的是这个查询就是一个分页查询
        List emps = employeeService.getAll();
        //使用pageInfo包装查询后的结果,只需要将Pageinfo交给页面就行了
        //封装了详细的分页信息,包括我们查出来的数据,传入连续显示的数据
        PageInfo page = new PageInfo(emps,5);
        model.addAttribute("pageInfo",page);
        return "list";
    }
    
    
}

在bean包中添加Msg.java文件

package com.liantao.crud.bean;

import java.util.HashMap;
import java.util.Map;

public class Msg {
    
    //状态码  100=success  200=fail
    private int code;
    //提示信息
    private String msg;
    
    //用户要返回给浏览器的数据
    private Map extend = new HashMap();

    public static Msg success(){
        Msg result = new Msg();
        result.setCode(100);
        result.setMsg("处理成功");
        return result;
    }
    
    public static Msg fail(){
        Msg result = new Msg();
        result.setCode(200);
        result.setMsg("处理失败");
        return result;
    }
    
    public Msg add(String key,Object value){
        this.getExtend().put(key, value);
        return this;
    }
    
    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Map getExtend() {
        return extend;
    }

    public void setExtend(Map extend) {
        this.extend = extend;
    }
    
    
}

启动项目,运行结果:
ssm框架整合入门系列——查询-返回分页的json数据_第1张图片

另外,补充知识:
@ResponseBody注解详解:SpirngMVC @ResponseBody


编写页面

首先,原来的index.jsp重命名为index2.jsp(也就是不用了的意思),再新建一个index.jsp,并把list.jsp的内容复制进来

修改index.jsp 页面如下(主要是ajax 和 jq 的编写):

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


  
    
    员工列表
    
    
        
    
    
    
    
    
    
    
    
  
  
  
    

SSM-CRUD

# empName gender email deptName 操作

最后一个,在MyBatis-config.xml中添加pageHelper插件的一个默认参数:
pageHelper文档地址:pageHelper

reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页,
pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。

MyBatis-config.xml :



  
  
    
        
        
    
    
        
    
    
    
        
            
            
        
    
  
  
  

通过ajax查询数据分页展示部分完成~
效果:
ssm框架整合入门系列——查询-返回分页的json数据_第2张图片

END

转载于:https://www.cnblogs.com/famine/p/9922842.html

你可能感兴趣的:(ssm框架整合入门系列——查询-返回分页的json数据)