码迷,mamicode.com
首页 > 数据库 > 详细

web项目之BBS---从数据库查询动态生成版块信息问题分析和小结

时间:2015-04-12 01:22:41      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

前期学习了 html5.0   css3   javascript, jsp 页面也已经入门,老师通过BBS 的web项目来给我们讲述这些知识点在实际项目中的应用。

具体的注册、登陆都只是简单的业务层逻辑问题,不予说明。项目开始的第二天,老师布置了作业: 想清楚动态生成版块信息的流程,给的提示如下:

技术分享

这是 board表的字段:boardid、name、和一个父版块id

          用 map 来存入,map 的键就是父版块编号,值就是 List<Board>,这个 parentid 下面的所有Board 对象
  0      =>    {.net技术,java技术,数据库技术,娱乐}
  1      =>    {C#, winforms,adonet, asp.net}
  2      => 

 

我的想法就是:

1、取出所有的  board 对象 ==>  List<Board>

2、从全部的  Board对象中取出所有的 boardId  ,这里要实现:boardid 编号一致的重复避免
Map<Integer,Board> //这个map用来保存  board 对象 和与之对应的 boardid
set<integer>  :用来保存所有的 boardid,  无序,不可重合

3、根据 boardId 的值,分类
新建一个Map<Integer,Board>,用来保存父编号和对应的 board对象

List<parentId,Map<boardid,Board>>


这里就会出现 从set里面拿到正确的 board对象的问题。反正最后没能够解决,下面是老师给的正确写法

 1 public Map<Integer,List<Board>> boardList() throws Exception{
 2         
 3         //1、取出所有的 Board 对象,查出所有的版块信息
 4         String sql="select boardid,boardname,parentid from tbl_board ";
 5         List<Board> list=db.findMutiObject(Board.class , sql, null);
 6         
 7         //2、创建一个Map 用来保存  <parentid,List<Board>> 
 8         Map<Integer,List<Board>> mapBoard=new HashMap<Integer,List<Board>>();
 9         
10         //3、循环所有的  List,存入map
11         List<Board> sonlist=new ArrayList<Board>();
12         int parentid=0;        //最初的父版块编号
13         
14         for(Board b: list){
15             if(b.getParentid()!=parentid){    //如果当前的b.getParentid()和现在要保存的parentid不一致,说明是一个新的父版块,要另外存key,sonlist
16                 mapBoard.put(parentid,sonlist);//在新的父版块,要另外存key,sonlist之前,把之前所有相同parentid的sonlist先存入map,以免被新的版块list覆盖
17                 if(mapBoard.containsKey(b.getParentid())){//判断新的parentid是否之前已经存过
18                     sonlist=mapBoard.get(b.getParentid());//存过,通过parentid 取出 sonlist
19                 }else{
20                     sonlist=new ArrayList<Board>();//否则,新new一个
21                 }
22                 parentid=b.getParentid();//将parentid更新
23             }
24             sonlist.add(b);//将board对象添加进  sonlist
25         }
26         mapBoard.put(parentid, sonlist);
27         
28         //再次循环 map 给子版块添加信息
29         addAdditionalBoardInfo(mapBoard);
30         
31         return mapBoard;
32     }

jsp表达式用的非常多,<%  %>  可以用在任意地方,加上 html标签的< >, 不知道有没有跟我一样会看错一些地方?

技术分享

今天这个错误困扰了我半个小时,一直在想为什么没有 传参过去?不知道大家注意到了双引号的位置了没有?

技术分享

web项目之BBS---从数据库查询动态生成版块信息问题分析和小结

标签:

原文地址:http://www.cnblogs.com/emilyRR/p/4418833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!