本篇给大家分享一下 ztree+java异步加载demo。ztree支持加载数据量可以做大,预计一个页面5000+都是可以的。
Ztree异步加载的意思就是: 当点击展开树节点时,才去请求后台action返回点击节点的子节点数据并加载。
本demo采用SpringMvc+Mybatis。参见代码结构图:
前台代码jsp :
代码如下
复制代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request .getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
Ztree
href="<%=request.getContextPath()%>/css/zTreeStyle.css">
src="<%=request.getContextPath()%>/js/jquery.ztree.core.js">
src="<%=request.getContextPath()%>/js/jquery.ztree.excheck.min.js">
<
iframe id="testIframe" name="testIframe" frameborder=0 scrolling=auto width=90% height=580px src="ztree/welcome.ht">
后台处理逻辑:
代码如下
复制代码
package com.henu.controller;
import java.io.PrintWriter;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.henu.model.Ztree;
import com.henu.service.ZtreeService;
@Controller
@RequestMapping("/ztree/")
public class ZtreeController {
@Resource
private ZtreeService ztreeService;
@RequestMapping("page")
public String page(){
return "ztree/ztreeList";
}
@RequestMapping("welcome")
public String welcome(){
return "ztree/welcome";
}
@RequestMapping("list")
public void list(HttpServletRequest request, HttpServletResponse response) throws Exception{
String catalogIdParam = request.getParameter("catalogId");
Long catalogId = null;
if (catalogIdParam != null) {
catalogId = Long.parseLong(catalogIdParam);
}
String catalogName = request.getParameter("catalogName");
System.out.println(catalogId + "|" + catalogName + "|");
List ztreeList = ztreeService.getZtree(catalogId);
PrintWriter out = response.getWriter();
String str = JSONArray.fromObject(ztreeList).toString();
System.out.println(str);
out.print(str);
}
}
服务代码Service层ZtreeService.java:
代码如下
复制代码
package com.henu.service;
import java.util.List;
import com.henu.model.Ztree;
public interface ZtreeService {
List getZtree(Long catalogId);
}
ServiceImpl层ZtreeServiceImpl.java:
代码如下
复制代码
package com.henu.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.henu.dao.ZtreeDAO;
import com.henu.model.Ztree;
import com.henu.service.ZtreeService;
@Service
public class ZtreeServiceImpl implements ZtreeService{
@Resource
private ZtreeDAO ztreeDAO;
public List getZtree(Long catalogId) {
return ztreeDAO.getZtree(catalogId);
}
}
持久层ZtreeDAO:
代码如下
复制代码
package com.henu.dao;
import java.util.List;
import javax.annotation.Resource;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Component;
import com.henu.model.Ztree;
@Component
public class ZtreeDAO {
@Resource
private SqlSessionTemplate sqlSessionTemplate;
public List getZtree(Long catalogId) {
List ztreeList = sqlSessionTemplate.select List("com.henu.model.Ztree.getZtree",catalogId);
return ztreeList;
}
}
Ztree.map.xml
代码如下
复制代码
select * from henu_catalog where 1=1
and parentId = #{_parameter,jdbcType=NUMERIC}
and parentId = 1
order by catalogId