02MVC日志系统之——日志列表

Posted Dobe张的欢乐课堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02MVC日志系统之——日志列表相关的知识,希望对你有一定的参考价值。

实现思路:

1)用户登录成功后,跳转到DiaryServlet并传递参数action=list

2)DiaryServlet根据行为参数action=list得知是查询用户日志列表的请求,于是调用DiaryDaolist方法查询当前登录用户的所有日志,返回List<Diary>类型的集合。最后将该集合对象存入request中,在跳转到myDiary.jsp时带过去。

3)myDiary.jsp页面的request对象中取出List<Diary>对象,循环显示在表格中。

 

1、修改UsersServlet登录部分的代码


2、在DiaryServlet中处理查询日志列表的请求

DiaryServletdoPost方法中处理查询当前登录用户的日志列表的请求。获取当前登录用户名,需从session中取出用户对象user,再调用user.getUserID()取出用户名。(注:此处与课堂讲解不同,课堂讲解中只是将用户名userID写入session,而本例中是将用户对象user写入session)而去数据库中查询日志列表的操作,则交由DiaryDaolist()方法来实现。

02MVC日志系统之——日志列表


 

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类型。

02MVC日志系统之——日志列表


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日志系统之——日志列表


如果仅仅将数据取出并显示在表格中,代码截图如下:

02MVC日志系统之——日志列表


日志列表页面的最终效果是:在标题添加链接,点击链接能查询日志详细内容;在“是否公开”一列显示“公开”或“不公开”;在“编辑”一列显示链接,点击链接去到编辑页面;在“删除”一列显示链接,点击链接能删除日志后回到日志列表页面。修改后界面截图如下:


代码截图如下:


 

 

 


以上是关于02MVC日志系统之——日志列表的主要内容,如果未能解决你的问题,请参考以下文章

MVC日志系统之——项目准备

03MVC日志系统之——编辑日志

01MVC日志系统之——用户登录

Asp.net MVC企业级开发(02)---Log4net

.net MVC中异常日志

知行之桥EDI系统2023版功能介绍——概览页面