欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
tree
Struts2中可以通過(guò)s:tree標簽輕松的實(shí)現一個(gè)樹(shù)狀結構。
下面是一個(gè)s:tree的具體實(shí)現的例子。數的結構用mysql數據庫類(lèi)維護。
1.創(chuàng )建數據庫表
DROP TABLE IF EXISTS CATEGORY_MASTER ;
CREATE TABLE CATEGORY_MASTER(
CATEGORY_ID int auto_increment NOT NULL,
CATEGORY_NAME varchar(50) NOT NULL,
PARENT_CATEGORY_ID int DEFAULT -1 NOT NULL,
PRIMARY KEY (CATEGORY_ID)
)
2.創(chuàng )建數據庫連接類(lèi)
3.創(chuàng )建Category.java,用來(lái)保存DB數據和頁(yè)面提交的數據

package s2.ex.data;

public class Category {

    private int id;

    private String name;

    private Category[] children;

    private int parentNodeId;

    public Category[] getChildren() {

       return children;

    }

    public void setChildren(Category[] children) {

       this.children = children;

    }

    public int getId() {

       return id;

    }

    public void setId(int id) {

       this.id = id;

    }

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public int getParentNodeId() {

       return parentNodeId;

    }

    public void setParentNodeId(int parentNodeId) {

       this.parentNodeId = parentNodeId;

    }   

}
4.創(chuàng )建對數據庫表category_master操作的類(lèi)
package s2.ex.svc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import s2.ex.data.Category;
import s2.ex.db.DBConn;
public class CategoryService {
private static CategoryService instance;
private CategoryService() {
  
}
public static CategoryService getInstance() {
   if (instance == null){
    instance = new CategoryService();
   }
   return instance;
}
public Category[] getCategoryList() {
   Connection conn = DBConn.getConnection();
   final String SQL = "SELECT * FROM category_master";
   ResultSet rs = null;
   try {
    rs = conn.createStatement().executeQuery(SQL);
    ArrayList<Category> aryResult = new ArrayList<Category>();
    while (rs.next()) {
     Category category = new Category();
     category.setId(rs.getInt("CATEGORY_ID"));
     category.setName(rs.getString("CATEGORY_NAME"));
     aryResult.add(category);
    }
    Category[] result = new Category[aryResult.size()];
    result = aryResult.toArray(result);
    return result;
   } catch (SQLException e) {
    e.printStackTrace();
   } finally {
    try {
     if (rs != null){
      rs.close();
     }
     if (conn != null) {
      if (!conn.isClosed()) {
       conn.close();
      }
     }
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   return null;
}
public boolean addNewTreeNode(Category category) {
   Connection conn = DBConn.getConnection();
   final String SQL = "INSERT INTO category_master(CATEGORY_NAME,PARENT_CATEGORY_ID) VALUES(?,?)";
   PreparedStatement pre = null;
   try {
    pre = conn.prepareStatement(SQL);
    pre.setString(1, category.getName());
    pre.setInt(2, category.getParentNodeId());
    int result = pre.executeUpdate();
    if (result >= 0) {
     return true;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   } finally {
    try {
     if (pre != null){
      pre.close();
     }
     if (conn != null) {
      if (!conn.isClosed()) {
       conn.close();
      }
     }
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   return false;
}
public Category[] getAllCategory() {
   Connection conn = DBConn.getConnection();
   final String SQL = "SELECT * FROM category_master where PARENT_CATEGORY_ID=-1";
   ResultSet rs = null;
   try {
    rs = conn.createStatement().executeQuery(SQL);
    ArrayList<Category> aryResult = new ArrayList<Category>();
    while (rs.next()) {
     Category category = new Category();
     category.setId(rs.getInt("CATEGORY_ID"));
     category.setName(rs.getString("CATEGORY_NAME"));
     category.setChildren(this.getChildren(category.getId()));
     aryResult.add(category);
    }
    Category[] result = new Category[aryResult.size()];
    result = aryResult.toArray(result);
    return result;
   } catch (SQLException e) {
    e.printStackTrace();
   } finally {
    try {
     if (rs != null){
      rs.close();
     }
     if (conn != null) {
      if (!conn.isClosed()) {
       conn.close();
      }
     }
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   return null;
}
public Category[] getChildren(int categoryId) {
   Connection conn = DBConn.getConnection();
   final String SQL = "SELECT * FROM category_master where PARENT_CATEGORY_ID=?";
   PreparedStatement pre = null;
   ResultSet rs = null;
   try {
    pre = conn.prepareStatement(SQL);
    pre.setInt(1, categoryId);
    rs = pre.executeQuery();
    ArrayList<Category> aryResult = new ArrayList<Category>();
    while (rs.next()) {
     Category category = new Category();
     category.setId(rs.getInt("CATEGORY_ID"));
     category.setName(rs.getString("CATEGORY_NAME"));
     category.setChildren(this.getChildren(category.getId()));
     aryResult.add(category);
    }
    Category[] result = new Category[aryResult.size()];
    result = aryResult.toArray(result);
    return result;
   } catch (SQLException e) {
    e.printStackTrace();
   } finally {
    try {
     if (rs != null){
      rs.close();
     }
     if (pre != null){
      pre.close();
     }
     if (conn != null) {
      if (!conn.isClosed()) {
       conn.close();
      }
     }
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   return null;
}
}
上面getChildren方法里面用到了遞歸。
5.創(chuàng )建action類(lèi)
package s2.ex.action;
import s2.ex.data.Category;
import s2.ex.svc.CategoryService;
import com.opensymphony.xwork2.ActionSupport;
public class SimpleTreeAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private Category root;
private Category[] parentNodeIds;
private Category editCategory;
public String displayTree() {
   root = new Category();
   root.setId(-1);
   root.setName("root");
   root.setChildren(CategoryService.getInstance().getAllCategory());
   return SUCCESS;
}
public Category getRoot() {
   return root;
}
public void setRoot(Category root) {
   this.root = root;
}
public String goTreeEdit(){
   this.parentNodeIds = CategoryService.getInstance().getCategoryList();
   return SUCCESS;
}
public Category[] getParentNodeIds() {
   return parentNodeIds;
}
public void setParentNodeIds(Category[] parentNodeIds) {
   this.parentNodeIds = parentNodeIds;
}

public Category getEditCategory() {
   return editCategory;
}
public void setEditCategory(Category editCategory) {
   this.editCategory = editCategory;
}
public String saveTreeNode() {
   if (CategoryService.getInstance().addNewTreeNode(this.editCategory)){
    return SUCCESS;
   }else {
    return INPUT;
   }
}
}
6.創(chuàng )建TreeIndex.jsp,用來(lái)顯示樹(shù)
<%@ page contentType="text/html; charset=UTF-8" %>
<%@page pageEncoding="utf-8" %>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Tree</title>
    <s:head theme="ajax" debug="true" />
</head>
<body>
<script language="JavaScript">
function treeNodeSelected(arg) {
    alert("id["+arg.source.widgetId+"], name["+ arg.source.title+ "] selected");
}
dojo.addOnLoad(function() {               
    var s = dojo.widget.byId('treeTestId').selector;               
    dojo.event.connect(s, 'select', 'treeNodeSelected');
});</script>
<div style="float:left; margin-right: 50px;">
<s:tree id="treeTestId"
theme="ajax"
rootNode="root"
childCollectionProperty="children"
nodeIdProperty="id"
nodeTitleProperty="name"
treeSelectedTopic="treeSelected">
</s:tree>
<s:form action="GoTreeEdit">
<s:submit value="Add New"/>
</s:form>
</div>
</body>
</html>
7.創(chuàng )建用來(lái)增加節點(diǎn)的TreeEdit.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@page pageEncoding="utf-8" %>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Session Test</title>
    <s:head theme="xhtml"/>
</head>
<body>
<s:form action="SaveTreeNode">
<s:textfield label="Name" name="editCategory.name"/>
<s:select label="Parent Node"
name="editCategory.parentNodeId"
headerKey="-1"
headerValue="Select Parent Node"
list="parentNodeIds"
listKey="id"
listValue="name"
required="false"
value="editCategory.parentNodeId"/>
<s:submit/>
</s:form>
</div>
</body>
</html>
8.配置struts.xml
<package name="Test" extends="struts-default" namespace="/test">
   <action name="DisplayTree" class="s2.ex.action.SimpleTreeAction" method="displayTree">
    <result>TreeIndex.jsp</result>
   </action>
   <action name="GoTreeEdit" class="s2.ex.action.SimpleTreeAction" method="goTreeEdit">
    <result>TreeEdit.jsp</result>
   </action>
   <action name="SaveTreeNode" class="s2.ex.action.SimpleTreeAction" method="saveTreeNode">
    <result name="input">TreeEdit.jsp</result>
    <result type="redirect">DisplayTree.action</result>
   </action>
</package>
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Struts jsp的樹(shù)(二)
使用DAO工廠(chǎng)模式
用ajax、JSP和Servlet實(shí)現多級下拉菜單無(wú)刷新聯(lián)動(dòng)【原創(chuàng )】
java 通過(guò)調用JDBC連接Oracle;執行SQL*PlUS 導入sql腳本
Java分層開(kāi)發(fā)BaseDao
EXCEL導入數據庫及數據庫數據導出到EXCEL - @家軍-天行鍵,君子以自強不息! -...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久