JSP课程设计——留言簿课程设计

合集下载

用jsp语言开发的留言板

用jsp语言开发的留言板

留言簿设计报告班级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的留言板课程设计报告书

基于JSP的留言板课程设计报告书

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个人网站留言板课程设计

JSP个人网站留言板课程设计

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 课程要求内容概要:个人网站留言板设计与实现。

JSP简易留言板

JSP简易留言板

JSP简易留⾔板写在前⾯在上篇博⽂中介绍JSP的9个内置对象的含义和常⽤⽅法,但都是⽐较理论的知识。

今天为⼤家带来⼀个⼩应⽤,⽤application制作的简易留⾔板。

包括三个功能模块:留⾔提交、留⾔展⽰、查看留⾔板。

⽤3个JSP页⾯展⽰信息(视图层),⼀个servlet处理⽤户的请求(控制层),因为⽐较简单没有⽤到javaBean作为模型层。

还有⼀个filter初始化应⽤。

表单提交本例中⽤submit.jsp页⾯提交留⾔。

⽤表单提交⽤户的请求参数,action参数处理⽤户请求程序的路径。

关于表单提交有两点说明:1.路径在JSP页⾯中,建议⽤绝对路径,形如:<%=request.getContextPath()%>/MsgPane,request.getContextPath()代表项⽬的根⽬录。

其原因是绝对路径简单不容易出错。

在写JSP程序是经常会犯路径的错误,就是没明⽩⼀些基本的概念。

为了统⼀前后端路径的使⽤,IDE在新建JSP的会加⼊<base>标签,这个时候相对路径是不起作⽤的,浏览器解析时会在其前⾯加上base的href属性值。

例如:2.⽅法post提交时,参数不会附加在URL中,安全性更⾼,表单提交建议使⽤post。

submit.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><body><form action="<%=request.getContextPath()%>/MsgPane" method="post">请输⼊你的姓名:<br><input type="text" name="name"><br>请输⼊你的标题:<br><input type="text" name="title"><br>留⾔内容:<br><textarea rows="15" cols="20" name="message"></textarea><br><br><input type="submit" value="提交信息"><br></form><form action="<%=request.getContextPath()%>/msgpane/messages.jsp"><input type="submit" value="查看留⾔板"></form><%-- </body>--%></html>处理⽤户请求我们⼀般⽤servlet处理⽤户请求,servlet多⽤于流程控制,也就是我们常说得MVC中C(控制层)。

用jsp语言开发的留言板

用jsp语言开发的留言板

留言簿设计报告班级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。

基于JSP的在线留言板系统设计

基于JSP的在线留言板系统设计

字段名 I D Us s e r I D S u b j e c t C O ] a t e n t T i me I P T e l e p h o n e
字段类型 整 型 字符型 字符型 字符型 字 符 型 字 符 型 字符型
字段宽度 1 0 1 0 5 0 5 0 1 O 1 0 回复表 r e p l y表
统的总体设计
数 据 库 设 计
系统 流 程 图
数据 库 设计 是把 现 实世界 的模 型按 照 需 析转换成数据库 的模 型的过程 ,它是建立 库应用系统 的核 心问题。数据库的数据是 ) 操作 的基础 ,如果数据库设计不好 ,则影
的三 张表 , 分 别 为,u s e r 用 户 表 ,l e a v e wo r d 执行 的功 能各不相 同。实现 了多个不 同用户 的 留 言表 ,r e p l y留 言 回复 表 。 访 问。 ( 3 )页面风格统一 ,简单且美观。 2 . 2 系 统 主 页 设 计 ( 4 )数 据库设计合 理规范 ,用户 注册 的 ; 开发功能 的实现及后 期的维护 。通过需求 为了使留言板系统的页面更加美观 ,页面 信息符合要求才可 以注册成功 。具有很好 的完 抽 象 出现实 世 界 的实体模 型 有人 ,留 整性 。 回复留言 。每个 实体在 留言系统中有其重 风 格保持 一致 ,编 写 了 CS S文件和 J a v a S c r i p t ; 性。如人的属性有用户 I D, 姓 名 , 权限, 文 件,采 用 了 CS S外 部样 式。并 建立 了一 个 参考文献 } ,电话,邮箱等,其中用户 I D是主属性。 独立 的 J S文件 ,方便 多个 网页文件 引入。 [ 1 ] 王品 . J S P实现 留言板 系统 [ J ] . 计算机光 的属性有 留言 I D,留言姓名,留言主题 , 2 . 3 系 统 功 能设 计 盘 与软件 , 2 0 1 2 . 内容 ,留言时间 ,I P,电话等 。其 中留言 主 属性 ,回复留 言的主属 性有用户 I D, 详 见 系 统流 程 图 作 者简介 I D, 回复的 内容 ,回复 的时 间等。其 中 2 . 4 系统特 色 黄军 ,男 ,教师,研 究方向为软件 开发 。 t I D为 主属性 。在 以上 分析 中,留言板 中 } 的用户有两类人 员,一是普通 用户 ,一是 ( 1 )此 留 言板 系统 虽然小巧 。但 功能完 作 者单 位 员,为 了区分两者身份 ,可 以在人 的属性 善。 贵 州工 业职 业技 术 学 院 贵 州省 贵 阳 市 } 加权 限属 性,如 其值 1为管理员 ,0为普 ( 2 )不 同用户 都有个 自的权 限。登陆后 5 5 0 0 O O 『 户 。据此 便可 以设计 出符合实 际需求 分析

jsp留言板课程设计

jsp留言板课程设计

jsp留言板课程设计一、教学目标本课程的目标是让学生掌握JSP留言板的基本原理和实现方法。

通过本课程的学习,学生将能够了解JSP的基本概念,熟悉JSP页面结构和语法,掌握JSP标签库的使用,理解JavaBean的概念及其在JSP中的应用,学会使用数据库存储和管理留言数据,并能够独立设计和实现一个简单的JSP留言板系统。

具体来说,知识目标包括:1.掌握JSP的基本概念和页面结构。

2.熟悉JSP的语法和指令。

3.了解JavaBean的概念及其在JSP中的应用。

4.掌握数据库的基本操作和SQL语句。

技能目标包括:1.能够编写简单的JSP页面。

2.能够使用JSP标签库实现数据的展示和交互。

3.能够使用JavaBean处理业务逻辑。

4.能够使用数据库存储和管理留言数据。

情感态度价值观目标包括:1.培养学生的团队协作能力和自主学习能力。

2.培养学生对编程技术的兴趣和热情。

3.培养学生的创新思维和问题解决能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.JSP基本概念和页面结构。

2.JSP语法和指令。

3.JavaBean在JSP中的应用。

4.数据库的基本操作和SQL语句。

5.JSP标签库的使用。

6.留言板的实现和调试。

具体的教学大纲安排如下:第1-2课时:JSP基本概念和页面结构。

第3-4课时:JSP语法和指令。

第5-6课时:JavaBean在JSP中的应用。

第7-8课时:数据库的基本操作和SQL语句。

第9-10课时:JSP标签库的使用。

第11-12课时:留言板的实现和调试。

三、教学方法为了达到本课程的教学目标,我们将采用以下几种教学方法:1.讲授法:用于讲解JSP的基本概念、语法和指令等基础知识。

2.案例分析法:通过分析实际案例,让学生了解JavaBean在JSP中的应用和JSP标签库的使用。

3.实验法:让学生动手实践,独立设计和实现一个简单的JSP留言板系统。

4.讨论法:在课堂上学生进行小组讨论,培养学生的团队协作能力和问题解决能力。

jsp课程设计留言簿

jsp课程设计留言簿

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.实验设备:提供计算机、服务器等实验设备,确保学生能够进行实际操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三各页面功能实现说明
1.登录界面
登陆界面
用户名:
密码;
代码如下:
<%@Page ContentType="text∕html;CharSet=gb2312"%>
Vform action ="Tests.jsp" >
<h2 >登陆界面</h2 >
用户名:Vin PUt type = "text" n ame ="userName" >
</ tr >
Vtr height ="30" >
Vtd >留言标题</td >
Vtd ><inPUt type = "text" name = "title" SiZe ="35" ></ td >
</ tr >
Vtr >
Vtd >留言内容</td >
Vtd>vtextareaname="cOntent"rows ="8" cols ="34" χ/ textareaχ/ td >
request.getScheme()++request.getServerName()+":" +request.getServ
erPort()+path+ "/";
%>
<! DoCTYPEHTMLPUBLIC "-//W3C//DTD HTML 4.01 TranSitional//EN"> <html >
3.
PaCkage com.yxq.toolbea n;
PUbIiCCIaSSMatCh {//
PriVateStr ingUSerName;
PriVateStri ngUSerPaSS;
PUbIiCStr in ggetUserName() {
retUrn USerName;
}
PUbIiCVOidSetUSerName(Stri ng USerName) {
if (USerName.eqUaIs("admin")&&USerPaSS.eqUaIs("000" )){
retUr ntrUe;
}
else {
retUr nfalse;
4.成功登陆的SUCCeS.jsp界面
http;//20100624-1201;8080/jsμ∕SUGGess« jsp
留吕者
留言岩

齬内容
I⅞⅞l⅛g^
留言界面代码如下:
<%@Page Ianguage= "java"import ="java.util.*"PageEncoding="gb2312"%>
<%
Stri ng Path = request.getC On textPath();
Str ing basePath =
JSP留言簿课程设计
一需求分析
随着互联网的迅猛的发展,网站给我们带来不少的便利,于此同时,留言簿 基本是每个网站必有的功能,为用户之间的交流提供的很好的平台。 通过仔细的 分析和规划,本留言簿有如下功能:用户注册,登录,签写留言,留言查看等几 项普通功能,是一个较为简单的留言簿程序。
二分析和设计
在用户发表留言后,将显示该用户的用户名、性别、留言内容等内容。另外 还能在页面中显示当前的系统的时间和访问权限。
--> </ head >
<body >
<form action="doword.jsp" methed ="post" >
Vtd >留言者</ td >
Vtd ><inPUt type = "text"name = "author" SiZe ="20" ></ td >
</ tr >
Vtr height ="30"lt;base href =" <%=basePath %>" >
<li nk rel="stylesheet" type="text/css" href="styles.css">
-->
</ head >
Vtd >留言者</ td >
Vtd ><inPUt type = "text"name = "author"SiZe ="20" ></ td >
Vbr >
密&nbsp;码:VinPUt type ="password" name ="userPass" >
Vbr >
VinPUt type = "submit" value ="确定">
Vinput type ="reset" value ="取消">
v/form >
2•留言界面
输入正确用户名admin及密码000后进入留言界面。
留言标题
留言内容
Ii提交丨重置〕
v%@Page Ianguage= "java" import ="java.util.*"PageEncoding="gb2312"%>
<%
Stri ng Path = request.getC On textPath();
Str ing basePath =
request.getScheme()++request.getServerName()+":" +request.getServ
erPort()+path+ "/";
%>
<! DoCTYPEHTMLPUBLIC "-//W3C//DTD HTML 4.01 TranSitional//EN"> <html >
<head >
<base href =" <%=basePath %>" >
<!--
<li nk rel="stylesheet" type="text/css" href="styles.css">
v/tr >
Vtr align ="center" >
Vtd colspan="2" >vinPUt type ="submit" value ="提交">
VinPUt type ="reset" value ="重置">v/td >
v/tr >
v/table >
v/form >
v/body >
v/html >
this . USerName = USerName;
}
PUbIiCStri ng getUserPass() {
retUr nUSerPaSS;
}
PUbIiCVOid SetUSerPaSS(Stri ng USerPaSS) {
this . USerPaSS = UserPass;
}
PUbIicbooIea nTeSt(Stri ng USerName,Stri ngUserPass){
Vtd >留言标题</ td >
Vtd >vinPUt type = "text"name = "title" SiZe ="35" >v∕ td >
相关文档
最新文档