JSP实现留言板.ppt
第7章 JSP实现留言板,留言板在网络上的使用率是很高的,论坛、博客等都有留言板。相信读者在网上都见过留言板的样式,本章就来介绍如何使用JSP来实现留言板。在实现留言板的时候也使用到了前面所学习的内容,如用户的注册、登录等,另外在显示留言内容时要进行分页显示,这里将重点介绍自定义分页标签实现分页显示。,7.1 实现留言板的界面,留言板界面的实现,就是将同一个标题的所有留言全部显示出来,并且在界面下方有可以添加留言信息的输入栏。一个难点就是要分页显示查询到的信息,界面样式如图所示。这里一页显示的数据是2条,数据库中一共有4条数据,所以要分成两页。当单击“2”链接或者“尾页”链接时,将显示另外两条数据信息,,7.2 JSP处理留言请求,在JSP中处理留言请求,首先通过request对象获取到留言的内容,留言人的姓名,并且通过JDBC将获取到的内容存储到数据库中,最后再返回到留言页面将相关留言信息显示出来的过程。下面就对以该过程分解开来一一介绍。,7.2.1 通过request对象得到留言信息及留言人的姓名,通过form表单提交的数据信息,如果在另一个页面中想要取得这个数据信息,就要使用request对象。通过form表单提交的有留言人姓名、留言内容和留言标题,,7.2.2 通过JDBC将留言内容存储到数据库中,通过request对象获取留言内容等信息的目的就是将它们存储到数据库中,JSP要连接数据库就要使用到JDBC。这里创建了一个DBMessage.java类处理与数据库相关的代码,并使用一个无参的构造函数来初始化JDBC的连接,数据库连接好后,就要将相关信息保存到数据库中。这里保存留言内容等信息的表为message,字段有留言标题title、留言内容content、留言人姓名username。在DBMessage.java类中定义了一个newMessage()方法,来实现向数据库中添加数据信息。,7.2.3 将所有的留言信息从数据库中取出并回显,同一个标题的所有留言,对用户都是可见的。当用户提交一个新的留言后就会在页面的上方显示出来。title作为参数的目的是要查询该title下的所有留言,同时将查询结果保存到List中并返回。此外这里还用到了JavaBean来对查询结果进行封装,以达到数据的完整性。在页面上要调用此方法与JavaBean来显示信息,,7.3 编写自定义标签进行分页处理,JSP提供了一个标签库(Tag Libraries)来使JSP的开发更容易,也更便于维护。与JavaBean相比标签库能够处理网页内容的数据,而且能将复杂的操作缩减为简洁的形式。同时标签库对于网页开发者而言,比JavaBean更容易上手,但建立标签库比开发JavaBean困难。JSP标签库(也被称作定制标签)就是一种通过JavaBean生成基于XML脚本的方法。从概念上讲,标签就是很简单而且可重用的代码结构。在JSP中使用Taglib可以带有属性和主体,也可以没有属性和主体。没有属性和主体:;只有属性没有主体:;既有属性又有主体:JSP内容或标签。,7.3.1 创建自定义标签处理类,自定义标签处理类就是一个handler标签,是由Web容器调用的一个对象,当执行带有自定义标签的JSP页面时对这个标签进行判断。标签必须实现Tag或BodyTag接口,在新创建的时候,可以使用TagSupport和BodyTagSupport类作为基类,这些接口或类包含在包中。在JSP页面执行过程中,遇到自定义标签的不同阶段需要调用不同的方法,如在开始阶段遇到标签时就要调用handler的doStartTag方法。,7.3.2 创建标签库描述文件,在定义完处理类后,要创建一个标签库描述符(TLD)文件来描述自定义标签。此文件的内容开始是对整个库的描述,然后是对tag的描述。这里的标签库描述文件叫做myTag.tld。,7.3.3 在web.xml中配置元素,自定义标签实现的一个重要步骤就是要在web.xml中将TLD文件进行描述,如果不进行描述就无法在JSP页面中引入该自定义标签。在web.xml中描述需要注意一个问题,就是两个配置文件的版本号问题,如果不一致就会导致页面报错找不到标签。描述标签要使用标签,下面的两个子标签元素表示引用这个标签的URI,要与页面上的引用同名,另外表示这个标签在本地的描述文件的位置。至此,自定义分页标签的创建就全部结束了,只需要在页面上引用它就可以实现分页显示。,7.4 将回显的结果利用自定义标签进行分页显示,自定义的分页标签配置完成后,要想在页面上使用它就得先将标签导入到JSP页面中,然后再引用标签。,7.4.1 导入标签库,在JSP页面中导入标签库要执行Taglib指令,该指令有3个功能:即将taglib倒入JSP页面中,将URI与taglib相关联以便唯一地识别它,将URI映射到perfix以便在页面中使用。下面就是在JSP页面中引入自定义分页标签的代码。这里的uri就是在web.xml中配置的标签,prefix是把该标签库在页面中的引用重新起了名字,这里叫“my”。,7.4.2 从标签库中调用自定义标签实现分页效果,导入了标签库,最后一步就是从标签库中调用自定义的标签。在JSP页面中在需要进行分页显示的位置调用自定义标签,代码如下所示。page=maxPage=/此处的是标签的名称,在前面配置过了。其中“my”是标签库的别名,pagination是在myTag.tld文件中配置的名称。标签内的3个属性是根据自定义标签处理类PaginationTld.java的需要传入的。,7.5 完整的留言板功能实现,通过前几节的介绍,简单的留言板功能基本完成了。本节将一个完整的留言板实现展示给读者。该留言板的流程是:用户先登录,如果没有注册要先注册,注册页面如图7-8所示;注册完成后将跳到登录页面,登录后的用户可以看见目前所有留言的标题;可以单击标题的名称查看详细内容并可以添加留言;也可以新建一个留言题目;在查看留言详细信息页面时,可以单击留言人名称来查看该用户详细信息,,7.5.1 注册页面register.jsp的创建,创建register.jsp文件,该页面用于提交用户的注册信息。该页面包含一个form表单,表单中有6个字段,name、password、sex、age、qq、email,,7.5.2 添加用户信息处理页面addUser.jsp的创建,创建addUser.jsp文件,该文件主要用于处理register.jsp提交的用户信息。在该页面中首先通过request对象获得表单提交的数据信息,再将数据信息通过DBMessage对象存储到数据库中,具体代码如下所示。DBMessage类中封装了添加、删除、查询、更新用户信息的方法,在以后章节中会进行介绍,,7.5.3 系统登录页面login.jsp的创建,创建login.jsp文件,该文件用于提交用户登录信息。该页面包含一个form表单,表单中有两个字段,name、password,,7.5.4 登录信息处理页面check.jsp的创建,check.jsp页面用于处理登录信息的核对。先在页面中通过request获得name、password数据信息,通过DBMessage对象中的login方法判断登录数据信息是否正确。如果正确,则将登录用户的信息存储在session中,然后跳转到allMessage.jsp页面;否则跳转到login.jsp页面,并且显示错误信息,在check.jsp页面使用到了一个JSP标签,该标签代表将要跳转到哪个页面,属性page就是标识将要到达的页面。,7.5.5 查看所有留言页面allMessage.jsp的创建,创建allMessage.jsp文件,在该页面中将所有的留言标题以列表的形式显示在页面上,,7.5.6 新建留言标题页面newMessage.jsp页面的创建,创建newMessage.jsp文件,该页面提供了新建留言的功能。在该页面中创建一个form表单,该表单中有两个字段,title和content,,7.5.7 处理新建留言标题页面messageNew.jsp的创建,创建messageNew.jsp文件,该页面用于处理newMessage.jsp提交的数据信息。在该页面中通过request对象获得newMessage.jsp页面提交的数据信息,再调用DBMessage对象的newMessage方法将留言存储在数据库中,,7.5.8 发表留言页面addMessage.jsp的创建,创建addMessage.jsp文件,该页面提供了发表留言的功能。在该页面中列出所有的留言标题信息,并且利用自定义标签提供分页功能。该页面中还提供了form表单,主要提供了发表留言的功能,,7.5.9 添加新信息的处理页面messageAdd.jsp的创建,创建messageAdd.jsp文件,该页面提供了添加新信息的处理功能,,7.5.10 查询用户详细信息页面queryUser.jsp的创建,创建queryUser.jsp文件,该页面提供了查看用户详细信息的功能,对用户信息的查看通过用户名进行查询,,7.5.11 用户信息的数据封装Bean的创建,创建UserJavaBean.java文件,该文件用于封装用户相关的数据信息。该文件中包含一组私有的变量和一组get、set方法,通过get、set方法对这些变量进行封装,,7.5.12 留言信息数据封装Bean的创建,创建MessageJavaBean.java文件,该文件用于封装留言的数据信息。该类中同样也是包含一组私有变量和一组get、set方法,,7.5.13 数据库访问对象的创建,创建DBMessage.java文件,该类用于处理与数据库的交互操作。在该类中提供了数据库连接,并且包含了操作数据的一些方法,通常这样的类被称作DAO(数据访问对象)。该类中主要提供了用户注册、用户登录验证、新建留言、分组查询所有留言、查询指定留言等方法,,7.6 小结,本章重点介绍了如何创建自定义标签,以及如何在JSP页面利用自定义标签进行分页显示。自定义标签在JSP中使用是有很多优点的,特别是在处理分页显示的时候。虽然在刚开始接触的时候会感觉比较难实现,但通过反复的练习就会掌握其中的要领。,