日期:2014-05-17  浏览次数:20735 次

如何将jsp中的导航栏数据保存在数据库中
有一个任务,是将一个首页的导航里的数据,保存在数据库中,并且能实现后台对首页导航增删改查的一个功能。
小弟刚刚入职,跟上级说这样效率肯定不好,而且重复从数据库中读取很浪费资源,但是没办法,上级说后期维护是客户自己进行,所以需要这样做。大家帮帮忙,告诉我思路也行,这个项目连个文档也没有,灰常蛋疼昂....

------解决方案--------------------
111111111

将 菜单的跳转路径 编码 级别 父级别什么的保存在数据库的表中。  
    一级菜单  二级菜单  三级菜单
    二级菜单的父菜单是那个一级,三级是那个二级

分配权限的话,增加一张权限表。记录被分配了那些菜单
前台读取拥有权限的菜单列表,然后展示给用户




------解决方案--------------------
刚入职就干这种工程,有前途,难道你们公司没有框架么,刚入职,想写这种东西,有点不可能,我现在都是用别人写的,要是你能些出来的话,那你就不需要在那里工作了,这个东西,我知道他的复杂性,而且网上肯定有类似的框架,自己去找找吧
------解决方案--------------------
CREATE TABLE menu(
 menuID LONG NOT NULL, #主键ID
 fatherID LONG ,#上级ID
 encoded VARCHAR(50),#代码
 enNAME VARCHAR(50)#代码对应显示的名称
 )
这样的话,可以无限级菜单。 而且如果你在数据库中取值的话,可以把这些数据一次性的取到,放到一个MAP里,把MAP放到缓存中, 这样就避免了经常访问数据库,如果在后台对菜单进行增删改操作的时候,直接清空这个MAP即可
------解决方案--------------------
CREATE TABLE menu(
  menuID LONG NOT NULL, #主键ID
  fatherID LONG ,#上级ID
  encoded VARCHAR(50),#代码
  enNAME VARCHAR(50),#代码对应显示的名称
  indexNUM INT #查询操作时,按照这个来排序,避免用户每次访问的时候导航里顺序都不一样
  )
------解决方案--------------------
create table menu (
  id,#主键ID
  pid,#父ID
  menuText, #菜单显示文字
  menuLevel, #菜单级别,一级菜单、二级菜单等
  url, #点击跳转的URL地址
  target, #跳转的方式,taeget="_blank", _parent _self等
  visibleLevl, #菜单的可见性,比如根据用户类别权限显示与否
  sortValue, #菜单在同级中的排序位置,排前还是排后等
  gmtCreate,#记录创建时间
  gmtModified, #记录被修改的时间
)

一张表就可以搞定了,使用递归或者迭代就可以拿出所有你要的记录。。。
上面修修改改就ok
------解决方案--------------------
我觉得如果id没有规则的话可以再加以字段方便查询的,比如说三级菜单可以把所有的祖先id连接起来,树形结构的数据的时候经常用的,比如0/1/2,什么的
引用:
引用:

create table menu (
id,#主键ID
pid,#父ID
menuText, #菜单显示文字
menuLevel, #菜单级别,一级菜单、二级菜单等
url, #点击跳转的URL地址
target, #跳转的方式,taeget="_blank", _parent _self等
visibleLevl, #菜单的可见性,比如根据用户……

------解决方案--------------------
引用:
CREATE TABLE menu(
  menuID LONG NOT NULL, #主键ID
  fatherID LONG ,#上级ID
  encoded VARCHAR(50),#代码
  enNAME VARCHAR(50),#代码对应显示的名称
  indexNUM INT #查询操作时,按照这个来排序,避免用户每次访问的时候导航里顺序都不一样
  )

同意,如果用的是oracle的话,Oracle有个函数start with 你可以看看怎么用。
它是个分层级的函数。
增删改查:
有权利对菜单增删改查,肯定是管理员吧。
你在管理员菜单里添加一个模块,用来管理菜单,就OK了。
删除的话,你要注意,通用的做法是如果这个菜单有子菜单,那么必须先删除子菜单后在删除该菜单。