treexmlservlet.java
来自「管理公司合同」· Java 代码 · 共 173 行
JAVA
173 行
/*
* Created on 2006-7-6 12:49:04
*
* By SinoBest
* Copyright hnisi.com.cn, 2005-2006, All rights reserved.
*/
package cn.com.juneng.system.common.taglib.tree;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;
import cn.com.juneng.system.common.COMMON;
/**
* @author yehailong
*
*/
public class TreeXmlServlet extends HttpServlet {
// Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
private String checkedId = "";
private boolean lazy = false;
private String contextPath = "";
HttpSession session = null;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
try {
response.setContentType("text/xml; charset=GBK");
this.session = request.getSession();
contextPath = request.getContextPath();
ITreeService treeService = (ITreeService) session
.getAttribute("TreeService");
checkedId = request.getParameter("checkedId");
if (checkedId == null) {
checkedId = "";
}
ITreeNode parentNode = null;
lazy = "true".equals(request.getParameter("lazy"));
String nodeId = request.getParameter("nodeId");
if (lazy && nodeId != null) {
parentNode = treeService.findByNodeId(nodeId);
} else {
parentNode = (ITreeNode) session.getAttribute("ParentNode");
// parentNode = treeService.findByNodeId("0");
}
Element rootElement = new Element("TreeNode");
treeTable = getTreeTable(treeService);
if (parentNode != null && nodeId==null) {
Element parentElement = getElement(parentNode);
rootElement.addContent(parentElement);
if(!lazy){
createElement(parentElement, parentNode);
}
} else {
createElement(rootElement, parentNode);
}
Document myDocument = new Document(rootElement);
XMLOutputter xmlOut = new XMLOutputter("", true);
xmlOut.setEncoding("gb2312");
xmlOut.output(myDocument, response.getOutputStream());
xmlOut.output(myDocument, new FileOutputStream(new File(
"c:\\sysorg.xml")));
} catch (Exception e) {
e.printStackTrace();
}
}
private Element getElement(ITreeNode node) {
Element ele = new Element("TreeNode");
ele.setAttribute("text", node.getNodeName() == null ? "" : node
.getNodeName());
ele.setAttribute("value", node.getNodeId());
if (("," + checkedId + ",").indexOf("," + node.getNodeId() + ",") != -1) {
ele.setAttribute("checked", "true");
}
if (this.lazy) {
List nodeList = (List) treeTable.get(node.getNodeId());
if (!COMMON.isEmpty(nodeList)) {
ele.setAttribute("src", this.contextPath + "/treexml?time="
+ System.currentTimeMillis() + "&lazy=" + this.lazy
+ "&checkedId=" + this.checkedId + "&nodeId="
+ node.getNodeId());
}
}
return ele;
}
private Hashtable treeTable;
private void createElement(Element parentElement, ITreeNode node) {
String parentNodeId = "0";
if (node != null) {
parentNodeId = node.getNodeId();
}
if (parentNodeId != null) {
List nodeList = (List) treeTable.get(parentNodeId);
if (nodeList != null && nodeList.size() != 0) {
for (int i = 0; i < nodeList.size(); i++) {
ITreeNode childNode = (ITreeNode) nodeList.get(i);
if (childNode.getNodeId() != null) {
if (treeTable.get(childNode.getNodeId()) == null) {
// 无子节点
Element childElement = getElement(childNode);
parentElement.addContent(childElement);
} else {
// 有子节点
Element childElement = getElement(childNode);
parentElement.addContent(childElement);
if (!this.lazy) {
createElement(childElement, childNode);
}
}
}
}
}
}
}
public Hashtable getTreeTable(ITreeService treeService) {
ITreeNode treeNode = null;
List list = treeService.findAllRecords();
Hashtable treeHash = new Hashtable();
List tempList = null;
for (int i = 0; i < list.size(); i++) {
treeNode = (ITreeNode) list.get(i);
if (treeNode.getParentId() == null
|| treeNode.getParentId().equals(treeNode.getNodeId())) {
continue;
}
tempList = (List) treeHash.get(treeNode.getParentId());
if (tempList == null) {
tempList = new ArrayList();
tempList.add(treeNode);
treeHash.put(treeNode.getParentId(), tempList);
} else {
tempList.add(treeNode);
}
}
return treeHash;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?