基于EasyUI的基础之上实现树形功能菜单

网友投稿 262 2023-05-04


基于EasyUI的基础之上实现树形功能菜单

页面展示截图如下:

为了实现以上效果,在开始前必须先将环境配置一下。

第一步: 首先,先将 jquery-easyui-1.2.6 文件引入到工程项目下,并在jsp页面上进入引入3个jsp文件和2个css文件。如下:

引入顺序必须按照以上顺序引入,否则页面展示效果将出错。

第二步:引入jar包,分别为:commons-beanutils-1.8.3.jar、commons-collections-3.2.1.jar、commons-lang-2.5.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar、json-lib-2.3-jdk15.jar、mysql-connector-java-5.1.17-bin.jar

代码实现

1、创建数据表

drop database easyui;

create database easyui;

use easyui;

show tables;

#创建菜单表

create table menu(

id int(11) not null auto_increment, ####菜单id###

name varchar(20) default null, ####菜单名####

url varchar(100) default null, #### 菜单url####

checked varchar(10) default null, ####菜单是否被选中

icon varchar(30) default null, ####菜单图标####

parent_id int(11) default null, ####父节点菜单的id####

primary key(id) ####id是主键####

);

#插入测试数据 ####测试数据####

insert into menu(id,name,url,checked,icon,parent_id) values

(1,'权限菜单',null,'',null,0),

(2,'用户管理',null,'0',null,1),

(3,'岗位管理',null,'',null,1),

(4,'资源管理',null,'',null,1),

(5,'用户功能1',null,'',null,2),

(6,'岗位功能1',null,'0',null,3),

(7,'资源功能2','/easyui/index.jsp','0',null,3),

(8,'资源功能1','sss','0',null,4),

(9,'岗位功能2',null,'',null,3),

(10,'资源功能3','111','0',null,4),

(11,'资源管理4','222','',null,4),

(14,'岗位功能3','dfds',null,null,3),

(17,'用户功能2','sss','0',null,2);

#查看数据

select * from menu;

//查询跟节点

select * from menu where parent_id=0;

#查看指定父节点下有哪些子节点

select * from menu where parent_id=2;

2、JDBC连接工具类

JDBCUtils.Java

package com.hsj.utils;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class JDBCUtils {

static {

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

public static Connection getConnection() throws Exception {

return DriverManager.getConnection(

"jdbc:mysql:///easyui?useUnicode=true&characterEncoding=UTF-8",

"root", "zxczxc");

}

public static void close(ResultSet rs, PreparedStatement ps, Connection conn) {

try {

if (rs != null)

rs.close();

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (ps != null)

ps.close();

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (conn != null)

conn.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

}

3、创建实体类domain

Menu.java

package com.hsj.domain;

public class Menu {

private int idFOubjpjd; //菜单id

private String name; //菜单名

private String url; //菜单链接的网址

private String checked; //菜单是否被选中

private String icon; //菜单图标

private int parent_id; //当前菜单的父节点id

public Menu(){}

public Menu(int id, String name, String url, String checked, String icon,int parentId) {

this.id = id;

this.name = name;

this.url = url;

this.checked = checked;

this.icon = icon;

parent_id = parentId;

}

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 String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getChecked() {

return checked;

}

public void setChecked(String checked) {

this.checked = checked;

}

public String getIcon() {

return icon;

}

public void setIcon(String icon) {

this.icon = icon;

}

public int getParent_id() {

return parent_id;

}

public void setParent_id(int parentId) {

parent_id = parentId;

}

}

TreeDTD.java

package com.hsj.domain;

import java.util.HashMap;

import java.util.Map;

public class TreeDTO {

private int id;

private String text;

private String iconCls;

private String checked;

private int parent_id;

private String state;

/**

* 自定义属性信息

*/

private Map attributes = new HashMap();

public TreeDTO() {

}

public TreeDTO(int id, String text, String iconCls, String checked,

int parent_id, String state, Map attributes) {

this.id = id;

this.text = text;

this.iconCls = iconCls;

this.checked = checked;

this.parent_id = parent_id;

this.state = state;

this.attributes = attributes;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getText() {

return text;

}

public void setText(String text) {

this.text = text;

}

public String getIconCls() {

return iconCls;

}

public void setIconCls(String iconCls) {

this.iconCls = iconCls;

}

public String getChecked() {

return checked;

}

public void setChecked(String checked) {

this.checked = checked;

}

public int getParent_id() {

return parent_id;

}

public void setParent_id(int parentId) {

parent_id = parentId;

}

public String getState() {

return state;

}

public void setState(String state) {

this.state = state;

}

public Map getAttributes() {

return attributes;

}

public void setAttributes(Map attributes) {

this.attributes = attributes;

}

@Override

public String toString() {

return "TreeDTO [attributes=" + attributes + ", checked=" + checked

+ ", iconCls=" + iconCls + ", id=" + id + ", parent_id="

+ parent_id + ", state=" + state + ", text=" + text + "]";

}

}

4、创建接口DAO

MeunDao.java

package com.hsj.dao;

import java.util.List;

import com.hsj.domain.Menu;

import com.hsj.domain.TreeDTO;

public interface MenuDao{

/**

* 根据父节点的值查询所有的子节点

* @param parentId

* @return

*/

public List getChildrenByParentId(String parentId);

/**

* 根据id值查询当前对象

* @param id

* @return

*/

public Menu findMenuById(int id);

/**

* 保存指定对象

* @param

* @param t

*/

public void save(T t);

/**

* 修改菜单对象

* @param menu

*/

public void update(Menu menu);

/**

* 根据id删除指定对象

* @param id

*/

public void delete(int id);

/**

* 根据父节点删除当前父节点下所有的子节点

* @param parentId 父节点id

*/

public void deleteChildrenByParentId(int parentId);

/**

* 根据当前节点 的id值删除它的所有子节点

* @param id

*/

public void deleteChildren(int id);

}

5、实现DAO接口方法Bean

MenuDaoBean.java

package com.hsj.dao.bean;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import com.hsj.dao.MenuDao;

import com.hsj.domain.Menu;

import com.hsj.domain.TreeDTO;

import com.hsj.utils.JDBCUtils;

public class MenuDaoBean implements MenuDao{

public int getTotalRecord(Class clazz) {

// TODO Auto-generated method stub

return 0;

}

public void save(T t)

{

//1.根据对象得到类模板对象

Class clazz= (Class) t.getClass();

//2.得到当前类中所有字段组成的数组,不管访问权限如何,但不包括父类中的字段

Field[] fields=clazz.getDeclaredFields();

//insert into t_menu(field1,field2,....) values(value1,value2,....)

List key=new ArrayList();//key用来存储字段列表

List value=new ArrayList();//value用来存储值列表

String methodName=null;

Method method=null;

for(int i=0;i

{

try

{

//getName

methodName="get"+getMethodName(fields[i].getName());

method=clazz.getMethod(methodName);

Object o=method.invoke(t);

if(o!=null && !"id".equals(fields[i].getName()))

{

key.add(fields[i].getName());

value.add(o);

}

}

catch (Exception e)

{

e.printStackTrace();

};

}

//组拼sql语句

//String table=clazz.getName().substring(clazz.getName().lastIndexOf(".")+1);

String table=clazz.getSimpleName();

StringBuffer sql= new StringBuffer("insert into "+table+" (");

StringBuffer values=new StringBuffer(" values(");

for(int i=0;i

{

sql.append(key.get(i)+",");

values.append("?,");

}

//insert into menu (name,url)

sql.deleteCharAt(sql.length()-1).append(")");

//values(?,?)

values.deleteCharAt(values.length()-1).append(")");

//insert into menu (name,url) values(?,?)

sql.append(values);

Connection conn=null;

PreparedStatement ps=null;

try

{

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement(sql.toString());

//只有Object[]不为空且数组中有元素

if(key!=null && key.size()>0)

{

for(int i=0;i

{

ps.setObject(i+1,value.get(i));

}

}

System.out.println(ps.toString());

ps.execute();

System.out.println("添加成功");

}

catch (Exception e) {

e.printStackTrace();

}finally{

JDBCUtils.close(null, ps, conn);

}

}

/**

* 将该字符串的一个字母变成大写

* @param fildeName 字符串

* @return

* @throws Exception

*/

private static String getMethodName(String fieldName) throws Exception

{

byte[] items = fieldName.getBytes();

items[0] = (byte) ((char) items[0] - 'a' + 'A');

return new String(items);

}

/**

* 根据菜单的父id找到他所有的子菜单并存储到集合中

*/

public List getChildrenByParentId(String parentId) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

List

menus=new ArrayList();

List treeDTOS=new ArrayList();

try

{

String sql="";

if(parentId==null || "".equals(parentId))

{

sql="select * from menu where parent_id=0";

}else{

sql="select * from menu where parent_id="+parentId;

}

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement(sql);

rs=ps.executeQuery();

while(rs.next())

{

Menu menu=new Menu();

menu.setId(rs.getInt("id"));

menu.setIcon(rs.getString("icon"));

menu.setUrl(rs.getString("url"));

menu.setChecked(rs.getString("checked"));

menu.setName(rs.getString("name"));

menu.setParent_id(rs.getInt("parent_id"));

menus.add(menu);

}

}catch(Exception e){

e.printStackTrace();

}finally{

JDBCUtils.close(rs, ps, conn);

}

for(Menu m : menus)

{

TreeDTO td=new TreeDTO();

td.setId(m.getId());

td.setText(m.getName());

td.setChecked(m.getChecked());

td.setIconCls(m.getIcon());

td.setParent_id(m.getParent_id());

List

childrenList=getChildren(m.getId());

if(childrenList.size()>0)

{

td.setState("closed");

}else{

td.setState("open");

}

Map attributes=new HashMap();

attributes.put("url", m.getUrl());

td.setAttributes(attributes);

treeDTOS.add(td);

}

return treeDTOS;

}

/**

* 根据当前菜单的主键值找到当前菜单有哪些子菜单对象组成的集合并返回

* @param id

* @return

*/

public List

getChildren(int id)

{

try

{

//getName

methodName="get"+getMethodName(fields[i].getName());

method=clazz.getMethod(methodName);

Object o=method.invoke(t);

if(o!=null && !"id".equals(fields[i].getName()))

{

key.add(fields[i].getName());

value.add(o);

}

}

catch (Exception e)

{

e.printStackTrace();

};

}

//组拼sql语句

//String table=clazz.getName().substring(clazz.getName().lastIndexOf(".")+1);

String table=clazz.getSimpleName();

StringBuffer sql= new StringBuffer("insert into "+table+" (");

StringBuffer values=new StringBuffer(" values(");

for(int i=0;i

{

sql.append(key.get(i)+",");

values.append("?,");

}

//insert into menu (name,url)

sql.deleteCharAt(sql.length()-1).append(")");

//values(?,?)

values.deleteCharAt(values.length()-1).append(")");

//insert into menu (name,url) values(?,?)

sql.append(values);

Connection conn=null;

PreparedStatement ps=null;

try

{

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement(sql.toString());

//只有Object[]不为空且数组中有元素

if(key!=null && key.size()>0)

{

for(int i=0;i

{

ps.setObject(i+1,value.get(i));

}

}

System.out.println(ps.toString());

ps.execute();

System.out.println("添加成功");

}

catch (Exception e) {

e.printStackTrace();

}finally{

JDBCUtils.close(null, ps, conn);

}

}

/**

* 将该字符串的一个字母变成大写

* @param fildeName 字符串

* @return

* @throws Exception

*/

private static String getMethodName(String fieldName) throws Exception

{

byte[] items = fieldName.getBytes();

items[0] = (byte) ((char) items[0] - 'a' + 'A');

return new String(items);

}

/**

* 根据菜单的父id找到他所有的子菜单并存储到集合中

*/

public List getChildrenByParentId(String parentId) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

List

menus=new ArrayList();

List treeDTOS=new ArrayList();

try

{

String sql="";

if(parentId==null || "".equals(parentId))

{

sql="select * from menu where parent_id=0";

}else{

sql="select * from menu where parent_id="+parentId;

}

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement(sql);

rs=ps.executeQuery();

while(rs.next())

{

Menu menu=new Menu();

menu.setId(rs.getInt("id"));

menu.setIcon(rs.getString("icon"));

menu.setUrl(rs.getString("url"));

menu.setChecked(rs.getString("checked"));

menu.setName(rs.getString("name"));

menu.setParent_id(rs.getInt("parent_id"));

menus.add(menu);

}

}catch(Exception e){

e.printStackTrace();

}finally{

JDBCUtils.close(rs, ps, conn);

}

for(Menu m : menus)

{

TreeDTO td=new TreeDTO();

td.setId(m.getId());

td.setText(m.getName());

td.setChecked(m.getChecked());

td.setIconCls(m.getIcon());

td.setParent_id(m.getParent_id());

List

childrenList=getChildren(m.getId());

{

sql.append(key.get(i)+",");

values.append("?,");

}

//insert into menu (name,url)

sql.deleteCharAt(sql.length()-1).append(")");

//values(?,?)

values.deleteCharAt(values.length()-1).append(")");

//insert into menu (name,url) values(?,?)

sql.append(values);

Connection conn=null;

PreparedStatement ps=null;

try

{

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement(sql.toString());

//只有Object[]不为空且数组中有元素

if(key!=null && key.size()>0)

{

for(int i=0;i

{

ps.setObject(i+1,value.get(i));

}

}

System.out.println(ps.toString());

ps.execute();

System.out.println("添加成功");

}

catch (Exception e) {

e.printStackTrace();

}finally{

JDBCUtils.close(null, ps, conn);

}

}

/**

* 将该字符串的一个字母变成大写

* @param fildeName 字符串

* @return

* @throws Exception

*/

private static String getMethodName(String fieldName) throws Exception

{

byte[] items = fieldName.getBytes();

items[0] = (byte) ((char) items[0] - 'a' + 'A');

return new String(items);

}

/**

* 根据菜单的父id找到他所有的子菜单并存储到集合中

*/

public List getChildrenByParentId(String parentId) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

List

menus=new ArrayList();

{

ps.setObject(i+1,value.get(i));

}

}

System.out.println(ps.toString());

ps.execute();

System.out.println("添加成功");

}

catch (Exception e) {

e.printStackTrace();

}finally{

JDBCUtils.close(null, ps, conn);

}

}

/**

* 将该字符串的一个字母变成大写

* @param fildeName 字符串

* @return

* @throws Exception

*/

private static String getMethodName(String fieldName) throws Exception

{

byte[] items = fieldName.getBytes();

items[0] = (byte) ((char) items[0] - 'a' + 'A');

return new String(items);

}

/**

* 根据菜单的父id找到他所有的子菜单并存储到集合中

*/

public List getChildrenByParentId(String parentId) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

List

List treeDTOS=new ArrayList();

try

{

String sql="";

if(parentId==null || "".equals(parentId))

{

sql="select * from menu where parent_id=0";

}else{

sql="select * from menu where parent_id="+parentId;

}

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement(sql);

rs=ps.executeQuery();

while(rs.next())

{

Menu menu=new Menu();

menu.setId(rs.getInt("id"));

menu.setIcon(rs.getString("icon"));

menu.setUrl(rs.getString("url"));

menu.setChecked(rs.getString("checked"));

menu.setName(rs.getString("name"));

menu.setParent_id(rs.getInt("parent_id"));

menus.add(menu);

}

}catch(Exception e){

e.printStackTrace();

}finally{

JDBCUtils.close(rs, ps, conn);

}

for(Menu m : menus)

{

TreeDTO td=new TreeDTO();

td.setId(m.getId());

td.setText(m.getName());

td.setChecked(m.getChecked());

td.setIconCls(m.getIcon());

td.setParent_id(m.getParent_id());

List

if(childrenList.size()>0)

{

td.setState("closed");

}else{

td.setState("open");

}

Map attributes=new HashMap();

attributes.put("url", m.getUrl());

td.setAttributes(attributes);

treeDTOS.add(td);

}

return treeDTOS;

}

/**

* 根据当前菜单的主键值找到当前菜单有哪些子菜单对象组成的集合并返回

* @param id

* @return

*/

public List

{

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

List

try

{

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement("select * from menu where parent_id="+id);

rs=ps.executeQuery();

while(rs.next())

{

Menu menu=new Menu();

menu.setId(rs.getInt("id"));

menu.setIcon(rs.getString("icon"));

menu.setUrl(rs.getString("url"));

menu.setChecked(rs.getString("checked"));

menu.setName(rs.getString("name"));

menu.setParent_id(rs.getInt("parent_id"));

menus.add(menu);

}

}

catch(Exception e)

{

e.printStackTrace();

}finally{

JDBCUtils.close(rs, ps, conn);

}

return menus;

}

/**

* 根据菜单的主键查找当前菜单对象

*/

public Menu findMenuById(int id) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

Menu menu=null;

try

{

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement("select * from menu where id="+id);

rs=ps.executeQuery();

if(rs.next())

{

menu=new Menu();

menu.setId(rs.getInt("id"));

menu.setIcon(rs.getString("icon"));

menu.setUrl(rs.getString("url"));

menu.setChecked(rs.getString("checked"));

menu.setName(rs.getString("name"));

menu.setParent_id(rs.getInt("parent_id"));

}

}

catch(Exception e)

{

e.printStackTrace();

}finally{

JDBCUtils.close(rs, ps, conn);

}

return menu;

}

public void update(Menu menu) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

try

{

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement("update menu set name=?,url=?,checked=?,icon=?,parent_id=? where id=?");

ps.setString(1, menu.getName());

ps.setString(2, menu.getUrl());

ps.setString(3, menu.getChecked());

ps.setString(4, menu.getIcon());

ps.setInt(5, menu.getParent_id());

ps.setInt(6, menu.getId());

ps.executeUpdate();

}

catch(Exception e)

{

e.printStackTrace();

}finally{

JDBCUtils.close(rs, ps, conn);

}

}

/**

* 根据主键删除当前菜单对象

*/

public void delete(int id) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

try

{

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement("delete from menu where id="+id);

ps.executeUpdate();

}

catch(Exception e)

{

e.printStackTrace();

}finally{

JDBCUtils.close(rs, ps, conn);

}

}

/**

* 根据当前菜单的主键值删除当前菜单的所有子菜单及当前菜单对象

*/

public void deleteChildren(int id)

{

List

for(int i=0;i

{

int cid=menus.get(i).getId();

//delete(cid);

deleteChildren(cid);

}

delete(id);

}

/**

* 根据菜单的父id删除所有子菜单

*/

public void deleteChildrenByParentId(int parentId) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

try

{

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement("delete from menu where parent_id="+parentId);

System.out.println("========="+ps.toString());

ps.executeUpdate();

}

catch(Exception e)

{

e.printStackTrace();

}finally{

JDBCUtils.close(rs, ps, conn);

}

}

}

6、创建Servlet 并配置映射文件

MenuServlet.java

package com.hsj.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;

import com.hsj.dao.MenuDao;

import com.hsj.dao.bean.MenuDaoBean;

import com.hsj.domain.Menu;

import com.hsj.domain.TreeDTO;

public class MenuServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

String method = request.getParameter("method");

if (method != null && !"".equals(method) && "getMenu".equals(method)) {

getMenu(request, response);

} else if (method != null && !"".equals(method)

&& "changeMenu".equals(method)) {

changeMenu(request, response);

} else if (method != null && !"".equals(method)

&& "addMenu".equals(method)) {

addMenu(request, response);

} else if (method != null && !"".equals(method)

&& "updateMenu".equals(method)) {

updateMenu(request, response);

} else if (method != null && !"".equals(method)

&& "deleteMenu".equals(method)) {

deleteMenu(request, response);

}

out.flush();

out.close();

}

/**

* 删除当前菜单及其当前菜单的所有子菜单

* @param request

* @param response

*/

private void deleteMenu(HttpServletRequest request,

HttpServletResponse response) {

String id=request.getParameter("id");

MenuDao menuDao=new MenuDaoBean();

System.out.println(id);

menuDao.deleteChildren(Integer.valueOf(id));

}

/**

* 修改菜单

* @param request

* @param response

*/

private void updateMenu(HttpServletRequest request,

HttpServletResponse response) {

String id=request.getParameter("id");

String name=request.getParameter("name");

String url=request.getParameter("url");

MenuDao menuDao=new MenuDaoBean();

Menu menu=menuDao.findMenuById(Integer.valueOf(id));

menu.setName(name);

menu.setUrl(url);

menuDao.update(menu);

}

/**

* 添加菜单

* @param request

* @param response

*/

private void addMenu(HttpServletRequest request,HttpServletResponse response) {

String parentId=request.getParameter("parentId");

String name=request.getParameter("name");

String url=request.getParameter("url");

Menu menu=new Menu();

menu.setName(name);

menu.setUrl(url);

menu.setParent_id(Integer.valueOf(parentId));

MenuDao menuDao=new MenuDaoBean();

menuDao.save(menu);

}

/**

* 菜单菜单的父菜单

* @param request

* @param response

*/

private void changeMenu(HttpServletRequest request,

HttpServletResponse response) {

String targetId= request.getParameter("targetId");

String sourceId= request.getParameter("sourceId");

String point= request.getParameter("point");

System.out.println("point="+point);

MenuDao menuDao=new MenuDaoBean();

Menu target= menuDao.findMenuById(Integer.valueOf(targetId));

Menu source= menuDao.findMenuById(Integer.valueOf(sourceId));

if("append".equals(point))

{

//源菜单作为目标菜单的子菜单

source.setParent_id(target.getId());

}else{

//源菜单和目标菜单使用相同的父菜单的id值

source.setParent_id(target.getParent_id());

}

menuDao.update(source);

}

/**

* 根据父id得到它所有的子菜单

* @param request

* @param response

*/

private void getMenu(HttpServletRequest request,HttpServletResponse response) {

System.out.println("getMenu-------");

//获取当前展的节点的id

try {

String parentId=request.getParameter("id");

MenuDao menuDao=new MenuDaoBean();

List treeDTOS=menuDao.getChildrenByParentId(parentId);

System.out.println(treeDTOS.toString());

response.setContentType("text/html;charset=utf-8");

String json=JSONArray.fromObject(treeDTOS).toString();

response.getWriter().write(json);

System.out.println("json="+json);

} catch (Exception e) {

e.printStackTrace();

}

}

}

映射文件信息:

Web.xml

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

MenuServlet

com.hsj.servlet.MenuServlet

MenuServlet

/menuServlet

index.jsp

7、JSP网页代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

{

int cid=menus.get(i).getId();

//delete(cid);

deleteChildren(cid);

}

delete(id);

}

/**

* 根据菜单的父id删除所有子菜单

*/

public void deleteChildrenByParentId(int parentId) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

try

{

conn=JDBCUtils.getConnection();

ps=conn.prepareStatement("delete from menu where parent_id="+parentId);

System.out.println("========="+ps.toString());

ps.executeUpdate();

}

catch(Exception e)

{

e.printStackTrace();

}finally{

JDBCUtils.close(rs, ps, conn);

}

}

}

6、创建Servlet 并配置映射文件

MenuServlet.java

package com.hsj.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;

import com.hsj.dao.MenuDao;

import com.hsj.dao.bean.MenuDaoBean;

import com.hsj.domain.Menu;

import com.hsj.domain.TreeDTO;

public class MenuServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

String method = request.getParameter("method");

if (method != null && !"".equals(method) && "getMenu".equals(method)) {

getMenu(request, response);

} else if (method != null && !"".equals(method)

&& "changeMenu".equals(method)) {

changeMenu(request, response);

} else if (method != null && !"".equals(method)

&& "addMenu".equals(method)) {

addMenu(request, response);

} else if (method != null && !"".equals(method)

&& "updateMenu".equals(method)) {

updateMenu(request, response);

} else if (method != null && !"".equals(method)

&& "deleteMenu".equals(method)) {

deleteMenu(request, response);

}

out.flush();

out.close();

}

/**

* 删除当前菜单及其当前菜单的所有子菜单

* @param request

* @param response

*/

private void deleteMenu(HttpServletRequest request,

HttpServletResponse response) {

String id=request.getParameter("id");

MenuDao menuDao=new MenuDaoBean();

System.out.println(id);

menuDao.deleteChildren(Integer.valueOf(id));

}

/**

* 修改菜单

* @param request

* @param response

*/

private void updateMenu(HttpServletRequest request,

HttpServletResponse response) {

String id=request.getParameter("id");

String name=request.getParameter("name");

String url=request.getParameter("url");

MenuDao menuDao=new MenuDaoBean();

Menu menu=menuDao.findMenuById(Integer.valueOf(id));

menu.setName(name);

menu.setUrl(url);

menuDao.update(menu);

}

/**

* 添加菜单

* @param request

* @param response

*/

private void addMenu(HttpServletRequest request,HttpServletResponse response) {

String parentId=request.getParameter("parentId");

String name=request.getParameter("name");

String url=request.getParameter("url");

Menu menu=new Menu();

menu.setName(name);

menu.setUrl(url);

menu.setParent_id(Integer.valueOf(parentId));

MenuDao menuDao=new MenuDaoBean();

menuDao.save(menu);

}

/**

* 菜单菜单的父菜单

* @param request

* @param response

*/

private void changeMenu(HttpServletRequest request,

HttpServletResponse response) {

String targetId= request.getParameter("targetId");

String sourceId= request.getParameter("sourceId");

String point= request.getParameter("point");

System.out.println("point="+point);

MenuDao menuDao=new MenuDaoBean();

Menu target= menuDao.findMenuById(Integer.valueOf(targetId));

Menu source= menuDao.findMenuById(Integer.valueOf(sourceId));

if("append".equals(point))

{

//源菜单作为目标菜单的子菜单

source.setParent_id(target.getId());

}else{

//源菜单和目标菜单使用相同的父菜单的id值

source.setParent_id(target.getParent_id());

}

menuDao.update(source);

}

/**

* 根据父id得到它所有的子菜单

* @param request

* @param response

*/

private void getMenu(HttpServletRequest request,HttpServletResponse response) {

System.out.println("getMenu-------");

//获取当前展的节点的id

try {

String parentId=request.getParameter("id");

MenuDao menuDao=new MenuDaoBean();

List treeDTOS=menuDao.getChildrenByParentId(parentId);

System.out.println(treeDTOS.toString());

response.setContentType("text/html;charset=utf-8");

String json=JSONArray.fromObject(treeDTOS).toString();

response.getWriter().write(json);

System.out.println("json="+json);

} catch (Exception e) {

e.printStackTrace();

}

}

}

映射文件信息:

Web.xml

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

MenuServlet

com.hsj.servlet.MenuServlet

MenuServlet

/menuServlet

index.jsp

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

MenuServlet

com.hsj.servlet.MenuServlet

MenuServlet

/menuServlet

index.jsp

7、JSP网页代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java实现的汉字转五笔功能实例
下一篇:通过Class类获取对象(实例讲解)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~