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

前期学习了 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标签的< >, 不知道有没有跟我一样会看错一些地方?

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

时间: 2024-08-04 15:14:03

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

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

前期学习了 html5.0   css3   javascript, jsp 页面也已经入门,老师通过BBS 的web项目来给我们讲述这些知识点在实际项目中的应用. 具体的注册.登陆都只是简单的业务层逻辑问题,不予说明.项目开始的第二天,老师布置了作业: 想清楚动态生成版块信息的流程,给的提示如下: 这是 board表的字段:boardid.name.和一个父版块id 用 map 来存入,map 的键就是父版块编号,值就是 List<Board>,这个 parentid 下面的所有Board

web爬虫讲解—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息,那么这种一般都是 js 的 Ajax 动态请求生成的信息 我们以百度新闻为列: 1.分析网站 首先我们浏览器打开百度新闻,在网页中间部分找一条新闻信息 然后查看源码,看看在源码里是否有这条新闻,可以看到源文件里没有这条信息,这种情况爬虫是无法爬取到信息的 那么我们就需要抓包分析了,启动抓包软件和抓包

第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

第三百三十四节,web爬虫讲解2-Scrapy框架爬虫-Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻标题和rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息,那么这种一般都是 js 的 Ajax 动态请求生成的信息 我们以百度新闻为列: 1.分析网站 首先我们浏览器打开百度新闻,在网页中间部分找一条新闻信息 然后查看源码,看看在源码里是否有

web项目之BBS流程解析(无servlet、filter)

最近课程穿插了微信开发,bbs的项目也是断断续续地,难得地趁着自习时间写点博客记录.这个bbs版本比较简单,主要是显示版块.版块下的话题,发表话题.针对话题发表回复等等.主要的就是理解整个的流程. 我们按照最初进入bbs的顺序来讲解. 1.进入reg.jsp. 一个简单的注册页面,表单提交用户名和密码,页面加入验证码,这个是借鉴网上的js验证码,有纯数字.中文.混合的验证码,具体不介绍. 将用户名和密码传给doReg.jsp,调用封装好的 RequestUtil工具包,将request 的参数转

web项目之BBS发布至新浪云配置修改以及sql语句修改问题小结

将在myeclipse写好的web项目发布到新浪云服务器上,需要修改一些文件以及代码,我们是以tomcat为服务器的,数据库选用的是oracle,但是新浪云采用的是 mySQL,很显然,使用JNDI配置Tomcat的数据连接池是用不了的,基于oracle的简单sql语句,mySQL也可以运行,但是分页.伪列.序列.都是不被支持的,将oracle语句转为mySQL语句,请看链接: <a target=_blank href="http://http//user.qzone.qq.com/37

Java Web项目中连接Access数据库的配置方法

本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问题,所以今天改了一下又一次的公布了 老师决定期末考试採用access数据库实现增删改查.我觉得如今的我已经没有问题了.可是曾经都是在JSP页面中连接access数据库,不管是下面的那种方式都进行了连接的练习,可是如今我想让我的项目中的訪问access数据库的java代码,封装到DAO中,在DAO中连接数据库,

在web项目下注册MySQL数据库驱动失败

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) at java.lang.Class.f

SpringMVC——项目启动时从数据库查询数据

SpringMVC项目中遇到这样的问题: 1.很多数据字典需要从数据库中查询: 2.懒得修改SQL语句: 3.想在项目中声明静态变量存储数据字典,但是希望这个字典可以在项目启动时进行加载. 当遇到这样的问题时,可以通过实现org.springframework.beans.factory.InitializingBean接口进行实现这一功能. 只需要实现afterPropertiesSet()方法就将在项目扫描完注解时调用这一方法,在这个方法内调用数据库查询的方法,查出所有数据字典,并保存在静态

Python 应用闭包思路动态生成unittest执行脚本---分析问题,解决问题,记录填坑。

至于为什么要动态生成unittest执行脚本,以及设计思路,代码阅读参考前文,传送门.好了,本文我们就上一篇文章中的问题做一下分析,记录一下填坑之路吧,这个坑真特么深,挣扎了好久才出来. 首先我们先说一下问题在哪,因为使用了闭包,闭包会绑定变量无法清除无法更改,假如我第一次运行testall函数循环两次,第一次是正常的,第二次运行testall函数循环一次,那么生成的报告就会出现问题,会出现第一次运行的结果.即是:后一次循环运行只要比前一次循环少,那么report一定会出现前一次的结果,必先的b