- 浏览: 798096 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (151)
- Java-Basic (25)
- Java-NIO (3)
- Java-Mybatis (4)
- Java-Web (15)
- DB-oracle (18)
- DB-mysql (29)
- DB-sqlserver (4)
- DB-postgresql (2)
- DB-SQLite (1)
- DB-H2 (6)
- Tool-Flex (1)
- Tool-Ftp (3)
- Tool-Maven (5)
- Netlink (2)
- Web-CSS (3)
- Web-UI (1)
- Web-JavaScript (8)
- NoSQL (3)
- Mina (2)
- TCPUDP (2)
- SEO (2)
- Network (6)
- DataStructure (1)
- Website-test (1)
- Tool-Excel (1)
- Java-Concurrent (2)
- 前辈指点 (0)
- Eclipse plugins (1)
- DB-NoSQL (1)
最新评论
-
18322696278:
My97DatePicker控件显示时分秒 -
dllhenu:
你好,我让ol加载tiptip,但是tiptip没有在点所在的 ...
OpenLayers下使用Jquery tooltip(Qtip)让要素信息自动显示或隐藏 -
boonya:
你所说的是网页上选择文件路径吧,用ServletFileUpl ...
Apache提供的FTP文件上传下载 -
淡然若水:
我也是用这种方法啊。。。但是FileInputStream i ...
Apache提供的FTP文件上传下载 -
liuweihug:
json序列化反序列化插件-json2.js 介绍和使用 - ...
Json 数据反序列化为Java对象
1、定制XML功能menu.xml
2、编写菜单对象
3、编写解析文件的工具
此方式是一个做UI设计同事写的,拿来给大家分享一下。
<root> <menus id="1" display="产品导航" priority="1" icon="menu-gps"> <menu id="11" pid="1" display="产品之家" url="/service/products" priority="1" icon="menu-location"></menu> <menu id="12" pid="1" display="企业市场" url="/service/market" priority="2" icon="menu-track"></menu> <menu id="11" pid="1" display="在线服务" url="/service/online" priority="1" icon="menu-location"></menu> <menu id="12" pid="1" display="联系购买" url="/service/contactbuy" priority="2" icon="menu-track"></menu> </menus> <!-- 其他服务 --> </root>
2、编写菜单对象
public class Menu { private int id; private String text; private int pid; private String icon; private String url; private int priority; private List<Menu> children; //getter,setter........... }
3、编写解析文件的工具
package com.cmboonya.configuration.service; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.boonya.code4j.orm.hibernate.BaseDao; import com.boonya.code4j.orm.hibernate.BaseService; import com.cmboonya.configuration.dao.AccountMemberGroupDao; import com.cmboonya.configuration.dao.AccountRoleDao; import com.cmboonya.configuration.entity.AccountMember; import com.cmboonya.configuration.entity.AccountMemberGroup; import com.cmboonya.configuration.entity.Menu; @Service @Transactional public class MenuService extends BaseService<Menu> { @Resource private IAccountMemberService accountMemberService; @Resource private IAccountRoleFunctionService accountRoleFunctionService; public Document getDocument(HttpServletRequest req) { SAXReader reader = new SAXReader(); Document document = null; try { document=reader.read((MenuService.class.getClassLoader().getResourceAsStream("menu.xml"))); } catch (DocumentException e) { e.printStackTrace(); } return document; } public List<Menu> getMenuListByUserId(int userId, HttpServletRequest req) { AccountMember user = accountMemberService.getUserById(userId); List<Menu> menuList = new ArrayList<Menu>(); if (user.getType() == 0) { menuList = getAll(req); } else { menuList=getAll(req, userId); } return menuList; } @SuppressWarnings("rawtypes") public List<Menu> getAll(HttpServletRequest req) { List<Menu> menus = new ArrayList<Menu>(); Document document = getDocument(req); Element rootElm = document.getRootElement(); List nodes = rootElm.elements("menus"); for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); Menu menu = new Menu(); menu.setId(Integer.parseInt(elm.attributeValue("id"))); menu.setText(elm.attributeValue("display")); menu.setPid(elm.attributeValue("pid") == null ? 0 : Integer.parseInt(elm.attributeValue("pid"))); menu.setPriority(Integer.parseInt(elm.attributeValue("priority"))); menu.setIcon(elm.attributeValue("icon")); menu.setUrl(elm.attributeValue("url")); Logger.getLogger(MenuService.class).info("Menu url="+menu.getUrl()); menus.add(menu); List children = elm.elements("menu"); if (children.size() > 0) { List<Menu> childrenMenus = new ArrayList<Menu>(); for (Iterator ch = children.iterator(); ch.hasNext();) { Element element = (Element) ch.next(); Menu childrenMenu = new Menu(); childrenMenu.setId(Integer.parseInt(element.attributeValue("id"))); childrenMenu.setText(element.attributeValue("display")); childrenMenu.setPid(element.attributeValue("pid") == null ? 0 : Integer.parseInt(element.attributeValue("pid"))); childrenMenu.setPriority(Integer.parseInt(element.attributeValue("priority"))); childrenMenu.setIcon(element.attributeValue("icon")); childrenMenu.setUrl(element.attributeValue("url")); Logger.getLogger(MenuService.class).info("childrenMenu url="+childrenMenu.getUrl()); childrenMenus.add(childrenMenu); } menu.setChildren(childrenMenus); } } return menus; } // 根据登录账号获取菜单 @SuppressWarnings("rawtypes") public List<Menu> getAll(HttpServletRequest req, int userId) { AccountMember user = accountMemberService.getUserById(userId); List<AccountRoleFunction> funList = accountRoleFunctionService.getBindByRoleId(user.getRoleId()); List<Integer> funIds = new ArrayList<Integer>(); for (AccountRoleFunction item : funList) { int id=item.getFunctionId(); int temp=id/10; if (!funIds.contains(temp)){ funIds.add(temp); } funIds.add(id); } List<Menu> menus = new ArrayList<Menu>(); Document document = getDocument(req); Element rootElm = document.getRootElement(); List nodes = rootElm.elements("menus"); for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); int menuId = Integer.parseInt(elm.attributeValue("id")); if (funIds.contains(menuId)) { Menu menu = new Menu(); menu.setId(Integer.parseInt(elm.attributeValue("id"))); menu.setText(elm.attributeValue("display")); menu.setPid(elm.attributeValue("pid") == null ? 0 : Integer.parseInt(elm.attributeValue("pid"))); menu.setPriority(Integer.parseInt(elm.attributeValue("priority"))); menu.setIcon(elm.attributeValue("icon")); menu.setUrl(elm.attributeValue("url")); menus.add(menu); List children = elm.elements("menu"); if (children.size() > 0) { List<Menu> childrenMenus = new ArrayList<Menu>(); for (Iterator ch = children.iterator(); ch.hasNext();) { Element element = (Element) ch.next(); int childrenId = Integer.parseInt(element.attributeValue("id")); if (funIds.contains(childrenId)) { Menu childrenMenu = new Menu(); childrenMenu.setId(Integer.parseInt(element.attributeValue("id"))); childrenMenu.setText(element.attributeValue("display")); childrenMenu.setPid(element.attributeValue("pid") == null ? 0 : Integer.parseInt(element.attributeValue("pid"))); childrenMenu.setPriority(Integer.parseInt(element.attributeValue("priority"))); childrenMenu.setIcon(element.attributeValue("icon")); childrenMenu.setUrl(element.attributeValue("url")); childrenMenus.add(childrenMenu); } } menu.setChildren(childrenMenus); } } } return menus; } }
此方式是一个做UI设计同事写的,拿来给大家分享一下。
发表评论
-
零成本学习soybeanMilk MVC
2013-09-11 00:01 1109SoybeanMilk是一个简易、友好、且零侵入的Java M ... -
Quartz在Spring中比较直观的一种配置
2013-08-06 23:54 968Quartz有许多种配置,最简单易懂的才是值得大家提倡的,最标 ... -
Jquery Ajax的url传递时间含空格不能提交解决方案
2013-06-07 12:11 2434问题描述:在JS代码中访问地址,浏览器控制台报错。 1、错误访 ... -
属性文件国际化
2013-05-22 13:20 1903一个比较成熟的项目国际化必不可少,这里说说怎样将中文信息国际化 ... -
Servlet生成图片验证码
2013-05-16 14:27 12371、生成验证码程序 package com.boonya. ... -
Hibernate的Criteria查询分页示例
2013-04-27 09:20 2891前言:需要注意的是时间区间的查询,字符串转时间一定要转换正确。 ... -
实现$.getJSON的同步请求
2013-01-29 12:47 1825----问题描述: 在getJSON方法体里面可以获取到数据, ... -
OpenLayers下使用Jquery tooltip(Qtip)让要素信息自动显示或隐藏
2013-01-22 10:21 4837首先在官网下载qtip插件:http://craigswork ... -
Jquery需要注意的事件操作
2013-01-22 09:42 1136//单击选中行 $("table.list tr& ... -
OpenLayers添加google地图层异常处理
2013-01-15 15:16 1246异常描述: 打开google图层,地图任何操作事件都弹出[地图 ... -
Google Javascript V3地图展示
2013-01-14 15:44 1508第一部分 获取地图key 1、访问 https://code. ... -
Ajax导出Excel问题
2013-01-11 16:46 11358我的错误轨迹: 1、使用POI导出报表servlet测试没问题 ... -
My97DatePicker控件显示时分秒
2012-09-14 11:16 372470方式一: if (!WebCalendar.timeSho ... -
处理Ajax后台交互中文乱码
2012-08-08 14:26 1261情况:涉及到中文参数提交的时候遇到中文乱码 处理方法: so ...
相关推荐
JAVA 高手解析 XML 配置文件的读取操作 本文主要讲解了 Java 中如何读取 XML 配置文件,并对 XML 解析器进行了分类,分别介绍了 DOM 和 SAX 两种解析方式的特点和使用场景,并提供了一个使用 SAX 解析器读取 XML ...
使用 Java 读取 XML 配置文件 Java 语言和 XML 技术可以说是黄金组合,网上已经有很多文章介绍 XML 在电子商务中的数据交换的作用。但是在平时系统开发中,我们不一定都用到数据交换,是否无法使用 XML?当然不是...
总的来说,Java通过DOM解析XML文件,可以方便地读取和操作XML配置。结合这个基础,我们可以构建自己的轻量级框架来管理和实例化bean,模仿Spring的部分功能。然而,要完全复现Spring的强大功能,还需要深入理解和...
Java中XML配置文件的读取(SAX) XML配置文件是Java开发中常用的配置文件格式,特别是在J2EE项目中。XML文件可以存储配置信息,并且易于维护和修改。然而,在Java中读取XML配置文件成了一个需要解决的问题。本文将...
JAVA项目数据库连接XML配置文件 在 Java 项目中,数据库连接的配置是一个非常重要的步骤,为了方便用户配置数据库,使用 XML 配置文件可以灵活地修改数据连接。本文将详细介绍如何使用 XML 配置文件来连接数据库。 ...
1. **XML配置文件**: XML是一种结构化数据存储格式,常用于复杂的应用程序配置。在Java中,我们可以使用DOM(Document Object Model)、SAX(Simple API for XML)或StAX(Streaming API for XML)等解析器来读取...
Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...
总结起来,Java读取本地XML文件涉及的主要步骤包括创建`DocumentBuilderFactory`,构建`DocumentBuilder`,解析XML文件为`Document`对象,然后通过`Document`对象访问和操作XML结构。对于复杂需求,XPath可以提供更...
而SAX解析器采用事件驱动的方式,逐行读取XML文件,适合处理大型XML文件以避免内存消耗。 对于多级XML,DOM解析更便于操作。以下是一个使用Java DOM解析XML的步骤: 1. 引入必要的库: 需要引入`javax.xml....
Java读取XML文件是开发过程中常见的任务,JDOM是一个用于处理XML文档的Java库,它提供了方便、高效的方式来创建和操作XML数据。本篇将详细讲解如何使用JDOM来读取XML文件,以及相关的源码解析。 首先,我们需要了解...
通过以上步骤,我们便能使用JDOM库在Java中高效地读取和操作XML文件。JDOM的优势在于它提供了直观且符合Java习惯的API,使得XML处理变得更加简单。然而,对于大型XML文件,考虑到性能因素,可能需要考虑使用其他解析...
在Java编程中,处理XML文件是一项常见的任务,尤其是在数据交换、配置存储或文件解析等领域。当我们需要读取的XML文件结构复杂,包含嵌套的元素时,递归方法就显得尤为适用。本篇文章将深入探讨如何使用Java递归地...
二、Java读取XML文件 1. 使用DOM解析: 读取XML文件时,首先会将整个XML文档加载到内存中的DOM树,然后通过API遍历和访问各个节点。 示例代码: ```java import javax.xml.parsers.DocumentBuilder; import javax....
8. **兼容性和扩展性**:考虑到Java的广泛使用,这个XML工具类可能已经考虑到了与各种Java版本的兼容性,并且可能提供了一些扩展点,允许用户根据需要自定义行为。 在项目中使用这个API时,你需要先将其`lib`目录下...
本篇文章将深入探讨如何使用DOM(Document Object Model)和SAX(Simple API for XML)两种不同的技术来解析XML配置文件,从而建立数据库连接。 一、DOM技术连接 DOM是一种树形模型,它将整个XML文档加载到内存中,...
SAXException { ...通过Java的SAX解析器,我们可以方便地读取和处理这些配置,使得程序能够根据环境动态调整行为。了解和掌握XML解析技术,对于Java开发者来说,是提升项目可维护性和扩展性的重要技能。
在Java编程中,读取XML文件并将其转换为树形结构是一种常见的操作,尤其是在处理配置文件、数据交换或解析XML文档时。以下是一篇详细解释如何实现这一过程的文章。 首先,我们需要了解XML(eXtensible Markup ...
Java操作XML文件是Java开发中常见的一项任务,特别是在处理配置、数据交换或存储结构化信息时。XML(Extensible Markup Language)是一种标记语言,它的结构清晰、可读性强,易于机器解析和生成。本篇文章将深入探讨...