脑图
一、Jackson转换json串
1.实体类对象转换成Json串
package com.dzl.Temp; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonTemp1 { public static void main(String[] args) throws JsonProcessingException { /* 实体类对象转换成Json串->Json对象->方式一 */ JsonObject1 obj1 = new JsonObject1("11", "学生管理", "closed"); ObjectMapper om = new ObjectMapper(); System.out.println(om.writeValueAsString(obj1)); /* Map集合实体类对象转换成Json串->Json对象->方式二 */ Map<String, Object> map = new HashMap<String, Object>(); map.put("id", "11"); map.put("text", "学生管理"); map.put("state", "closed"); System.out.println(om.writeValueAsString(map)); } }
2.转换成数组
package com.dzl.Temp; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonTemp2 { public static void main(String[] args) throws JsonProcessingException { /* 实体类集合对象转换成Json串->Json数组->方式一 */ JsonObject1 obj1 = new JsonObject1("14", "about.html", null); JsonObject1 obj2 = new JsonObject1("15", "welcome.html", null); List<JsonObject1> list = new ArrayList<>(); list.add(obj1); list.add(obj2); ObjectMapper om = new ObjectMapper(); System.out.println(om.writeValueAsString(list)); /* Map集合对象转换成Json串->Json数组->方式二 */ Map<String, Object> map = new HashMap<String, Object>(); map.put("id", "14"); map.put("text", "about.html"); map.put("state", null); System.out.println(om.writeValueAsString(map)); Map<String, Object> map2 = new HashMap<String, Object>(); map.put("id", "15"); map.put("text", "welcome.html"); map.put("state", null); List<Map<String, Object>> listMap = new ArrayList<>(); listMap.add(map); listMap.add(map2); System.out.println(om.writeValueAsString(map)); /* 结论:在json串的转换结果而言,Map等价于对象,LIst<Map>等价于List<创建的类> */ } }
二、从数据库拿值然后显示到菜单并且具有层级关系
1.写实体:
package com.dzl.entity; public class Menu { private String serialNo; private String menuid; private String menuname; private String menuURL; private String parentid; public String getSerialNo() { return serialNo; } public void setSerialNo(String serialNo) { this.serialNo = serialNo; } public String getMenuid() { return menuid; } public void setMenuid(String menuid) { this.menuid = menuid; } public String getMenuname() { return menuname; } public void setMenuname(String menuname) { this.menuname = menuname; } public String getMenuURL() { return menuURL; } public void setMenuURL(String menuURL) { this.menuURL = menuURL; } public String getParentid() { return parentid; } public void setParentid(String parentid) { this.parentid = parentid; } @Override public String toString() { return "Menu [serialNo=" + serialNo + ", menuid=" + menuid + ", menuname=" + menuname + ", menuURL=" + menuURL + ", parentid=" + parentid + "]"; } }
2.MenuDao
package com.dzl.dao; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.dzl.entity.Menu; import com.fasterxml.jackson.databind.ObjectMapper; import com.zking.util.BaseDao; import com.zking.util.BuildTree; import com.zking.util.PageBean; import com.zking.util.TreeVo; public class MenuDao extends BaseDao<Menu> { // @Override 查询 public List<Menu> list(Menu menu, PageBean pageBean) throws Exception { return super.executeQuery("select * from t_easyui_menu", Menu.class, pageBean); } public List<TreeVo<Menu>> tree(Menu menu, PageBean pageBean) throws Exception{ /*拿到的是平级,没有父子层级的关系的数据*/ List<Menu> list=this.list(menu, pageBean); /*List<Menu>--》list<TreeVo<Menu>>*/ List<TreeVo<Menu>>listVos = new ArrayList<TreeVo<Menu>>(); for(Menu m: list) { TreeVo<Menu> vo =new TreeVo<>(); vo.setId(m.getMenuid()); vo.setText(m.getMenuname()); vo.setParentId(m.getParentid()); Map<String,Object>attributes = new HashMap<String,Object>(); /*setf 键名字 随便取的*/ /*node.attributes.self.menUURL*/ attributes.put("setf", m); vo.setAttributes(attributes); listVos.add(vo); } // 构建父子层级关系(希望拿到菜单管理下所有的子节点数据) return BuildTree.buildList(listVos, "000"); } }
3.MenuAction
package com.dzl.web; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.dzl.dao.MenuDao; import com.dzl.entity.Menu; import com.fasterxml.jackson.databind.ObjectMapper; import com.zking.framework.ActionSupport; import com.zking.framework.ModelDriver; import com.zking.util.TreeVo; public class MenuAction extends ActionSupport implements ModelDriver<Menu> { private Menu menu = new Menu(); private MenuDao menuDao = new MenuDao(); @Override public Menu getModel() { return menu; } public String tree(HttpServletRequest req, HttpServletResponse resp) { try { List<TreeVo<Menu>> tree = menuDao.tree(null, null); List<TreeVo<Menu>> list = menuDao.tree(null, null); ObjectMapper om=new ObjectMapper(); resp.getWriter().print(om.writeValueAsString(list)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
4.更改index.js的路径
$(function(){ /* * $.ajax无刷新 $.hello * $.extends("hello",function(){ * alert("hello"); * }) * $.hello(); * * 1.tree方法是通过$.extends()拓展出来的 * 2.tree方法做的事情$('#tt').append("<li> <span>File21</span> </li> "); * * 需求: * 1.点击左侧熊市右侧Tab * 1.1给菜单添加点击事件 * 1.2调用tabs选项卡打开对应的页面 * 选项卡打开 * 选项卡对应的页面展现 * 2.不能打开重发的Tab * 拿到目前所有打开的Tabs选项卡,与将要打开的选项卡做对比(exists) * 存在true:不打开 * 存在为False:打开 * 3.对于已经存在的Tab选项,被点击的时候应该默认被选中 * 4.点击菜单,能够访问对应的页面,而非文字内容 * * * 注意:js文件中是不支持EL表达式的 * * */ $('#stuMenu').tree({ url:$("#ctx").val()+'/menu.action?methodName=tree', onClick: function(node){ //alert(node.text); // 在用户点击的时候提示 var exists=$('#stuTabs').tabs('exists',node.text); if(exists){ $('#stuTabs').tabs('select',node.text); }else{ $('#stuTabs').tabs('add',{ title:node.text, content:'<iframe height="100%" width="100%" src="'+node.attributes.url+'"></iframe>', closable:true, tools:[{ iconCls:'icon-mini-refresh', handler:function(){ alert('refresh'); } }] }); } } }); })
后台实现连接数据库执行结果:
okk