📄 firstmenu.java
字号:
package com.ty.menu;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.JspException;
import java.util.*;
import java.io.*;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.JspWriter;
import java.sql.*;
/**
* <p>Title: FirstMenu</p>
*
* <p>Description: 列表菜单</p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: 腾岳科技</p>
*
* @author 岳伟才
* @version 1.0
*/
public class FirstMenu extends BodyTagSupport {
private String height;
private String width;
private String align;
private String bgcolor;
private String driver;
private String url;
private String uid;
private String pwd;
private Connection conn;
private Statement stmt;
private ResultSet rs;
private ArrayList list = new ArrayList();
StringBuffer buffer = new StringBuffer("");
/**
* doAfterBody 实现菜单
* @return int
* @throws JspException
*/
public int doAfterBody() throws JspException {
BodyContent bodyContent = super.getBodyContent();
getMenuData();
JspWriter out = bodyContent.getEnclosingWriter();
try {
buffer.append("<div id=\"PARENT\">\n<ul id=\"nav\">\n");
for (int k = 0; k < list.size(); k++) {
ArrayList qlist = (ArrayList) list.get(k);
if (qlist.size() > 0) {
HashMap map = (HashMap) qlist.get(0);
buffer.append("<li>\n<a href=\"#Menu=ChildMenu"+(k+1)+"\" onclick=\"DoMenu('ChildMenu"+(k+1)+"')\">"+map.get("name")+"</a>\n");
buffer.append("<ul id=\"ChildMenu"+(k+1)+"\" class=\"collapsed\">\n");
}
for (int i = 1; i < qlist.size(); i++) {
HashMap map = (HashMap) qlist.get(i);
buffer.append("<li><a href=\""+map.get("url")+"\" target=\""+map.get("target")+"\">"+map.get("name")+"</a></li>\n");
}
buffer.append("</ul>\n</li>\n");
}
buffer.append("</ul></div>");
out.print(buffer.toString());
buffer.delete(0, buffer.length());
list.clear();
bodyContent.clear();
} catch (Exception ex) {
ex.printStackTrace();
}
return EVAL_PAGE;
}
/**
* 初始化相关参数
* @throws JspException if an error occurred while processing this tag
* @todo Implement this javax.servlet.jsp.tagext.BodyTag method
*/
public void doInitBody() throws JspException {
InputStream is = this.getClass().getResourceAsStream(
"tymenu.properties");
try {
Properties prop = new Properties();
prop.load(is);
this.driver = prop.getProperty("driver");
this.uid = prop.getProperty("uid");
this.pwd = prop.getProperty("pwd");
this.url = prop.getProperty("url");
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 获取连接
* @return Connection
*/
public Connection getConnection() {
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url, uid, pwd);
} catch (Exception ex) {
ex.printStackTrace();
}
return conn;
}
/**
* 获取父菜单总数
* @param connect Connection
* @return int
*/
public int getCount(Connection connect) {
String sql = "select distinct pid from tymenu";
int count = 0;
try {
stmt = connect.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()) {
++count;
}
} catch (Exception ex) {
ex.printStackTrace();
}
return count;
}
/**
* 获取父菜单ID
* @param connect Connection
* @return int[]
*/
public int[] getPid(Connection connect) {
String sql = "select distinct pid from tymenu order by pid";
int count = getCount(connect);
int pids[] = new int[count];
try {
stmt = connect.createStatement();
rs = stmt.executeQuery(sql);
int i = 0;
while (rs.next()) {
pids[i] = rs.getInt("pid");
i++;
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return pids;
}
/**
* 获取菜单所需数据
* @return ArrayList
*/
public ArrayList getMenuData() {
try {
conn = getConnection();
stmt = conn.createStatement();
String sql = "";
int ps[] = getPid(conn);
for (int i = 0; i < ps.length; i++) {
ArrayList qlist = new ArrayList();
sql = "select * from tymenu where pid=" + ps[i] +
" order by sid";
rs = stmt.executeQuery(sql);
while (rs.next()) {
HashMap map = new HashMap();
map.put("pid", rs.getObject("pid"));
map.put("sid", rs.getObject("sid"));
map.put("name", rs.getObject("name"));
map.put("url", rs.getObject("url"));
map.put("target", rs.getObject("target"));
qlist.add(map);
}
list.add(qlist);
rs.close();
rs = null;
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
this.closeDBConfig();
}
return list;
}
/**
* 关闭数据库连接
*/
public void closeDBConfig() {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
rs = null;
stmt = null;
conn = null;
}
}
public String getWidth() {
return width;
}
public void setHeight(String height) {
this.height = height;
}
public void setWidth(String width) {
this.width = width;
}
public void setBgcolor(String bgcolor) {
this.bgcolor = bgcolor;
}
public void setAlign(String align) {
this.align = align;
}
public String getHeight() {
return height;
}
public String getBgcolor() {
return bgcolor;
}
public String getAlign() {
return align;
}
/**
* 数据库脚本
* CREATE TABLE `tymenu` (
* `pid` int(4) default NULL,
* `sid` int(4) default NULL,
* `name` varchar(15) default NULL,
* `url` varchar(30) default NULL,
* `target` varchar(20) default NULL
* ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
* @return table tymenu
*/
/**
* tld 文件描述
* <?xml version="1.0" encoding="UTF-8"?>
* <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
*<taglib>
*<tlibversion>1.0</tlibversion>
*<jspversion>2.0</jspversion>
*<shortname>tymenu</shortname>
*<tag>
*<name>qqmenu</name>
*<tagclass>com.tengyue.CMenu</tagclass>
*<bodycontent>jsp</bodycontent>
*</tag>
*</taglib>
*/
/**
* tymenu.properties 文件
* driver = com.mysql.jdbc.Driver
* uid = root
* pwd = ********
* url = jdbc:mysql://localhost:3306/sampledb
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -