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对象的问题。反正最后没能够解决,下面是老师给的正确写法

public Map<Integer,List<Board>> boardList() throws Exception{

		//1、取出所有的 Board 对象,查出所有的版块信息
		String sql="select boardid,boardname,parentid from tbl_board ";
		List<Board> list=db.findMutiObject(Board.class , sql, null);

		//2、创建一个Map 用来保存  <parentid,List<Board>>
		Map<Integer,List<Board>> mapBoard=new HashMap<Integer,List<Board>>();

		//3、循环所有的  List,存入map
		List<Board> sonlist=new ArrayList<Board>();
		int parentid=0;		//最初的父版块编号

		for(Board b: list){
			if(b.getParentid()!=parentid){	//如果当前的b.getParentid()和现在要保存的parentid不一致,说明是一个新的父版块,要另外存key,sonlist
				mapBoard.put(parentid,sonlist);//在新的父版块,要另外存key,sonlist之前,把之前所有相同parentid的sonlist先存入map,以免被新的版块list覆盖
				if(mapBoard.containsKey(b.getParentid())){//判断新的parentid是否之前已经存过
					sonlist=mapBoard.get(b.getParentid());//存过,通过parentid 取出 sonlist
				}else{
					sonlist=new ArrayList<Board>();//否则,新new一个
				}
				parentid=b.getParentid();//将parentid更新
			}
			sonlist.add(b);//将board对象添加进  sonlist
		}
		mapBoard.put(parentid, sonlist);

		//再次循环 map 给子版块添加信息
		addAdditionalBoardInfo(mapBoard);

		return mapBoard;
	}

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

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

下面这个才是正确写法喔~~~

大家以后在编码的时候多多细心,很多的失败都是细节的缘故。

时间: 2024-11-03 22:27:08

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.分析网站 首先我们浏览器打开百度新闻,在网页中间部分找一条新闻信息 然后查看源码,看看在源码里是否有

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

Java Web项目实战记录(数据库表设计)

又是忙到这个点 虽然累,但是看着自己的项目在一点一点的成长,心里满满的成就感>_< 今天上了一下午的cep(职场社交礼仪规划课程),是不是职场就像cep老师说的那么的勾心斗角呢? 所以今天并没有做了多少东西,数据库的文档已经出来了,但是不是太详细,表之间的关系并没有说的太清(数据库的设计我并没有参与) 以下是数据库的文档: --------------------------------------------------------------------------------------

web项目存数据到数据库,中文乱码,解决过程

排查原因: 打断点,查看到底是在执行存数据库操作之前就已经乱码了,还是存数据库操作后乱码的. 前者解决方案: 在web.xml里面加上: <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported&g