基于JSP与Mysql的留言板设计
- 格式:doc
- 大小:351.50 KB
- 文档页数:16
留言版设计文档资料本程序编写目标:开发一套简单的留言版系统开发工期:1个星期一、需求概述:添加留言、显示留言、管理留言等。
任务概述通过JSP技术+sqlservice,在规定的时间内,实现添加留言、保存留言、显示留言、回复、删除和编辑留言(只有管理员才有权限进行回复和删除留言)等功能。
要求使用servlet 对表单的处理二、页面分析及设计:.1、ListMsg.jsp(显示留言页面——首页)包括标题、首页图片、留言记录,一页控制显示10条记录,利用记录分页进行上下页切换;显示留言按时间的降序排列;链接有注册、管理员页面和添加留言页面。
2、newMsg.htm(添加留言页面——表单页面)包含有留言者的称呼、性别、年龄、留言主题和留言内容等信息,通过表单提交到处理页面后保存到数据库。
3、insertMsg.jsp(留言处理页面)接收表单提交的数据处理后保存到数据库。
4、register.htm(注册页面)注册管理员页面5、register_c.jsp(处理注册信息页面)6、success.htm(显示注册成功页面)注册成功后,直接登录到管理员页面7、fail.htm(显示注册失败页面)注册失败后,返回注册页面8、login.htm(管理员登录页面)9、checkUser.jsp(处理管理员登录信息页面)10、admin.jsp(管理员页面)显示留言信息且链接有查看页面、删除页面和回复页面11、show.jsp(显示某一留言者的详细信息页面)12、del.jsp(删除页面)显示要删除的留言并提供管理员删除功能,删除成功后返回到管理员页面。
13、edit.jsp(编辑页面)显示留言信息并提供管理员编辑功能,并将编辑后的信息传到editOK.jsp页面处理。
14、editOK.jsp(显示编辑成功后页面)编辑成功后,返回管理员页面15、error.htm(管理员登录错误页面)数据库设计包括:guest表、 admin 表及reply表(1)guest表字段变量如下:ID为主码唯一标识某一留言者,其中Time的默认值:now(); Name、Title、Content、为必填字段,表中的字段为留言者要提交的信息。
php+mysql最简单的留⾔板学完了记得动⼿操作。
(未过滤)<html><body><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><form method = "post" action = "post.php">欢迎来到我的留⾔板!<br>name:<input type = "text" name = "name"><br>email:<input type = "text" name = "email"><br>content:<br><textarea rows="10" cols="20" name="content"></textarea><input type = "submit"></form></body></html><?phpheader("Content-type: text/html; charset=utf-8");$con = mysql_connect("***","***","***");if (!$con){die('Could not connect: ' . mysql_error());}//connect tablemysql_query("SET NAMES utf8");mysql_select_db("message",$con);$sql = "CREATE TABLE message(id int NOT NULL AUTO_INCREMENT,PRIMARY KEY(id),name varchar(15),email varchar(15),content varchar(100))";//mysql_query($sql,$con);$name = $_POST['name'] ;$email = $_POST['email'];$content = $_POST['content'];$sql1 = "INSERT INTO message(name,email,content)VALUES( '$name', '$email','$content')";mysql_query($sql1,$con);echo "<table border='1'><tr><th>id</th><th>name</th><th>email</th><th>content</th></tr>";$result = mysql_query("SELECT * FROM message");while($row = mysql_fetch_array($result)){echo "<tr>";echo "<td>" . $row['id'] . "</td>";echo "<td>" . $row['name'] . "</td>";echo "<td>" . $row['email'] . "</td>";echo "<td>" . $row['content'] . "</td>";echo "</tr>";}echo "</table>";mysql_close($con);?>中途遇到⼀个bugmysql_fetch_array(): supplied argument is not a valid MySQL result resource定位到该函数。
留言簿设计报告班级09软件姓名***学号22号一部分:描述留言簿的模块划分二部分:用流程图的形式描述留言簿的执行流程三部分:各部分界面效果图及代码的具体实现四部分:设计过程中的错误及纠正五部分:设计感受六部分:附用户使用说明(包括安装环境部署环境,及使用),和设计时的数据库第一部分:留言簿的模块划分1.管理员管理模块身为管理员,有查看所有用户的资料信息,和所有用户的留言,并有修改和删除的权利,进入index.jsp首页后,先像其它用户一样访问主页,及留言板,若想留言或查看信息,则先登陆.点击留言请先登陆超链接,进入denglu.jsp的登陆页面.输入管理员的用户名及密码,即admin,进入success.jsp页面,在此页面里,管理员可以查看全部留言信息shuchu.jsp,并可以更改和删除.也可以查看所有用户的注册信息chakan.jsp.也可以查看个人信息gerenxinxi.jsp.在个人信息中可以修改用户名和密码即登录xiugai.jsp页面,但不可以注销用户,因为不能没有管理员.2.普通用户使用模块普通用户进入网站,也要先浏览主页,及留言板,若有意留言,则请先登录,登陆成功后进入success.jsp页面,在此页面中用户可以查看自己已经留言过的信息,即shuchu3.jsp页面,在此页面中可以对自己的留言进行更新和删除,即update.jsp页面和delete.jsp页面,若有意留言,则点击我要留言超链接,进入liuyanyemian.jsp页面,进行留言,再此页面中,可以更新自己的头像.在success.jsp中还可以查看个人信息,并对自己的用户名和密码进行修改,对自己的账号注销.即xiugai.jsp和cancel.jsp页面3.过客浏览模块身份为过客,进入网站后,先浏览主页,若有意留言,则点击留言请先登录,若没有账号,则在denglu.jsp的页面中,点击注册链接,进行注册,即insertuser.jsp页面,若用户名不曾被人注册过,则转到zhucechenggong.jsp的页面.点击此页面的登陆即可重新登陆,也可以退出网站.重新登陆后,就可以想普通会员一样进行操作了.4.退出系统退出,即tuichu.jsp页面.第二部分:流程图第三部分:各部分界面效果图及代码的具体实现index.jsp 页面,主要用了一个qq 表情,然后用marquee 标签实现字体的运动,接下来是两个超级链接.访问主页后,进入留言板主页,标题有主人寄语,然后调用以下方法,public List QureyAll(String sql){ List list=new ArrayList(); this .getConnection(); try {stat =con .createStatement(); rs =stat .executeQuery(sql); while (rs .next()){ Message message=new Message();message.setBorderID(rs .getInt("borderId")); message.setContent(rs .getString("content")); message.setImage(rs .getString("image")); message.setMsgtime(rs .getString("msgtime")); message.setReplyID(rs .getString("replyID")); message.setSubject(rs .getString("subject")); message.setUsername(rs .getString("username"));list.add(message);}} catch (SQLException e) { // TODO Auto-generated catch blockSystem.out .println("数据库异常"); e.printStackTrace();}CloseAll();return list;}输出所有人的留言,界面如下:若想要留言,则进入denglu.jsp页面,即用一个form表单即可,界面如下:登陆成功后,进入success.jsp,设置了几个超链接如下:若点击查看自己的留言,则进入shuchu3.jsp页面,在此页面,可以更新和删除,都是现获取自己的id号,然后操作,如下:输出方法如下:public Message QueryByID(int id){Message message=new Message();String sql="select * from t_board where borderID="+id;this.getConnection();try {stat=con.createStatement();rs=stat.executeQuery(sql);if(rs.next()){message.setBorderID(rs.getInt("borderID"));message.setContent(rs.getString("content"));message.setImage(rs.getString("image"));message.setMsgtime(rs.getString("msgtime"));message.setReplyID(rs.getString("replyID"));message.setSubject(rs.getString("subject"));message.setUsername(rs.getString("username"));}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.println("数据库异常");e.printStackTrace();}CloseAll();}在jsp页面调用:String id=request.getParameter("id");int borderid=Integer.parseInt(id);DBConn db=new DBConn();Message message=db.QueryByID(borderid);更新主要实现就是:String id=request.getParameter("id");String subject=request.getParameter("subject");String content=request.getParameter("content");String updatetime=new Date().toLocaleString();String sql="update t_board set subject='"+subject+"',content='" +content+"',msgtime='"+updatetime+"',image='"+image+"' where borderID="+id;DBConn db=new DBConn();int flag=db.executeUpdate(sql);if(flag>0){response.sendRedirect("shuchu3.jsp");}else{out.print("出现异常,重新留言!");}删除主要实现就是将sql语句进行修改一下:String sql="delete from t_board where borderID="+borderid;当然参数也没必要获得那么多.更新和删除的主要方法为:publicint executeUpdate(String sql){int flag=0;try {this.getConnection();stat=con.createStatement();flag=stat.executeUpdate(sql);}catch (SQLException e) {e.printStackTrace();}CloseAll();return flag;}界面如下:若点击查看自己的个人信息,则进入gerenxinxi.jsp 页面,sql 语句用username 追踪, 调用如下的方法:public Genggai QureyAll2(String sql){Genggai xinxi=new Genggai();this .getConnection(); try {stat =con .createStatement(); rs =stat .executeQuery(sql); if (rs .next()){ xinxi.setId(rs .getInt("id"));xinxi.setUsername(rs .getString("username")); xinxi.setPwd(rs .getString("pwd")); xinxi.setSex(rs .getString("sex"));xinxi.setBirthday(rs .getString("birthday")); xinxi.setEmail(rs .getString("email")); xinxi.setAddress(rs .getString("address"));xinxi.setTelephone(rs .getString("telephone"));}} catch (SQLException e) {System.out .println("数据库异常");e.printStackTrace();}CloseAll();return xinxi;}在jsp 页面这样输出:out.print("<tr>");out.print("<td width='40%' align='center'>");out.print("<font size='5' color='orange' face='隶书'>"); out.print("您的id 号是:"); out.print("</font>"); out.print("</td>");out.print("<td align='center'>");out.print(xinxi.getId());out.print("</td>");out.print("</tr>");其他列名输出跟上面的id一样,界面如下:若点击如上的”修改用户名或密码”进入如下页面,即xiugaiyemian.jsp,也是定义一个form表单若修改成功,则进入xiugaichenggong.jsp页面,界面如下:若点击success.jsp 页面的”注销用户”,则进入如下页面,同样也是定义form 表单,成功后进入cancelsuccess.jsp 页面,两个界面如下:注销用户方法是:publicint TestCancel(String username,String pwd){ int flag=0; DBConn db=new DBConn();con =db.getConnection();String sql="delete from t_user where username=? and pwd=?";try {prests = con .prepareStatement(sql); prests .setString(1,username); prests .setString(2,pwd);flag=prests .executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch blocke.printStackTrace();}return flag;}若在登陆页面,点击”注册”,进入regist.jsp 页面如下,也是一个复杂的form 表单,添加了背景和qq 表情:注册插入到数据库的方法主要有两个,一个用来判断用户名是否已经存在,一个用来插入:如下判断:publicint Testpanduan(String username){int s=0;DBConn db=new DBConn(); con =db.getConnection(); String sql="select * from t_user where username=?"; try {prests =con .prepareStatement(sql);prests .setString(1,username);rs =prests .executeQuery();if (rs .next()) {s=1;rs .close();prests .close();}} catch (SQLException e) { // TODO Auto-generated catch blocke.printStackTrace();} return s;} 插入:publicint Testinsert(String username,String pwd,String repwd,String sex,String birthday,String email,String address,String telephone){ DBConn db=new DBConn();con=db.getConnection();int flag=0;String sql="insert into t_user values(?,?,?,?,?,?,?)";try{if(pwd.equals(repwd)){prests=con.prepareStatement(sql);prests.setString(1,username);prests.setString(2,pwd);prests.setString(3,sex);prests.setString(4,birthday);prests.setString(5,email);prests.setString(6,address);prests.setString(7,telephone);flag=prests.executeUpdate();}}catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return flag;}注册成功后,进入zhucechenggong.jsp页面,也添加了背景图片和qq表情,使之美观,界面如下:若访问的是管理员,则进入如下界面,他可以查看所有用户的所有留言和所有信息:若查看所有用户的全部资料,则进入chakan.jsp页面,在此页面可以管理员进行删除,输出方法是:public ResultSet QureyAll3(String sql){Genggai xinxi=new Genggai();this.getConnection();try {stat=con.createStatement();rs=stat.executeQuery(sql);if(rs.next()){xinxi.setId(rs.getInt("id"));xinxi.setUsername(rs.getString("username"));xinxi.setPwd(rs.getString("pwd"));xinxi.setSex(rs.getString("sex"));xinxi.setBirthday(rs.getString("birthday"));xinxi.setEmail(rs.getString("email"));xinxi.setAddress(rs.getString("address"));xinxi.setTelephone(rs.getString("telephone"));}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.println("数据库异常");e.printStackTrace();}return rs;}在jsp页面调用方法后用<%out.print(rs.getString("email")); %> 删除链接是:<a href="deletemsg2.jsp?id=<%=rs.getInt("id")%>">删除</a>界面如下:管理员还可以有权利对所有用户的留言进行删除:主要方法同上面提到的.界面如下:点击我要留言链接后,进入我要留言页面:添加笑脸和更新头像的方法如下:<%int count=0;for(int i=0;i<40;i++){ %><input type="radio" name="image" value="<%=i+1 %>" onclick="addimg(this)"><img src="images2/<%=i+1 %>.png"><% count++;if(count%8==0)out.print("<br>"); }%>更新头像:<select name="image" onchange="change();"><%for(int i=1;i<=30;i++){%><option value="<%=i%>"><%=i %></option><% } %></select><img src="photo/1.jpg" width="100" height="100" name="head"/> 但要用到JavaScript语言:选择头像:function addimg(obj){var s=obj.value;var con=document.form1.content.value;con=con+"<img src=images2/"+s+".png>";document.form1.content.value=con; }更换头像:function change(){var image=document.form1.image1.value;document.head.src="photo/"+image+".jpg";}留言界面如下:最后是退出页面,主要是图片和qq表情的设置.使页面更生动,界面如下:第四部分:设计过程中的错误及纠正在做动态网页的时候,遇到的小错误有很多,每次都是经过反复的调试得出的,有时候写错某个方法中的某个字母,就会调试很长时间,当然同时也加深了印象.例如在用JavaScript语句中,不能弹出alert对话框,仔细分析代码,发现表单form名字写成了from.主要的错误有以下几个方面:1.在编写查看所有人的信息遇到传递参数时的空指针,而且在方法体中用了db.CloseAll();方法,出现连接对象已经关闭的错误.应该用out.print(rs.getString(username));而不是用out.print(xinxi.getUsername());2.在删除留言时,超链接中的id一直传递不过去使得intborderid=Integer.parseInt(id);一直出现错误,出现空指针.,仔细检查发现是超链接中的id=<%=message.getBorderID()%>写错3.在插入新留言的时候,一直出现中文乱码,插入如下两条语句,即可解决byte aa[]=subject.getBytes("ISO-8859-1"); subject=new String(aa);byte bb[]=content.getBytes("ISO-8859-1");content=new String(bb);更新头像的时候,头像不能同时显示出来4.在注册新用户时,由于既要用sql语句判断用户名是否已经存在,又用到要在不存在的时候插入的sql语句,导致逻辑混乱,仔细推敲后,才运行得到.5.因为要在多个页面用到传递的username等等,所以一定要用session获取参数6.在更新留言时,要用到<input type="hidden" name="id" value="<%=id %>">传递隐藏的参数,由于刚开始不明白,出现了很多逻辑上的错误.第五部分: 设计感受1.这次的留言板设计感受很多,有时某一个很小的错误,比如丢一个括号,写错一个字母,就会浪费很长的时间.所以做完就用了很长的时间.当然对程序里的某些方法的应用,也不是太清楚,如过滤信息的设置等.我觉得还是孜孜不倦的从一点点的做起,比如每个网页的背景图片,就设计了不少时间,因为我觉得一个网站的美观效果也是很重要的.每当睡觉的时候,只要一想起,啊,我的留言板还没有做完,就会带着思考入梦了.老实说,这个留言板不是很难,可能是刚接触数据库与jsp的链接吧,当时出了很多例如数据库异常的错误,到后期的时候就好多了…在对用户信息或用户的留言进行更新,删除,插入,查找等等时,这些方法都从jsp的页面,提到java类里面,方法都是大同小异,无非是数据库的链接,执行sql语句的对象的创建和应用,以及接受结果的存放等等.主要是预处理对象和执行对像的flag=stat.executeUpdate(sql);rs=stat.executeQuery(sql);这两个方法的调用.2.在这期间离不开同学与同学,舍友与舍友之间互相学习和交流,所以收益也很大,也感受到了集体的力量.经过这次的留言板制作,收获很多.不仅对连接数据库方面的知识懂了很多,对sql语句的书写记忆深刻,而且还回忆了以前的很多函数的调用,方法的编写等等.相信在以后的学习中会更进一步,掌握更多的知识和应用.第六部分:附用户使用说明(包括安装环境部署环境,及使用),和设计时的数据库在MyEclipse7.0的环境下实现,将Tomcat6.0服务器,JDK7下载以及部署进去设计时的数据库使用Microsoft SQL server 2000。
JSP在水一方留言簿设计报告一需求分析随着互联网的迅猛的发展,给我们带来不少的便利,于此同时,论坛基本是每个必有的功能,为用户之间的交流提供的很好的平台。
我通过仔细的分析和规划,本论坛有如下功能:用户注册,登录,用户信息修改,签写留言,留言查看,回复留言和管理员的普通维护功能等。
这些功能的具体描述如下:1)用户注册模块:用户可已成为本论坛的会员,通过表单把用户的相关信息提交给数据库。
2)登录模块:基本是每个系统必备的模块,本论坛的登录的模块分为两个小模块:普通用户登录,另一个是管理员登录。
3)签写留言模块:这是论坛的主要功能之一,用户把自己感兴趣的话题发表到论坛上,与网上的会员进行探讨。
4)查看留言模块:这也是论坛的主要功能之一,把用户发表的留言逐条,序显示出来。
5)回复留言模块:这也是论坛的主要功能之一,用户对别的用户发表的留言进行回复。
6)普通的维护模块:这是给管理员的功能,该功能对那些危害社会风气的留言删除。
7)用户信息修改模块:用户能对自己的信息进行修改。
二分析和设计(页面和数据库)设计论坛时,首先应该区别是普通用户登录还是管理员登录。
如果是普通用户登录,那么该用户只有查看和回复留言的权限。
如果是管理员登录,则除了具有查看和回复权限外,还用具有管理论坛的权限。
在用户发表留言后,将显示该用户的用户名、性别、留言容和留言时间等容。
如果在某个留言有回复容,则显示出是谁恢复了该篇留言和回复的容。
另外还能在页面中显示当前的系统的时间和访问权限。
数据库设计通过以上的分析:数据库应有四个表,tb_user、td_topic、tb_reply、tb_counter。
由于是个小型的论坛,选择AEESS数据库。
具体各表的设计如下:1 分析得知tb_user表功能的记录用户的信息,具有如下字段:ID、UserName、PWD、Birthday、Sex、OICQ、Tel、homepage、address、postcode、Email、status。
JSP课程设计报告题目:个人网站留言板系统程序设计二0一二年九月摘要个人网站留言板及用户注册系统是一个针对个人而开发的网站系统,个人网站是一个可以发布个人信息及相关内容。
通俗理解个人网站:就是指网站内容是介绍自己的或是以自己的信息为中心的网站,访客可以在网站注册后留言。
本网站是一个典型的简单的个人网站系统,其开发主要包括后台数据库的建立和维护以及前端WEB页面的设计两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库,不会出现增加,删除,修改的异常。
而对于后者则要求应用功能完备,易使用,界面友好等特点。
另外,本文还着重论述了留言板和用户注册系统的功能与实现,包括数据流程及存储、注册用户管理、留言板信息管理、用户权限管理、用户密码管理、留言信息和用户的增加、留言信息的删除、留言信息的查询、注册用户的查询、等。
本系统提供管理员、访客的登录。
管理员可以查看用户注册信息和留言信息,可对其进行删除修改等功能。
访客登录可以在留言板上留言。
关键词:个人网站;访客;管理员;留言板AbstractPersonal website message board and user registration system are web site developed for individual systems, personal Web site can publish a personal information and related content. Popular understanding of website: that the content of a site is to introduce their own information, or to the center of the site, visitors can leave a message after the site up. This site is a typical simple personal website system, which mainly includes the establishment and maintenance of back-end database and front two aspects of the design of WEB pages. Request for the establishment of data consistency and integrity, data security and good libraries, does not appear to add, delete, modify the exception. For the latter requires the application of functions, easy to use, friendly interface and so on. In addition, this paper focuses on the message boards and user registration system function and implementation, including data flow and storage, the registered user management, message board information management, user rights management, user password management, message information and user increases, voice messages delete, the message information query, the query registered users, and so on. The system administrator, visitor login. Administrators can view the user registration information and message information, can be modified to delete its functions. Visitors can sign up for casual users log in and use the user a message. Keywords: Personal website; Visitor; Managor;Message board目录1.第一章课题背景 (5)1.1课程要求 (5)1.2设计概要 (5)1.3工具及环境简介 (5)2.第二章设计简介及设计方案论述 (5)2.1系统功能概述 (5)2.1.1 用户类型 (6)2.1.2 管理员 (6)2.1.3 普通用户 (6)2.2数据库设计 (7)2.2.1管理员息表: (7)2.2.2注册用户留言信息表: (7)3.第三章详细设计 (7)3.1首页设计 (7)3.1.1 管理员登录 (14)3.2管理员审核留言信息 (17)4.第四章设计结果及分析 (18)4.1首页界面结果 (18)4.1.1首页界面如下: (18)4.1.2 管理员登录 (18)4.2留言板信息管理 (19)4.2.1 留言内容信息 (19)4.2.2 删除用户信息 (19)4.2.3 审核通过用户信息 (20)4.2.4 审核不通过用户留言信息 (21)4.2.5 敏感词的过滤实现 (22)4.3留言管理 (22)4.3.1 查看用户留言信息 (22)4.4结果分析 (23)5.总结 (24)1.第一章课题背景1.1 课程要求内容概要:个人网站留言板设计与实现。
留言簿设计报告班级09软件姓名***学号22号一部分:描述留言簿的模块划分二部分:用流程图的形式描述留言簿的执行流程三部分:各部分界面效果图及代码的具体实现四部分:设计过程中的错误及纠正五部分:设计感受六部分:附用户使用说明(包括安装环境部署环境,及使用),和设计时的数据库第一部分:留言簿的模块划分1.管理员管理模块身为管理员,有查看所有用户的资料信息,和所有用户的留言,并有修改和删除的权利,进入index.jsp首页后,先像其它用户一样访问主页,及留言板,若想留言或查看信息,则先登陆.点击留言请先登陆超链接,进入denglu.jsp的登陆页面.输入管理员的用户名及密码,即admin,进入success.jsp页面,在此页面里,管理员可以查看全部留言信息shuchu.jsp,并可以更改和删除.也可以查看所有用户的注册信息chakan.jsp.也可以查看个人信息gerenxinxi.jsp.在个人信息中可以修改用户名和密码即登录xiugai.jsp页面,但不可以注销用户,因为不能没有管理员.2.普通用户使用模块普通用户进入网站,也要先浏览主页,及留言板,若有意留言,则请先登录,登陆成功后进入success.jsp页面,在此页面中用户可以查看自己已经留言过的信息,即shuchu3.jsp页面,在此页面中可以对自己的留言进行更新和删除,即update.jsp页面和delete.jsp页面,若有意留言,则点击我要留言超链接,进入liuyanyemian.jsp页面,进行留言,再此页面中,可以更新自己的头像.在success.jsp中还可以查看个人信息,并对自己的用户名和密码进行修改,对自己的账号注销.即xiugai.jsp和cancel.jsp页面3.过客浏览模块身份为过客,进入网站后,先浏览主页,若有意留言,则点击留言请先登录,若没有账号,则在denglu.jsp的页面中,点击注册链接,进行注册,即insertuser.jsp页面,若用户名不曾被人注册过,则转到zhucechenggong.jsp的页面.点击此页面的登陆即可重新登陆,也可以退出网站.重新登陆后,就可以想普通会员一样进行操作了.4.退出系统退出,即tuichu.jsp页面.第二部分:流程图第三部分:各部分界面效果图及代码的具体实现index.jsp页面,主要用了一个qq表情,然后用marquee标签实现字体的运动,接下来是两个超级链接.访问主页后,进入留言板主页,标题有主人寄语,然后调用以下方法, public List QureyAll(String sql){List list=new ArrayList();this.getConnection();try {stat=con.createStatement();rs=stat.executeQuery(sql);while(rs.next()){Message message=new Message();message.setBorderID(rs.getInt("borderId"));message.setContent(rs.getString("content"));message.setImage(rs.getString("image"));message.setMsgtime(rs.getString("msgtime"));message.setReplyID(rs.getString("replyID"));message.setSubject(rs.getString("subject"));message.setUsername(rs.getString("username"));list.add(message);}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.println("数据库异常");e.printStackTrace();}CloseAll();return list;}输出所有人的留言,界面如下:若想要留言,则进入denglu.jsp页面,即用一个form表单即可,界面如下:登陆成功后,进入success.jsp,设置了几个超链接如下:若点击查看自己的留言,则进入shuchu3.jsp页面,在此页面,可以更新和删除,都是现获取自己的id号,然后操作,如下:输出方法如下:public Message QueryByID(int id){Message message=new Message();String sql="select * from t_board where borderID="+id;this.getConnection();try {stat=con.createStatement();rs=stat.executeQuery(sql);if(rs.next()){message.setBorderID(rs.getInt("borderID"));message.setContent(rs.getString("content"));message.setImage(rs.getString("image"));message.setMsgtime(rs.getString("msgtime"));message.setReplyID(rs.getString("replyID"));message.setSubject(rs.getString("subject"));message.setUsername(rs.getString("username"));}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.println("数据库异常");e.printStackTrace();}CloseAll();}在jsp页面调用:String id=request.getParameter("id");int borderid=Integer.parseInt(id);DBConn db=new DBConn();Message message=db.QueryByID(borderid);更新主要实现就是:String id=request.getParameter("id");String subject=request.getParameter("subject");String content=request.getParameter("content");String updatetime=new Date().toLocaleString();String sql="update t_board set subject='"+subject+"',content='" +content+"',msgtime='"+updatetime+"',image='"+image+"' where borderID="+id;DBConn db=new DBConn();int flag=db.executeUpdate(sql);if(flag>0){response.sendRedirect("shuchu3.jsp");}else{out.print("出现异常,重新留言!");}删除主要实现就是将sql语句进行修改一下:String sql="delete from t_board where borderID="+borderid;当然参数也没必要获得那么多.更新和删除的主要方法为:public int executeUpdate(String sql){int flag=0;try {this.getConnection();stat=con.createStatement();flag=stat.executeUpdate(sql);}catch (SQLException e) {e.printStackTrace();}CloseAll();return flag;}界面如下:若点击查看自己的个人信息,则进入gerenxinxi.jsp 页面,sql 语句用username 追踪, 调用如下的方法:public Genggai QureyAll2(String sql){ Genggai xinxi=new Genggai(); this .getConnection(); try { stat =con .createStatement(); rs =stat .executeQuery(sql); if (rs .next()){ xinxi.setId(rs .getInt("id"));xinxi.setUsername(rs .getString("username")); xinxi.setPwd(rs .getString("pwd")); xinxi.setSex(rs .getString("sex"));xinxi.setBirthday(rs .getString("birthday")); xinxi.setEmail(rs .getString("email")); xinxi.setAddress(rs .getString("address"));xinxi.setTelephone(rs .getString("telephone"));}} catch (SQLException e) {System.out .println("数据库异常");e.printStackTrace();}CloseAll();return xinxi;}在jsp 页面这样输出:out.print("<tr>");out.print("<td width='40%' align='center'>");out.print("<font size='5' color='orange' face='隶书'>"); out.print("您的id 号是:"); out.print("</font>"); out.print("</td>");out.print("<td align='center'>");out.print(xinxi.getId());out.print("</td>");out.print("</tr>");其他列名输出跟上面的id一样,界面如下:若点击如上的”修改用户名或密码”进入如下页面,即xiugaiyemian.jsp,也是定义一个form表单若修改成功,则进入xiugaichenggong.jsp页面,界面如下:若点击success.jsp 页面的”注销用户”,则进入如下页面,同样也是定义form 表单,成功后进入cancelsuccess.jsp 页面,两个界面如下:注销用户方法是:public int TestCancel(String username,String pwd){ int flag=0;DBConn db=new DBConn(); con =db.getConnection();String sql="delete from t_user where username=? and pwd=?"; try { prests = con .prepareStatement(sql); prests .setString(1,username); prests .setString(2,pwd); flag=prests .executeUpdate(); } catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}return flag;}若在登陆页面,点击”注册”,进入regist.jsp 页面如下,也是一个复杂的form 表单,添加了背景和qq 表情:注册插入到数据库的方法主要有两个,一个用来判断用户名是否已经存在,一个用来插入:如下判断:public int Testpanduan(String username){int s=0;DBConn db=new DBConn();con =db.getConnection();String sql="select * from t_user where username=?";try {prests =con .prepareStatement(sql);prests .setString(1,username);rs =prests .executeQuery();if (rs .next()) {s=1;rs .close();prests .close();}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return s; } 插入:public int Testinsert(String username,String pwd,String repwd,String sex,String birthday,String email,String address,String telephone){ DBConn db=new DBConn();con=db.getConnection();int flag=0;String sql="insert into t_user values(?,?,?,?,?,?,?)";try{if(pwd.equals(repwd)){prests=con.prepareStatement(sql);prests.setString(1,username);prests.setString(2,pwd);prests.setString(3,sex);prests.setString(4,birthday);prests.setString(5,email);prests.setString(6,address);prests.setString(7,telephone);flag=prests.executeUpdate();}}catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return flag;}注册成功后,进入zhucechenggong.jsp页面,也添加了背景图片和qq表情,使之美观,界面如下:若访问的是管理员,则进入如下界面,他可以查看所有用户的所有留言和所有信息:若查看所有用户的全部资料,则进入chakan.jsp页面,在此页面可以管理员进行删除,输出方法是:public ResultSet QureyAll3(String sql){Genggai xinxi=new Genggai();this.getConnection();try {stat=con.createStatement();rs=stat.executeQuery(sql);if(rs.next()){xinxi.setId(rs.getInt("id"));xinxi.setUsername(rs.getString("username"));xinxi.setPwd(rs.getString("pwd"));xinxi.setSex(rs.getString("sex"));xinxi.setBirthday(rs.getString("birthday"));xinxi.setEmail(rs.getString("email"));xinxi.setAddress(rs.getString("address"));xinxi.setTelephone(rs.getString("telephone"));}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.println("数据库异常");e.printStackTrace();}return rs;}在jsp页面调用方法后用<%out.print(rs.getString("email")); %> 删除链接是:<a href="deletemsg2.jsp?id=<%=rs.getInt("id")%>">删除</a>界面如下:管理员还可以有权利对所有用户的留言进行删除:主要方法同上面提到的.界面如下:点击我要留言链接后,进入我要留言页面:添加笑脸和更新头像的方法如下:<%int count=0;for(int i=0;i<40;i++){ %><input type="radio" name="image" value="<%=i+1 %>" onclick="addimg(this)"><img src="images2/<%=i+1 %>.png"><% count++;if(count%8==0)out.print("<br>"); }%>更新头像:<select name="image" onchange="change();"><%for(int i=1;i<=30;i++){%><option value="<%=i%>"><%=i %></option><% } %></select><img src="photo/1.jpg" width="100" height="100" name="head"/> 但要用到JavaScript语言:选择头像: function addimg(obj){var s=obj.value;var con=document.form1.content.value;con=con+"<img src=images2/"+s+".png>";document.form1.content.value=con; }更换头像: function change(){var image=document.form1.image1.value;document.head.src="photo/"+image+".jpg";}留言界面如下:最后是退出页面,主要是图片和qq表情的设置.使页面更生动,界面如下:第四部分:设计过程中的错误及纠正在做动态网页的时候,遇到的小错误有很多,每次都是经过反复的调试得出的,有时候写错某个方法中的某个字母,就会调试很长时间,当然同时也加深了印象.例如在用JavaScript语句中,不能弹出alert对话框,仔细分析代码,发现表单form名字写成了from.主要的错误有以下几个方面:1.在编写查看所有人的信息遇到传递参数时的空指针,而且在方法体中用了db.CloseAll();方法,出现连接对象已经关闭的错误.应该用out.print(rs.getString(username));而不是用out.print(xinxi.getUsername());2.在删除留言时,超链接中的id一直传递不过去使得intborderid=Integer.parseInt(id);一直出现错误,出现空指针.,仔细检查发现是超链接中的id=<%=message.getBorderID()%>写错3.在插入新留言的时候,一直出现中文乱码,插入如下两条语句,即可解决byte aa[]=subject.getBytes("ISO-8859-1"); subject=new String(aa);byte bb[]=content.getBytes("ISO-8859-1");content=new String(bb);更新头像的时候,头像不能同时显示出来4.在注册新用户时,由于既要用sql语句判断用户名是否已经存在,又用到要在不存在的时候插入的sql语句,导致逻辑混乱,仔细推敲后,才运行得到.5.因为要在多个页面用到传递的username等等,所以一定要用session获取参数6.在更新留言时,要用到<input type="hidden" name="id" value="<%=id %>">传递隐藏的参数,由于刚开始不明白,出现了很多逻辑上的错误.第五部分: 设计感受1.这次的留言板设计感受很多,有时某一个很小的错误,比如丢一个括号,写错一个字母,就会浪费很长的时间.所以做完就用了很长的时间.当然对程序里的某些方法的应用,也不是太清楚,如过滤信息的设置等.我觉得还是孜孜不倦的从一点点的做起,比如每个网页的背景图片,就设计了不少时间,因为我觉得一个网站的美观效果也是很重要的.每当睡觉的时候,只要一想起,啊,我的留言板还没有做完,就会带着思考入梦了.老实说,这个留言板不是很难,可能是刚接触数据库与jsp的链接吧,当时出了很多例如数据库异常的错误,到后期的时候就好多了…在对用户信息或用户的留言进行更新,删除,插入,查找等等时,这些方法都从jsp的页面,提到java类里面,方法都是大同小异,无非是数据库的链接,执行sql语句的对象的创建和应用,以及接受结果的存放等等.主要是预处理对象和执行对像的flag=stat.executeUpdate(sql);rs=stat.executeQuery(sql);这两个方法的调用.2. 在这期间离不开同学与同学,舍友与舍友之间互相学习和交流,所以收益也很大,也感受到了集体的力量.经过这次的留言板制作,收获很多.不仅对连接数据库方面的知识懂了很多,对sql语句的书写记忆深刻,而且还回忆了以前的很多函数的调用,方法的编写等等.相信在以后的学习中会更进一步,掌握更多的知识和应用.第六部分:附用户使用说明(包括安装环境部署环境,及使用),和设计时的数据库在MyEclipse7.0的环境下实现,将Tomcat6.0服务器,JDK7下载以及部署进去设计时的数据库使用Microsoft SQL server 2000。
php+mysql制作留言板第一部分工具:Dreamweaverphp、mysql服务器步骤/方法首先是确定自己的留言板需求.例如:名字,邮件及留言内容.一. 建立一个数据库guestbook。
CREATE TABLE IF NOT EXISTS `content` (`id` int(11) NOT NULL auto_increment,`name` varchar(20) NOT NULL,`email` varchar(50) NOT NULL,`content` varchar(200) NOT NULL,PRIMARY KEY (`id`))ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;二. 新建config.php< ? php$q = mysql_connect("服务器","数据库用户","数据库密码");if(!$q){die('Could not connect: ' . mysql_error());}mysql_query("set names utf8"); //以utf8读取数据mysql_select_db("guestbook",$q); //数据库?>三. 新建index.php< ?phpinclude("config.php"); //引入数据库连接文件$sql = "select * from content"; //搜索数据表content$resule = mysql_query($sql,$q);?>< html>< meta http-equiv="Content-Type" content="text/html; charset=utf-8" />< body>< table width="678" align="center">< tr>< td colspan="2">< h1>留言本< /h1>< /td>< /tr>< tr>< td width="586">< a href="index.php">首页< /a> | < a href="liuyan.php">留言< /a>< /td>< /tr>< /table>< p>< ?while($row=mysql_fetch_array($resule)){?>< /p>< table width="678" border="1" align="center"cellpadding="1" cellspacing="1">< tr>< td width="178">Name:< ? echo $row[1] ?>< /td>< td width="223">Email:< ? echo $row[2] ?>< /td>< /tr>< tr>< td colspan="4">< ? echo $row[3] ?>< /td>< /tr>< tr>< /table>< ?}?>< /body>< /html>四. 新建liuyan.php< html>< body>< meta http-equiv="Content-Type" content="text/html; charset=utf-8" />< table width="678" align="center">< tr>< td colspan="2">< h1>留言本< /h1>< /td>< /tr>< tr>< td width="586">< a href="index.php">首页< /a> | < a href="liuyan.php">留言< /a>< /td>< /tr>< /table>< table align="center" width="678">< tr>< td>< form name="form1" method="post" action="post.php">< p>Name:< input name="name" type="text" id="name">< /p>< p>Email:< input type="test" name="email" id="email">< /p>< p>留言:< /p>< p>< textarea name="content" id="content" cols="45" rows="5">< /textarea>< /p>< p>< input type="submit" name="button" id="button" value="提交">< input type="reset" name="button2" id="button2" value="重置">< /p>< /form>< /td>< /tr>< /table>< /body>< /html>五. 新建post.php< ?phpheader("content-Type: text/html; charset=utf-8"); include("config.php");$name= $_POST['name'];$email= $_POST['email'];$patch = $_POST['content'];$content = str_replace("","< br />",$patch);$sql = "insert into content (name,email,content) values ('$name','$email','$content')";mysql_query($sql);echo "< script>alert('提交成功!返回首页。
LOGIN.JSP<%@ page contentType="text/html;charset=gb2312"%> <html><head><title>JSP+JDBC 留言管理程序――登陆</title></head><body><center><h1>留言管理范例―― JSP + JDBC实现</h1><hr><br><%// 判断是否有错误信息,如果有则打印// 如果没有此段代码,则显示时会直接打印nullif(request.getAttribute("err")!=null){%><h2><%=request.getAttribute("err")%></h2><%}%><form action="login_conf.jsp" method="post"><table width="80%"><tr><td colspan="2">用户登陆</td></tr><tr><td>用户名:</td><td><input type="text" name="id"></td></tr><tr><td>密码:</td><td><input type="password" name="password"></td> </tr><tr><td colspan="2"><input type="submit" value="登陆"><input type="reset" value="重置"></td></tr></table></form></center></body></html>LOGIN_CONF.JSP<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%><html><head><title>JSP+JDBC 留言管理程序――登陆</title></head><body><center><h1>留言管理范例―― JSP + JDBC实现</h1><hr><br><%!String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;String DBURL = "jdbc:oracle:thin:@localhost:1521:three" ;String DBUSER = "scott" ;String DBPASSWORD = "tiger" ;Connection conn = null ;PreparedStatement pstmt = null ;ResultSet rs = null ;%><%// 声明一个boolean变量,用于保存用户是否合法的状态boolean flag = false ;// 接收参数String id = request.getParameter("id") ;String password = request.getParameter("password") ;%><%String sql = "SELECT name FROM person WHERE id=? and password=?" ; try{Class.forName(DBDRIVER) ;conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.prepareStatement(sql) ;pstmt.setString(1,id) ;pstmt.setString(2,password) ;rs = pstmt.executeQuery() ;if(rs.next()){// 用户合法flag = true ;// 将用户名保存在session之中session.setAttribute("uname",rs.getString(1)) ;}else{// 保存错误信息request.setAttribute("err","错误的用户名及密码!!!") ; }rs.close() ;pstmt.close() ;conn.close() ;}catch(Exception e){}%><%// 跳转if(flag){// 用户合法%><jsp:forward page="login_success.jsp"/>}else{// 用户非法%><jsp:forward page="login.jsp"/><%}%></center></body></html>LOGIN_SUCCESS.JSP<%@ page contentType="text/html;charset=gb2312"%> <html><head><title>JSP+JDBC 留言管理程序――登陆</title></head><body><center><h1>留言管理范例―― JSP + JDBC实现</h1><hr><br><%if(session.getAttribute("uname")!=null)// 用户已登陆%><h2>登陆成功</h2><h2>欢迎<font color="red" size="12"><%=session.getAttribute("uname")%></font>光临MLDN留言程序</h2><h3><a href="list_notes.jsp">进入留言管理页面</a></h3> <%}else{// 用户未登陆,提示用户登陆,并跳转response.setHeader("refresh","2;URL=login.jsp") ;%>您还未登陆,请先登陆!!!<br>两秒后自动跳转到登陆窗口!!!<br>如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <%}%></center></body></html>INSERT.JSP<%@ page contentType="text/html;charset=gb2312"%> <html><head><title>JSP+JDBC 留言管理程序――登陆</title></head><body><center><h1>留言管理范例―― JSP + JDBC实现</h1><hr><br><%if(session.getAttribute("uname")!=null){// 用户已登陆%><form action="insert_do.jsp" method="post"><table><tr><td colspan="2">添加新留言</td></tr><tr><td>标题:</td><td><input type="text" name="title"></td></tr><tr><td>作者:</td><td><input type="text" name="author"></td></tr><td>内容:</td><td><textarea name="content" cols="30" rows="6"></textarea></td> </tr><tr><td colspan="2"><input type="submit" value="添加"><input type="reset" value="重置"></td></tr></table></form><h3><a href="list_notes.jsp">回到留言列表页</a></h3><%}else{// 用户未登陆,提示用户登陆,并跳转response.setHeader("refresh","2;URL=login.jsp") ;%>您还未登陆,请先登陆!!!<br>两秒后自动跳转到登陆窗口!!!<br>如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br><%}%></center></body>INSERT_DO.JSP<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%><html><head><title>JSP+JDBC 留言管理程序――登陆</title></head><body><center><h1>留言管理范例―― JSP + JDBC实现</h1><hr><br><%// 进行乱码处理request.setCharacterEncoding("GB2312") ;%><%if(session.getAttribute("uname")!=null){// 用户已登陆%><%!String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;String DBURL = "jdbc:oracle:thin:@localhost:1521:three" ; String DBUSER = "scott" ;String DBPASSWORD = "tiger" ;Connection conn = null ;PreparedStatement pstmt = null ;%><%// 声明一个boolean变量boolean flag = false ;// 接收参数String title = request.getParameter("title") ;String author = request.getParameter("author") ;String content = request.getParameter("content") ;%><%// 现在note表中的主键是sequence生成String sql = "INSERT INTO note VALUES(note_sequ.nextVal,?,?,?)" ;try{Class.forName(DBDRIVER) ;conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.prepareStatement(sql) ;pstmt.setString(1,title) ;pstmt.setString(2,author) ;pstmt.setString(3,content) ;pstmt.executeUpdate() ;pstmt.close() ;conn.close() ;// 如果插入成功,则肯定能执行到此段代码flag = true ;}catch(Exception e){}%><%response.setHeader("refresh","2;URL=list_notes.jsp") ;if(flag){%>留言添加成功,两秒后跳转到留言列表页!!!<br>如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!!<%}else{%>留言添加失败,两秒后跳转到留言列表页!!!<br>如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!!<%}%><%}else{// 用户未登陆,提示用户登陆,并跳转response.setHeader("refresh","2;URL=login.jsp") ;%>您还未登陆,请先登陆!!!<br>两秒后自动跳转到登陆窗口!!!<br>如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <%}%></center></body></html>LIST_NOTES.JSP<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*"%><html><head><title>JSP+JDBC 留言管理程序――登陆</title></head><body><center><h1>留言管理范例―― JSP + JDBC实现</h1><hr><br><%// 编码转换request.setCharacterEncoding("GB2312") ;if(session.getAttribute("uname")!=null)// 用户已登陆%><%!String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;String DBURL = "jdbc:oracle:thin:@localhost:1521:three" ;String DBUSER = "scott" ;String DBPASSWORD = "tiger" ;Connection conn = null ;PreparedStatement pstmt = null ;ResultSet rs = null ;%><%// 如果有内容,则修改变量i,如果没有,则根据i的值进行无内容提示int i = 0 ;String sql = null;String keyword = request.getParameter("keyword") ;// out.println(keyword) ;if(keyword==null){// 没有任何查询条件sql = "SELECT id,title,author,content FROM note" ;}else{// 有查询条件sql = "SELECT id,title,author,content FROM note WHERE title like ? or author like ? or content like ?" ;}try{Class.forName(DBDRIVER) ;conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.prepareStatement(sql) ;// 如果存在查询内容,则需要设置查询条件if(keyword!=null){// 存在查询条件pstmt.setString(1,"%"+keyword+"%") ;pstmt.setString(2,"%"+keyword+"%") ;pstmt.setString(3,"%"+keyword+"%") ;}rs = pstmt.executeQuery() ;%><form action="list_notes.jsp" method="POST">请输入查询内容:<input type="text" name="keyword"><input type="submit" value="查询"></form><h3><a href="insert.jsp">添加新留言</a></h3><table width="80%" border="1"><tr><td>留言ID</td><td>标题</td><td>作者</td><td>内容</td><td>删除</td></tr><%while(rs.next()){i++ ;// 进行循环打印,打印出所有的内容,以表格形式// 从数据库中取出内容int id = rs.getInt(1) ;String title = rs.getString(2) ;String author = rs.getString(3) ;String content = rs.getString(4) ;if(keyword!=null){// 需要将数据返红title = title.replaceAll(keyword,"<font color=\"red\">"+keyword+"</font>") ; author = author.replaceAll(keyword,"<fontcolor=\"red\">"+keyword+"</font>") ;content = content.replaceAll(keyword,"<fontcolor=\"red\">"+keyword+"</font>") ;}%><tr><td><%=id%></td><td><a href="update.jsp?id=<%=id%>"><%=title%></a></td><td><%=author%></td><td><%=content%></td><td><a href="delete_do.jsp?id=<%=id%>">删除</a></td> </tr><%}// 判断i的值是否改变,如果改变,则表示有内容,反之,无内容 if(i==0){// 进行提示%><tr><td colspan="5">没有任何内容!!!</td></tr><%}%></table><%rs.close() ;pstmt.close() ;conn.close() ;}catch(Exception e){}%><%}else{// 用户未登陆,提示用户登陆,并跳转response.setHeader("refresh","2;URL=login.jsp") ;%>您还未登陆,请先登陆!!!<br>两秒后自动跳转到登陆窗口!!!<br>如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <%}%></center></body></html>UPDATE.JSP<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*"%><html><head><title>JSP+JDBC 留言管理程序――登陆</title></head><body><center><h1>留言管理范例―― JSP + JDBC实现</h1><hr><br><%if(session.getAttribute("uname")!=null){// 用户已登陆%><%!String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;String DBURL = "jdbc:oracle:thin:@localhost:1521:three" ;String DBUSER = "scott" ;String DBPASSWORD = "tiger" ;Connection conn = null ;PreparedStatement pstmt = null ;ResultSet rs = null ;%><%// 接收参数int id = 0 ;try{id = Integer.parseInt(request.getParameter("id")) ;}catch(Exception e){}%><%// 如果有内容,则修改变量i,如果没有,则根据i的值进行无内容提示 int i = 0 ;String sql = "SELECT id,title,author,content FROM note WHERE id=?" ; try{Class.forName(DBDRIVER) ;conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;pstmt = conn.prepareStatement(sql) ;// 设置查询条件pstmt.setInt(1,id) ;rs = pstmt.executeQuery() ;%><%if(rs.next()){i++ ;// 进行循环打印,打印出所有的内容,以表格形式// 从数据库中取出内容id = rs.getInt(1) ;String title = rs.getString(2) ;String author = rs.getString(3) ;String content = rs.getString(4) ;%><form action="update_do.jsp" method="post"><table><tr><td colspan="2">添加新留言</td></tr><tr><td>标题:</td><td><input type="text" name="title" value="<%=title%>"></td></tr><tr><td>作者:</td><td><input type="text" name="author" value="<%=author%>"></td></tr><tr><td>内容:</td><td><textarea name="content" cols="30"rows="6"><%=content%></textarea></td></tr><tr><td colspan="2"><input type="hidden" name="id" value="<%=id%>"> <input type="submit" value="更新"><input type="reset" value="重置"></td></tr></table></form><%}else{%>没有发现,要更新的内容!!<br>请确认要更新的留言是否存在!!<br><%}%><%rs.close() ;pstmt.close() ;conn.close() ;}catch(Exception e){}%><h3><a href="list_notes.jsp">回到留言列表页</a></h3><%}else{// 用户未登陆,提示用户登陆,并跳转response.setHeader("refresh","2;URL=login.jsp") ;%>您还未登陆,请先登陆!!!<br>两秒后自动跳转到登陆窗口!!!<br>如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <%}%></center></body></html>UPDATE_DO.JSP<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*"%><html><head><title>JSP+JDBC 留言管理程序――登陆</title></head><body><center><h1>留言管理范例―― JSP + JDBC实现</h1><hr><br><%// 进行乱码处理request.setCharacterEncoding("GB2312") ;%><%if(session.getAttribute("uname")!=null){// 用户已登陆%><%!String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;String DBURL = "jdbc:oracle:thin:@localhost:1521:three" ; String DBUSER = "scott" ;String DBPASSWORD = "tiger" ;Connection conn = null ;PreparedStatement pstmt = null ;%><%// 声明一个boolean变量boolean flag = false ;// 接收参数String title = request.getParameter("title") ;String author = request.getParameter("author") ;String content = request.getParameter("content") ;int id = 0 ;try{id = Integer.parseInt(request.getParameter("id")) ;}catch(Exception e){}%><%// 更新note表中的数据String sql = "UPDATE note set title=?,author=?,content=? WHERE id=?" ; try{Class.forName(DBDRIVER) ;conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.prepareStatement(sql) ;pstmt.setString(1,title) ;pstmt.setString(2,author) ;pstmt.setString(3,content) ;pstmt.setInt(4,id);pstmt.executeUpdate() ;pstmt.close() ;conn.close() ;// 如果修改成功,则肯定能执行到此段代码flag = true ;}catch(Exception e){}%><%response.setHeader("refresh","2;URL=list_notes.jsp") ;if(flag){%>留言修改成功,两秒后跳转到留言列表页!!!<br>如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!!<%}else{%>留言修改失败,两秒后跳转到留言列表页!!!<br>如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!!<%}%><%}else{// 用户未登陆,提示用户登陆,并跳转response.setHeader("refresh","2;URL=login.jsp") ;%>您还未登陆,请先登陆!!!<br>两秒后自动跳转到登陆窗口!!!<br>如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <%}%></center></body></html>DELETE_DO.JSP<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*"%><html><head><title>JSP+JDBC 留言管理程序――登陆</title></head><body><center><h1>留言管理范例―― JSP + JDBC实现</h1><hr><br><%if(session.getAttribute("uname")!=null){// 用户已登陆%><%!String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;String DBURL = "jdbc:oracle:thin:@localhost:1521:three" ;String DBUSER = "scott" ;String DBPASSWORD = "tiger" ;Connection conn = null ;PreparedStatement pstmt = null ;%><%// 接收参数int id = 0 ;try{id = Integer.parseInt(request.getParameter("id")) ;}catch(Exception e){}%><%String sql = "DELETE FROM note WHERE id=?" ;boolean flag = false ;try{Class.forName(DBDRIVER) ;conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; pstmt = conn.prepareStatement(sql) ;// 设置删除条件pstmt.setInt(1,id) ;pstmt.executeUpdate() ;pstmt.close() ;conn.close() ;flag = true ;}catch(Exception e){}%><%response.setHeader("refresh","2;URL=list_notes.jsp") ;if(flag){%>留言删除成功,两秒后跳转到留言列表页!!!<br>如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!!<%}else{%>留言删除失败,两秒后跳转到留言列表页!!!<br>如果没有跳转,请按<a href="list_notes.jsp">这里</a>!!!<%}%><%}else{// 用户未登陆,提示用户登陆,并跳转response.setHeader("refresh","2;URL=login.jsp") ;%>您还未登陆,请先登陆!!!<br>两秒后自动跳转到登陆窗口!!!<br>如果没有跳转,请按<a href="login.jsp">这里</a>!!!<br> <%}%></center></body></html>-- 创建表-- 用户表(登陆)、留言表-- 删除表DROP TABLE person ;DROP TABLE note ;-- 删除序列DROP SEQUENCE note_sequ ;-- 创建序列CREATE SEQUENCE note_sequ ;-- 创建person表CREATE TABLE person(id varchar(20) not null primary key ,name varchar(20) ,password varchar(20)) ;-- 创建留言表CREATE TABLE note(id int not null primary key , -- sequencetitle varchar(20) not null ,author varchar(20) not null ,content varchar(50) not null) ;-- 插入测试数据INSERT INTO person VALUES ('LXH','李兴华','zzzzzz') ; INSERT INTO person VALUES ('MLDN','魔乐','mmmmmm') ;。
jsp课程设计留言簿一、教学目标本课程的学习目标包括以下三个方面:1.知识目标:学生需要掌握JSP的基本概念、原理和编程方法,了解JSP在Web开发中的应用和优势。
2.技能目标:学生能够熟练使用JSP编写简单的Web应用程序,掌握JSP的内置对象、标签库和脚本语言等开发技巧。
3.情感态度价值观目标:培养学生对JSP编程的兴趣和热情,提高学生解决问题的能力和团队合作精神。
通过本课程的学习,学生将能够了解JSP的基本知识,掌握JSP编程方法,并具备实际应用JSP开发Web应用程序的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.JSP基本概念:介绍JSP的定义、特点和应用场景,使学生了解JSP的基本概念。
2.JSP编程基础:讲解JSP的语法规则、内置对象、标签库和脚本语言等基本知识,培养学生编写简单的JSP页面。
3.JSP高级应用:深入学习JSP的高级功能,如会话管理、文件上传下载、数据库访问等,提高学生开发复杂Web应用程序的能力。
4.实战项目:通过实际项目的开发,使学生将所学知识运用到实际工作中,培养学生的实际操作能力和解决问题的能力。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解JSP的基本概念和原理,使学生掌握JSP的基础知识。
2.案例分析法:分析实际项目案例,让学生了解JSP在实际应用中的优势和特点。
3.实验法:安排实验课,让学生动手编写JSP代码,培养学生的实际操作能力。
4.小组讨论法:学生进行小组讨论,分享学习心得和经验,提高学生的团队合作精神。
四、教学资源为了支持本课程的教学内容和教学方法,我们将提供以下教学资源:1.教材:选择权威、实用的JSP教材,为学生提供系统的学习资料。
2.参考书:提供相关的JSP参考书籍,丰富学生的知识体系。
3.多媒体资料:制作课件、教学视频等多媒体资料,增强课堂教学的趣味性。
4.实验设备:提供计算机、服务器等实验设备,确保学生能够进行实际操作。
基于Java EE的高级程序设计——实验一实验名称项目名称:基于JSP的留言系统开发课时安排:2课时实验要求实验要求:用JSP、Servlet和JavaBean开发一个简单的留言系统。
实验目标学习JSP、Servlet等技术,完成一个简单的留言系统的开发,实现登录、留言发布等功能,通过本次实验让学生熟悉JSP和Servlet的开发步骤,掌握实现MVC架构所需要的实践技能。
(1)熟悉HTML(2)熟悉Servlet(3)熟悉JSP(4)熟悉JDBC(5)掌握JSP、Servlet开发方法(6)完成系统,并打包运行需求分析系统原型相关界面:登录相关界面如下图所示:留言相关界面如下图所示:实验步骤1、需求分析既然是留言系统,肯定要有用户登录,所以需要一个用户表(userTable)。
字段包括:id、username 和password。
其中id设为自动增长的int型,并设为主键。
username和password都设为varchar型。
登录成功后要有个主界面,显示别人和自己的留言信息,那就应该有个留言表(lyTable)。
字段包括:id、userId、date、title、content。
其中id设为自动增长的int型,并设为主键。
userId是user表中的id,表明该条留言是该用户留的。
2、建立数据库与表建立数据库,命名为“javaee”,这里我们用的是MySQL。
然后在该数据库中建立上面提到的两个表:userTable表、lyTable表。
userTable表:lyTable表:CREATE TABLE `usertable` (`id` int(11) NOT NULL auto_increment, `username` varchar(50) default NULL, `password` varchar(20) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=gbk CREATE TABLE `lytable` (`id` int(11) NOT NULL auto_increment,`userId` int(11) default NULL,`data` datetime default NULL,`title` varchar(50) default NULL,`content` varchar(500) default NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=gbk 3、新建项目打开MyEclipse,新建项目,命名为“JSPExample”。
实验3:JSP访问数据库实验一、实验目的:●掌握My SQL数据库的安装与使用操作,掌握Web应用程序对My SQL数据库连接和进行访问的方法。
●通过JDBC对数据库执行SQL语句,掌握Web应用程序的编写方法。
二、实验要求:●安装My SQLr数据库,使用专业开发工具MyEclipse编程。
●编写程序完成以下实验内容并上交实验报告。
三、实验内容:构建一个留言板系统。
编写JSP访问程序,其具有用户与数据的查询、增加、修改与删除功能。
另外,还需要使用连接池技术,并具有登录验证要求,以及数据分页显示功能等。
四、实验过程中遇到的问题及解决手段:在实验过程中,在写模糊查询功能的代码的时候text控件传递过来的参数,由于是不确定的,或者是用户名,或者是标题,或者是留言内容,模糊查询就是把这里面所有的包含要查询的关键字的内容的记录提取出来,但是不能够确定用户输入的关键字是用户名还是标题还是内容,所以无法确定使用哪一条SQL查询语句。
后来请教同学才知道可以使用“select from where like…”的语句,然后调用prepareStatement里面的setString()来进行查询,然后就能实现这个模糊查询了。
另外,在本次实验中,由于时间的紧凑,还没来得及实现新用户注册的功能,但是这个问题将会在日后逐步完善。
五、程序源代码:①留言板欢迎页面<%@page language="java"import=".*"pageEncoding="UTF-8"%><body bgcolor="#ffffcc"><p align=center><font size=8color=orange>欢迎使用本留言簿系统</font><br><br><br><br><br> <font size=6><a href="">查看留言板</a><br><br><a href="">我要留言</a><br></font></p></body></html>②登陆页面<%@page contentType="text/html;charset=gb2312"%><html><body bgcolor="#ffffcc"><center><form action=""><font size=6color=red>请先登录!</font><br><br><br>用户名:<input type="text"name="userName"><br><br>密 码:<input type="text"name="password"><br><br> <input type="submit"value="登陆"><input type="reset"value="取消"></form></center></body></html><%@page contentType="text/html;charset=gb2312"%><html><body><% String user=("userName");String password=("password");if("admin")&&("admin")){%><jsp:forward page=""/><%} %></body></html>③新增留言界面<%@page language="java"import=".*"pageEncoding="GBK"%><html><body bgcolor="#ffffcc"><form action=""methed="post"><table align="center"><tr><td>用户名:</td><td><input type="text"name="name"size="20"></td> </tr><tr height="30"><td>留言标题:</td><td><input type="text"name="title"size="35"></td> </tr><tr><td>留言内容:</td><td><textarea name="content"rows="8"cols="34"></textarea></td> </tr><tr align="center"><td colspan="2"><input type="submit"value="留言"><input type="reset"value="清除"></td></tr></table></form></body></html><%@page contentType="text/html;charset=gb2312"%><%@page import=".*"%><html><body><%("").newInstance();Connection conn =("jdbc:"+"useUnicode=true&characterEncoding=gbk","root","123");Statement stat=();String name=("name");name =new String("iso-8859-1"));String title=("title");title = new String("iso-8859-1"));String content=("content");content =new String("iso-8859-1"));if(" ")|(" ")|(" ")){("");}else{String sql="insert intoInsertMessage(Name,Title,Content)values('"+name+"','"+title+"','"+conte nt+"')";(sql);("数据库连接成功");("");}();();%></body></html>④显示留言板界面和查询留言界面输入关键字查找留言:显示查找内容:<%@page contentType="text/html;charset=gbk"%><%@page import=".*"%><body bgcolor="#ffffcc"><font size=6color=red><p align="center"><strong>留 言 板</strong></p></font><form action=""method="post">请输入查询内容:<input type="text"name="keyword"/> <inputtype="submit"value="查询"/></form><hr><table width="800"border="1"align="center"><tr><td width=115><font size=4><strong>用户名</strong></font></td><td width=86><font size=4><strong>标题</strong></font></td><td width=291><font size=4><strong>留言内容</strong></font></td><td width=86><font size=4><strong>操作</strong></font></td></tr><%try {String url = "jdbc:";("").newInstance();"pageEncoding="gbk"%><%@page import=".*"%><html><body bgcolor="#ffffcc"><%!String DBDRIVER = "";String DBURL = "jdbc:";String DBUSER = "root";String DBPASSWORD = "123";Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;String sql = null;int result = 0;%><p align="center">修改新留言</p><%("gbk");String name = ("name");sql = "select * from InsertMessage where name= ";try {(DBDRIVER);conn = (DBURL, DBUSER, DBPASSWORD);pstmt = (sql);(1, name);rs = ();if ()) {name = (1);String title = (2);String content = (3);%><form method="post"action=""><table align="center"><tr><td>用户名:</td><td><input type="text"name="name"value="<%=name%>"size="20"></td></tr><tr height="30"><td>留言标题:</td><td><input type="text"name="title"value="<%=title%>"size="35"></td></tr><tr><td>内容:</td><td><textarea name="content"rows="8"cols="34"><%=content%></textarea></td></tr><tr align="center"><input type="hidden"name="id"value="<%=name%>"><td colspan="2"><input type="submit"value="留言"><inputtype="reset"value="清除"></td></tr></table><center><h3><a href="">返回留言管理列表</a></h3></form><%}();();();} catch (Exception e) {();}%><p> </p></body></html><%@page language="java"import=".*"pageEncoding="gbk"%> <%@page import=".*"%><html><body><%"pageEncoding="gbk"%><%@page import=".*"%><html><body><%!String DBDRIVER = "";String DBURL = "jdbc:";String DBUSER = "root";String DBPASSWORD = "123";Connection conn = null;PreparedStatement pstmt = null;String sql = null;boolean flag = false;%><%("utf-8");String name=("name");try{(DBDRIVER);conn = (DBURL,DBUSER,DBPASSWORD);sql = "delete from insertmessage where name = "; pstmt = (sql);(1, name);();();();flag = true;}catch(Exception e){();}%><%if(flag){("refresh","2;URL=");%><center>您删除成功!!<br/>两秒钟自动跳转到留言管理页面!!<br/>如何没有跳转,请点击<a href="">这里</a>!!</center><%}else{("refresh","2;URL=");%><center>您删除失败!!<br/>两秒钟自动跳转到留言管理页面!!<br/>如何没有跳转,请点击<a href="">这里</a>!!</center><%}%></body></html>六、本次实验的体会(结论):经过测试,增删查改功能基本实现了,基本达到了这个留言板的设计要求。
毕业设计论文题目: 留言簿系统的设计与制作摘要Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。
作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。
据估计,目前Internet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。
近年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的广泛应用,Web站点向用户提供的服务将越来越丰富,越来越人性化。
网站信息留言版系统 BBS(Bullitin Board System)是互联网上一种人与人之间交互的必备工具,特别是做网站必备, 网上网站信息留言版提供一个信息交流的空间,人们可以通过网站信息留言版一起讨论自己喜欢的话题,提出问题或者回答问题。
用户可以在网站信息留言版中发表对某个问题的看法阐述自己的观点,跟别人讨论对某个问题的看法,在Internet的发展中网站信息留言版的作用将是无法替代的。
该设计是基于HTML语言,并且采用了ASP语言组作为后台的编程语言,Dreamweaver 作为开发工具,以IIS为服务平台,实现了网络平台的构建,VBscript 技术实现了动态网页的制作,以确保系统的安全保密和易于维护。
而后台的数据库则采用了Access管理整个系统的后台数据。
本系统的一个重要特点是界面友好,操作简单。
本文概述了留言板的基本概念、性质和特点,介绍了论坛留言板的开发技术的现状和未来发展趋势,设计并实现了一个企业风格的留言板,对它的设计思想以及实现方法做了详细说明,并详细讲解了设计的技术关键点与难点以及它们的解决方法。
本设计的突出特点就是企业风格和ASP技术的应用。
JSP实现留言板系统1 留言板系统的功能设计通过留言板系统网站,可以展示每一个人的风采、优点,发布个人对一些事物的看法,增强个人之间,团体之间,个人与团体之间的交流联系,在Internet上实现信息的传递,提高办事效率。
为了方便大家的勾通和信息的获取,特开发留言板网站。
该系统以Internet为平台,前台可使任何人注册、登陆在留言板上进行发贴及讨论,版主或者前台管理者也可以进行一部分管理。
而管理员也可以在后台进行相关的管理。
数据库设计是把现实世界的商业模型与需求转换成数据库的模型的过程,它是建立数据库应用系统的核心问题。
设计的关键是如何使设计的数据库能合理地存储用户的数据,方便用户进行数据处理。
数据库设计完全是人的问题,而不是数据库管理系统的问题。
数据库设计应当由数据库管理员和系统分析员一起和用户一道工作,了解各个用户的要求,共同为整个数据库做出恰当的、完整的设计。
数据库及其应用的性能和调优都是建立在良好的数据库设计的基础上,数据库的数据是一切操作的基础,如果数据库设计不好,则其它一切调优方法提高数据库性能的效果都是有限的。
(1)本系统使用JSP作为开发工具,SQLServer2005为后台数据库,构建一个小型留言板网站系统,从功能需求到框架规划再到数据库设计。
(2)留言板网站为用户提供一个方便交流的平台,用户可以注册,可以发表留言。
管理员对留言和用户进行添加、删除、修改和更新操作。
(3)提供新“用户注册”功能,注册用户能够管理自己的账户信息。
(4)会员可以“留言”,可以“修改密码”,可以“查询”自己相应的信息。
(5)管理员通过“后台登录”后,可以通过“留言管理”来“查看”“回复的”或“未回复的”留言,可以对留言进行“回复”,也可以“删除”留言。
通过“会员管理”来“查看”会员信息,对会员进行相应的“封杀”或者是“删除”。
(6)在用户或管理员对系统进行相应的操作时,系统为了减少错误的发生,每一步操作都给予“确认”提示。
建立数据库bbs,在数据库bbs中建立表message,如下:CREA TE TABLE `message` (`id` tinyint(1) NOT NULL auto_increment,`user` varchar(25) NOT NULL,`title` varchar(50) NOT NULL,`content` tinytext NOT NULL,`lastdate` date NOT NULL,PRIMARY KEY(`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=1 ;1、(保存为conn.PHP)<?php$conn = @ mysql_connect("127.0.0.1","root","") or die("数据库链接错误");mysql_select_db("bbs",$conn);mysql_query("set names 'GBK'"); //使用GBK中文编码;function htmtocode($content) {$content = str_replace("\n", "<br>", str_replace(" ", " ", $content));return$content;}//$content=str_replace("'","‘",$content);//htmlspecialchars();?>注释:替换输入内容中输入的回车和空格,写入这个函数后,在list.php中的内容输出语句写为:Echo <?php echo htmtocode($row[content]);?>function htmtocode($content) {$content = str_replace("\n", "<br>", str_replace(" ", " ", $content));return$content;2、(保存为add.php)<?phpinclude("conn.php");include("head.php");if($_POST[submit]){$sql="insert into messagevalues('','$_POST[user]','$_POST[title]','$_POST[content]',now())";if(mysql_query($sql)) {echo"<center>发布成功<center/>";}}?><SCRIPT language=javascript>function CheckPost(){ if (er.value==""){ alert("请填写用户名");er.focus();return false;}if (myform.title.value.length<5)//这里的5个字符是5个汉字或者是5个字母。
Java系统开发能力综合实训课程设计报告设计题目:留言板管理系统专业:计算机科学与技术系班级:软件102(对口)学号:101012241姓名:吕明敬指导老师:李敬伟设计时间:2012-6-7教师评分:引言随着Internet的发展,网站的作用越来越重要,被称之为继广播、报纸、杂志、电视后的第五种媒体——数字媒体,拥有众多优势,所以现在不少企业都有或正在建设自己的网站。
而留言板作为网站重要的一个部分,从来都是一个大家交流的平台!留言板是一种最为简单的BBS应用,借助留言板,浏览者可以张贴留言的方式给站长、版主或其他浏览者进行留言和提问。
一、课程设计题目留言板管理系统二、课程设计目的1、掌握常用JSP服务器控件的使用;2.、掌握验证控件的使用方法,理解验证控件的作用;3、掌握数据库设计的方法;4、掌握利用JSP技术操作数据库的方法;5、掌握利用内置对象传递数据的方法;6、训练分析与解决实际问题的能力;7、训练综合应用JSP技术开发Web应用程序的能力。
三、课程设计要求要求用JSP设计一个留言板管理系统。
该系统的功能实现有:(1)数据的添加(留言内容的添加);(2)留言内容按条件删除,修改;(3)可以根据标题进行模糊查找;(4)分页显示所有的留言信息;(5)用MySQL数据库建立表,以及查询表,四、课程设计内容在Mysql中创建一个名称为dbmessage的数据库。
该系统包括用户登录模块,添加留言模块,删除留言模块,查询留言模块,分页显示留言模块。
数据库设计:添加留言信息表(如图1-1 insertmessage表所示)。
图1-1 insertmessage表五、系统功能模块设计及代码的实现当用户进入留言板界面后都会有如下有如下动作:如图1-2 留言板系统功能模块。
(1)登录留言板(2)添加留言信息(3)查看留言信息(4)根据标题删除留言信息(5)以及查看留言信息(6)根据标题查询留言信息。
留言板管理系统登录留言板添加留言信息删除留言信息显示留言信息查询留言信息退出管理系统图1-2 留言板系统功能模块(一)模块设计:注意:用户在运行前必须先正确部署项目和正确启动Tomcat,出现Tomcat主页面http://localhost:8080/,点击Tomcat Manager选项,选择你的留言管理系统名称/messageboard,此时就正式进入留言板管理系统了。
5.1登录模块分析登录界面用于操作用户登录系统,由于此处就设置一个用户因此就不做太多说明:用户名为admin,密码为admin如图1-3登录留言板界面图1-3 登录留言板界面5.2添加留言模块分析:用户必须把下面的字段填写完毕后用户才可以将留言信息添加到数据库中如图1-4 留言板主界面。
图1-4 留言板主界面5.3删除留言模块和分页显示留言信息模块分析:该模块可以将留言信息按条件删除如图1-6 删除留言,而且可以通过分页显示留言信息模块进行查询如图1-7 删除记录后。
图1-5 分页显示数据库留言记录图1-6 删除留言图1-7 删除记录后5.4 查询留言信息模块分析:用户可以按标题进行模糊查询。
图1-8 查询留言信息图1-9 查询结果(二)各模块之间的代码实现:(1)登录留言板(Login.jsp)模块代码:<body><form method="post" action="Domess.jsp" border="2"><table border="0" cellspacing="2" bgcolor="#ff99cc" " align="center" style="height: 139px; width=300px"><tr><td colspan="2"><div align="center"><font size="4"><fontsize="6">登录</font><img src="images/1.gif" width="111" height="82"><font size="6">界面</font></font></div></td></tr><tr><td><div align="right"><font size="5"> 用户名:</font></div></td><td><div align="left"><input type="text" name="user"></div></td></tr><tr><td><div align="right"><font size="5"> 密 码:</font></div></td><td><div align="left"><input type="password" name="password"></div></td></tr><tr><td colspan="2"><div align="center"><font size="5"><input type="submit" value="登录"name="button1"><input type="reset" value="重置" name="button2"></font> </div></td></tr></table></form></body>(2)处理登录留言板(Domess.jsp)模块代码:<body><%String user=request.getParameter("user");String password=request.getParameter("password");if(user.equals("admin")&&password.equals("admin")){%><jsp:forward page="messagecontent.jsp"/><%}%></body>(3)留言板主界面(messagecontent.jsp)模块代码:<body><form><div align="center"><br></div><table border="0" cellspacing="2" align="center" width="1220"height="27"></table></form><form method="post" action="Addmessage.jsp" border="5px solid red"><br><table border="0" cellspacing="2" bgcolor="#ff99cc" " align="center" style="height: 250px; width:450px"><tr><td colspan="2"><hr><span><marquee>童鞋们,多多留言啊,主人感激不尽啊。
</marquee></span><hr></td></tr><br><br><tr><td colspan="2"><div align="center" ><font size="6">留言板</font></div></td></tr><tr><td><div align="right"> 用户名:</div></td><td><div align="left"><input type="text" name="name"> </div></td></tr><tr><td><div align="right"> QQ:</div></td><td><div align="left"><input type="text" name="QQ"> </div></td></tr><tr><td><div align="right"> E—mail:</div></td><td><div align="left"><input type="text" name="email"> </div></td></tr><tr><td><div align="right"> 标题:</div></td><td><div align="left"><input type="text" name="title"> </div></td></tr><tr><td><div align="right"> 留言内容:</div></td><td><div align="left"><textarea cols="30" rows="6"name="content"></textarea></div></td></tr><tr><td colspan="2"><div align="center"><input type="submit" value="添加" name="button3"><input type="reset" value="重置" name="button4"> </div></td></tr><tr><td colspan="2"><div align="center"><a href="Display.jsp">|显示全部留言</a>||<a href="somedelete.jsp">删除留言</a> ||<a href="Select.jsp">查找包含“标题”的留言|</a></div></td></tr><p></p></table><br></form></body>(4)处理添加留言信息(Addmessage.jsp)模块代码<body><%String driverName="com.mysql.jdbc.Driver";String userName="root";String userPassword="10086";String dbName="dbmessage";String tableName="insertmessage";Stringurl="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+us erPassword;Class.forName("com.mysql.jdbc.Driver").newInstance();Connection conn=DriverManager.getConnection(url);Statement stmt=conn.createStatement();String name=request.getParameter("name");name=new String(name.getBytes("iso-8859-1"));String QQ=request.getParameter("QQ");QQ=new String(QQ.getBytes("iso-8859-1"));String email=request.getParameter("email");email=new String(email.getBytes("iso-8859-1"));String title=request.getParameter("title");title=new String(title.getBytes("iso-8859-1"));String content=request.getParameter("content");content=new String(content.getBytes("iso-8859-1"));if(name.equals("")|QQ.equals("")|email.equals("")|title.equals("")|content.equals("")){response.sendRedirect("messagecontent.jsp");}else{String sql="insert into insertmessage(Name,QQ,Email,Title,Content)values('"+name+"','"+QQ+"','"+email+"','"+title+"','"+content+"')";stmt.executeUpdate(sql);out.print("数据库连接成功");response.sendRedirect("Display.jsp");}stmt.close();conn.close();%>(5)删除留言信息(Delete.jsp)模块代码:<body><%!String getS(String str){try{byte b[]=str.getBytes("iso-8859-1");str=new String(b);}catch(Exception e){str="出现异常";}return str;}%><%try{String str1=request.getParameter("title");str1=getS(str1.trim());String driverName="com.mysql.jdbc.Driver";String userName="root";String userPassword="10086";String dbName="dbmessage";String tableName="insertmessage";Stringurl="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+us erPassword;Class.forName("com.mysql.jdbc.Driver").newInstance();Connection conn=DriverManager.getConnection(url);Statement stmt1 = conn.createStatement();Statement stmt=conn.createStatement();String sql="delete from insertmessage where title='"+str1+"'";int row1=stmt.executeUpdate(sql);out.print(row1+"条记录被删除");}catch(Exception e){out.println(e);}%><a href="Display.jsp">|显示页|</a></body>(6)按条件删除留言信息(somedelete.jsp)模块代码:<body><form method="post" action="Delete.jsp"><div align="center"></div><table border="0" cellspacing="2" bgcolor="#ff99cc" " align="center" style="height: 70px; width="300px"><tr><td align="center" colspan="2"><font size="5">删除留言</font></td> <td><div align="left"></div></td></tr><tr><td><div align="right">按标题删除:</div></td><td><div align="left"><input type="text" name="title"></div></td></tr><tr><td colspan="2"><div align="center"><input type="submit" value="删除" name="Submit"><input type="button" value="重置" name="Reset"> </div></td></tr></table></form></body>(7)显示留言信息(Display.jsp)模块代码:<body><center></center><div align="center"><img src="images/1.gif" width="100"><strong>分页显示数据库留言记录</strong></div><br><hr><table width="800" border="1" align="center"><tr><td>用户名</td><td>QQ</td><td>E-mail</td><td>标题</td><td>留言内容</td></tr><%try{String driverName="com.mysql.jdbc.Driver"; //驱动程序名String userName="root";//数据库用户名String userPasswd="10086";//密码String dbName="dbmessage";//数据库名String tableName="insertmessage";//表名//连接字符串Stringurl="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+us erPasswd;//+"&useUnicode=true&characterEncoding=GB2312";Class.forName(driverName).newInstance();//加载驱动程序Connection conn=DriverManager.getConnection(url);String sql="select * from insertmessage";//创建执行语句Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery(sql);int intPageSize; //一页显示的记录数int intRowCount; //记录的总数int intPageCount; //总页数int intPage; //待显示的页码String strPage;int i;intPageSize=5; //设置一页显示的记录数strPage=request.getParameter("page");//取得待显示的页码if(strPage==null) //判断strPage是否等于null,如果是,显示第一页数据{intPage=1;}else{intPage=ng.Integer.parseInt(strPage); //将字符串转换为整型}if(intPage<1){intPage=1;}st();//获取记录总数intRowCount=rs.getRow();intPageCount=(intRowCount+intPageSize-1)/intPageSize; //计算机总页数if(intPage>intPageCount) intPage=intPageCount; //调整待显示的页码if(intPageCount>0){rs.absolute((intPage-1)*intPageSize+1); //将记录指针定位到待显示页的第一条记录上}//下面用于显示数据i=0;while(i<intPageSize && !rs.isAfterLast()){%><tr><td><%=rs.getString(1)%></td><td><%=rs.getString(2)%></td><td><%=rs.getString(3)%></td><td><%=rs.getString(4)%></td><td><%=rs.getString(5)%></td></tr><%rs.next();i++;}rs.close();//关闭连接、释放资源stmt.close();conn.close();%><div align="center"> 共<%=intRowCount%>个记录,分<%=intPageCount%>页显示,当前页是:第<%=intPage%>页 <a href="messagecontent.jsp">|留言板主页|</a><%for(int j=1;j<=intPageCount;j++){out.print(" <a href='Display.jsp?page="+j+"'>"+j+"</a>");}%></div><%}catch(Exception e){e.printStackTrace();}%></body>(8)查询留言信息(Select.jsp)模块代码:<body><form method="post" action="Doselect.jsp"><div align="center"></div><table border="0" cellspacing="2" bgcolor="#ff99cc" " align="center" style="height: 50px; width="300px"><tr><td align="center" colspan="2"><font size="5">查询留言</font></td> <td><div align="left"></div></td></tr><tr><td><div align="right">按标题查询:</div></td><td><div align="left"><input type="text" name="title"></div></td></tr><tr><td colspan="2"><div align="center"><input type="submit" value="提交" name="Submit"><input type="reset" value="重置" name="Reset"> </div></td></tr></form></body>(9)按条件查询留言信息(Doselect.jsp)模块代码:<body><%!String getS(String str){try{byte b[]=str.getBytes("iso-8859-1");str=new String(b);}catch(Exception e){str="出现异常";}return str;}%><%try{String str1=request.getParameter("title");str1=getS(str1.trim());String driverName="com.mysql.jdbc.Driver";String userName="root";String userPassword="10086";String dbName="dbmessage";String tableName="insertmessage";Stringurl="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+us erPassword;//连接字符串Class.forName("com.mysql.jdbc.Driver").newInstance();Connection conn=DriverManager.getConnection(url);Statement stmt1 = conn.createStatement();String sql="select * from insertmessage where title like '%"+str1+"%'";ResultSet rs=stmt1.executeQuery(sql);if(rs.next()){out.print("姓名:"+rs.getString("name"));out.print("<br>QQ:"+rs.getString("QQ"));out.print("<br>Email:"+rs.getString("email"));out.print("<br>标题:"+rs.getString("title"));out.print("<br>内容:"+rs.getString("content"));}else{out.print("该关键字的内容不存在");}stmt1.close();conn.close();}catch(Exception e){out.print(e);}%><a href="messagecontent.jsp">|添加留言|</a></body>六、课程设计心得体会这个留言板管理系统让我对前面学的知识有了整个的回顾与总结。