02MVC日志系统之——日志列表
Posted Dobe张的欢乐课堂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02MVC日志系统之——日志列表相关的知识,希望对你有一定的参考价值。
实现思路:
1)用户登录成功后,跳转到DiaryServlet并传递参数action=list。
2)DiaryServlet根据行为参数action=list得知是查询用户日志列表的请求,于是调用DiaryDao的list方法查询当前登录用户的所有日志,返回List<Diary>类型的集合。最后将该集合对象存入request中,在跳转到myDiary.jsp时带过去。
3)在myDiary.jsp页面的request对象中取出List<Diary>对象,循环显示在表格中。
1、修改UsersServlet登录部分的代码
2、在DiaryServlet中处理查询日志列表的请求
在DiaryServlet的doPost方法中处理查询当前登录用户的日志列表的请求。获取当前登录用户名,需从session中取出用户对象user,再调用user.getUserID()取出用户名。(注:此处与课堂讲解不同,课堂讲解中只是将用户名userID写入session,而本例中是将用户对象user写入session)而去数据库中查询日志列表的操作,则交由DiaryDao的list()方法来实现。
3、在DiaryDao中查询日志列表
DiaryDao类的list()方法代入用户对象(注:此处与课堂讲解不同,课堂讲解代入的是用户名userID,本例中代入的是用户对象user,这样做更加方便),返回查询到的日志列表,返回类型为List<Diary>。List是集合类型的接口,可以理解为长度可变化的数组。
List是接口类型,不能直接创建对象,在应用是一般是创建它的子类对象,如:List list = new ArrayList()。List中的元素是Object类型,这意味着用list.add()方法添加到该集合对象中的数据都会被转换为Object类型,而用list.get()方法从集合中取出的数据也是Object类型,在使用之前必须转换回之前的类型。List类型在存储和读取数据时的类型转换,会降低代码的执行效率,所以我们推荐使用泛型——List<Diary>。List<Diary>类型可以理解为List集合中的元素都必须是Diary类型。
用JDBC执行查询会得到ResultSet对象,结果集(ResultSet)是一个存储查询结果的对象。但在取出查询结果中的数据时,ResultSet对象rs的用法如下:
int diaryID = rs.getInt(“diaryID”); //getInt()是指获取的数据是整型
String diaryTitle = rs.getString(“diaryTitle”); //diaryTitle是数据表中的字段名
或:
int diaryID = rs.getInt(“diaryID”);
String diaryTitle = rs.getString(2); //2是日志标题字段diaryTitle的位置序号
ResultSet的这种用法使得开发者必须对所查询的数据表的结构非常清楚,如每个字段的类型、名字、位置等。如果list()方法返回的是ResultSet类型,那么每个调用者都必须去了解list()方法所查询的数据表以及字段,这样的设计是非常不利于开发的。
所以,我们推荐大家将查询结果集ResultSet每一条记录转换为结构清晰的Diary实体类的对象。我们可能并不清楚Diary实体类中有哪些私有字段,但Diary类提供的getter方法让我们能很轻松地获取查询到的数据,以及数据所代表的意义。如通过Diary对象diary获取日志编号和标题,代码如下:
int diaryID = diary.getDiaryID();
String diaryTitle = diary.getDiaryTitle();
上述diary.getDiaryTitle()获取日志标题的做法,显然要比rs.getString(“diaryTitle”)形式方便得多,我们不再需要去记忆或查阅日志标题所对应的字段名为diaryTitle,也不用担心有没有弄错它的类型。
4、在myDiary.jsp页面显示日志列表
在第二步DiaryServlet处理查询日志列表请求时,已将List<Diary>类型的日志列表对象list存入request对象中,然后跳转到myDiary.jsp页面。在myDiary.jsp页面中就能从request对象中取出list对象,并将其数据显示在页面上。
在myDiary.jsp页面插入表格,界面和初始代码如下图:
如果仅仅将数据取出并显示在表格中,代码截图如下:
日志列表页面的最终效果是:在标题添加链接,点击链接能查询日志详细内容;在“是否公开”一列显示“公开”或“不公开”;在“编辑”一列显示链接,点击链接去到编辑页面;在“删除”一列显示链接,点击链接能删除日志后回到日志列表页面。修改后界面截图如下:
代码截图如下:
以上是关于02MVC日志系统之——日志列表的主要内容,如果未能解决你的问题,请参考以下文章