用JSP打造一个留言板

合集下载

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

JSP课程设计——留言簿课程设计
三各页面功能实现说明
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 >

用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简易留⾔板写在前⾯在上篇博⽂中介绍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留言板(给初学者)

jsp留言板源代码一: 给jsp初学者. 2000-12-18 00:00 T|Tjsp留言板源代码一: 给jsp初学者.作者: precom (皮蛋)oracle数据表创建.create table guestbook (lw_title varchar2(100) not null, --留言主题lw_author varchar2(20) not null, --网上大名pkauthor_http varchar2(40) , --主页地址author_email varchar2(40) not null,--电子信箱pkexpression varchar2(2) not null,--表情lw_time varchar2(14) not null,--发表回应时间answer_num number(3) not null,--回应数click_num number(4) not null,--点击数author_ip varchar2(16) ,--来源iplw_class1 varchar2(10) not null,--留言板大类pklw_class2 varchar2(20) not null,--论坛栏目pklw_type varchar2(1) not null,--留言类别,即是否为主贴zt_time varchar2(14) ,--主贴时间zt_author varchar2(40) ,--主贴emaillw_content varchar2(4000) ,--内容constraint pk_guestbook primary key(lw_class1,lw_class2,lw_time,lw_author)) storage (initial 5M next 5M pctincrease 1);本文来自: 站长之家() 详细出处参考:/View/30/30010403/5553.htmljsp留言板源代码二: 给jsp初学者. 2000-12-18 00:00 T|T作者: precom (皮蛋) 2000.12.10guestbook.jsp===========================<html><head><META content="text/html; charset=gb2312 " http-equiv=Content-Type><title>张家界电话黄页(网上114)</title></head><style type="text/css"><!--BODY { FONT-FAMIL Y: "宋体","Arial Narrow", "Times New Roman"; FONT-SI ZE: 9pt }.p1 { FONT-FAMIL Y: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZE: 12pt }A:link { COLOR: #00793d; TEXT-DECORATION: none }A:visited { TEXT-DECORATION: none }A:hover { TEXT-DECORA TION: underline}TD { FONT-FAMIL Y: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZE: 9pt }.p2 { FONT-FAMIL Y: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZE: 9pt; LINE-HEIGHT: 150% }.p3 { FONT-FAMIL Y: "宋体", "Arial Narrow", "Times New Roman"; FONT-SIZE: 9pt; LINE-HEIGHT: 120% }--></style><body><%@ page contentType="text/html; charset=GB2312" %><%@ page language="java" import="java.sql.*" %><jsp:useBean id="testInq" scope="page" class="ymbean.opDb" /><%int pages=1;int pagesize=10;int count=0;int totalpages=0;String countsql="",inqsql="",lwhere="",insertsql="",st="";String lw_title="",lw_author="",pagetitle="",author_http="",author_email="",lw_ico="", lw_content="",lw_class1="";String author_ip="",lw_time="",lw_class2="",lw_type="",zt_time="",zt_author="";int answer_num=0,click_num=0;int inquire_item=1;String inquire_itemt="",inquire_value="";String lurlt="<a href=guestbook.jsp?",llink="";lwhere=" where lw_type='z' "; //只显示主贴/*Enumeration e = request.getParameterNames();while (e.hasMoreElements()) {String name = (String) e.nextElement();*/try{//取显示的页页序数pages = new Integer(request.getParameter("pages")).intValue();} catch (Exception e) {}try{//取查询参数inquire_item=new Integer(request.getParameter("range")).intValue();inquire_value=new String(request.getParameter("findstr").getBytes("ISO8859_1"));if(inquire_item==0) inquire_itemt="lw_title";else if(inquire_item==1) inquire_itemt="lw_content";else if(inquire_item==2) inquire_itemt="lw_author";else if(inquire_item==3) inquire_itemt="lw_time";else if(inquire_item==4) inquire_itemt="lw_title";lwhere=lwhere+" and "+inquire_itemt+" like '%"+inquire_value+"% '";lurlt=lurlt+"range="+inquire_item+"&findstr="+inquire_value+"&";} catch (Exception e) {}try{//取得参数留言内容lw_class1=new String(request.getParameter("gbname").getBytes("ISO885 9_1"));lw_title=new String(request.getParameter("lw_title").getBytes("ISO8859_1"));lw_author=new String(request.getParameter("lw_author").getBytes("ISO 8859_1"));pagetitle=new String(request.getParameter("pagetitle").getBytes("ISO 8859_1"));author_http=new String(request.getParameter("author_http").getBytes( "ISO8859_1"));author_email=new String(request.getParameter("author_email").getByte s("ISO8859_1"));lw_ico=request.getParameter("gifface");lw_content=new String(request.getParameter("lw_content").getBytes("I SO8859_1"));String requestMethod=request.getMethod();requestMethod=requestMethod.toUpperCase();if(requestMethod.indexOf("POST")<0){ out.print("非法操作!");return;}//形成其他数据项author_ip=request.getRemoteAddr() ;lw_time=testInq.getCurrentDate("yyyyMMddHHmmss");lw_class2="2";lw_type=""+"z"; //主贴zt_time=lw_time;zt_author=lw_author;answer_num=0;click_num=0;//================st="','";//保证留言所有数据项的长度在正常范围内if(lw_title.length()>50) lw_title=lw_title.substring(0,50);if(lw_author.length()>20) lw_author=lw_author.substring(0,20);if(author_http.length()>40) author_http=author_http.substring(0,40);if(author_email.length()>50) author_email=author_email.substring(0,4 0);if(lw_content.length()>4000) lw_content=lw_content.substring(0,4000) ;insertsql="insert into guestbook values('"+lw_title+st+lw_author+st+ author_http+st+author_email+st+lw_ico+st+lw_time+"',"+answer_num+","+click_num+",'"+author_ip+st+lw_class1+st+lw_class2+st+lw_type+st+zt_time+st+zt_author+st+lw_content+"')";//out.print(insertsql);//插入留言try{String lmsg=testInq.executeUpdate(insertsql);if(lmsg.indexOf("executeUpdate ok")<0)out.print("lmsg="+lmsg);}catch (Exception e) { out.print("错误:"+e);}} catch (Exception e) {}%><%//验证留言输入项合法性的javascriptString ljs=" <SCRIPT language=JavaScript> \n"+" <!-- \n"+" function ValidInput() \n"+" {if(document.sign.lw_author.value==\"\") \n"+" {alert(\"请填写您的大名。

基于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课程设计报告书—基于jsp留言板For personal use only in study and research; not for commercial use专业:计算机信息管理班级:096111For personal use only in study and research;not for commercial use姓名:钟春连学号:09611108指导老师:姜俊坡东华理工大学二零一一年六月二十日一需求分析随着互联网的迅猛的发展,网站给我们带来不少的便利,于此同时,论坛基本是每个网站必有的功能,为用户之间的交流提供的很好的平台。

我通过仔细的分析和规划,本论坛有如下功能:用户注册,登录,用户信息修改,签写留言,留言查看,回复留言和管理员的普通维护功能等。

这些功能的具体描述如下:1)用户注册模块:用户可已成为本论坛的会员,通过表单把用户的相关信息提交给数据库。

2)登录模块:基本是每个系统必备的模块,本论坛的登录的模块分为两个小模块:普通用户登录,另一个是管理员登录。

3)签写留言模块:这是论坛的主要功能之一,用户把自己感兴趣的话题发表到论坛上,与网上的会员进行探讨。

4)回复留言模块:这也是论坛的主要功能之一,用户对别的用户发表的留言进行回复。

5)普通的维护模块:这是给管理员的功能,该功能对那些危害社会风气的留言删除。

6)用户信息修改模块:用户能对自己的信息进行修改。

二分析和设计(页面和数据库)设计网站论坛时,首先应该区别是普通用户登录还是管理员登录。

如果是普通用户登录,那么该用户只有查看和回复留言的权限。

如果是管理员登录,则除了具有查看和回复权限外,还用具有管理论坛的权限。

在用户发表留言后,将显示该用户的用户名、性别、留言内容和留言时间等内容。

如果在某个留言有回复内容,则显示出是谁恢复了该篇留言和回复的内容。

另外还能在页面中显示当前的系统的时间和访问权限。

数据库设计通过以上的分析:数据库应有四个表,tb_user、td_topic、tb_reply、tb_counter。

JSP实现留言板PPT课件

JSP实现留言板PPT课件

7.3.2 创建标签库描述文件
• 在定义完处理类后,要创建一个标签库描述符 (TLD)文件来描述自定义标签。此文件的内容开 始是对整个库的描述,然后是对tag的描述。这里 的标签库描述文件叫做。
• <?xml version="1.0" encoding="UTF-8"?> • <!DOCTYPE taglib PUBLIC "-//Sun
• <%@ taglib prefix="my" uri="/tags/myTag"%> • 这里的uri就是在中配置的<taglib-uri>标签,
prefix是把该标签库在页面中的引用重新起了名 字,这里叫“my”。
7.4.2 从标签库中调用自定义标签实现分页效果
• 导入了标签库,最后一步就是从标签库中调用自 定义的标签。在JSP页面中在需要进行分页显示的 位置调用自定义标签,代码如下所示。
7.3.1 创建自定义标签处理类
• 自定义标签处理类就是一个handler标签,是由 Web容器调用的一个对象,当执行带有自定义标签 的JSP页面时对这个标签进行判断。标签必须实现 Tag或BodyTag接口,在新创建的时候,可以使用 TagSupport和BodyTagSupport类作为基类,这些 接口或类包含在包中。在JSP页面执行过程中,遇 到自定义标签的不同阶段需要调用不同的方法, 如在开始阶段遇到标签时就要调用handler的 doStartTag方法。
7.5.12 留言信息数据封装Bean的创建
• 创建文件,该文件用于封装留言的数据信息。该 类中同样也是包含一组私有变量和一组get、set 方法,
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用JSP打造一个留言板2001-04-24·陈小冲·yeskyJSP是JavaServer Pages的简称,是一种集成HTML及Java程序于一个网页的技术。

我觉得使用JSP编写程序比ASP、PHP等语言更具有挑战性,更能学到知识,因为它涉及到面向对象的JA VA语言,要用好JSP,就得对JAV A有一定的了解。

除此之外,还要求能熟练使用各种开发工具,像Dreamweaver、Photoshop、JBuilder等。

工欲善其事,必先利其器。

在运行JSP程序之前,必须做一些准备工作。

首先要有一个WEB伺服器,Apache或IIS都可以;其次要有一个执行JA VA程序的的编译器;再次还要有一个支持JSP的引擎,目前有很多引擎可供选择,例如tomcat、weblogic、resin等。

本问介绍的留言板程序在作者的机器上可以顺利运行,详细资料如下:操作系统: Windows 2000 SERVERJA VA编译器:JDK1.3WEB伺服器:Apache1.13.2 + Tomcat3.1引擎数据库:Access 2000Apache和Tomcat安装后的配置有点挑战性,下面是我的安装过程:1).安装JDK1.3a).双击J2SDK1_3_0-WIN.exe 文件,安装到C:\jdk1.3 目录下;b).更新下列环境变量,把C:\jdk1.3\lib\tools.jar;C:\jdk1.3\lib\dt.jar; C:\myclasses加入到CLASSPA TH中。

更新方法:右击我的电脑-属性-高级-环境变量;c).重起计算机。

2).安装Apache1.13.2a).双击apache_1_3_12_win32.exe 文件,安装到C:\Apache 目录下;b).用记事本修改C:\Apache\conf\httpd.conf:I).PORT:设置Apache Web Server运行时使用的端口号,我把它改成Port 8080,以后在浏览器上输入http://ip:8080 就可以访问到Apache Web Server服务器;II).SERVERNAME:我把SERVERNAME设置为202.38.126.134(这是我的机器的IP地址);III).Apache安装完后在"开始-程序"菜单组中多了Apache Web Server菜单组,运行其中的Install Apache as a service,这样的话在“开始-设置-控制面板-服务”中就多了一个名为Apache的服务,您可以用它来启动或停止Apache服务;IV).打开“开始-设置-控制面板-服务”,选Apache,按"开始"启动Apache服务。

c).在IE中输入http://ip:8080 (ip是你使用的机器的ip地址),Apache运行否?3).安装Tomcat3.1a).用WinZIP把tomcat.zip解压缩到一个目录下,最后弄成C:/tomcat;b).打开C:\Apache\conf\httpd.conf文件,在该文件最后加上类似这样一句话: Include C:/tomcat/conf/tomcat.conf;c).修改Tomcat运行的端口号,注意Tomcat自己有一个独立的HTTP服务器,它必须使用一个还未被使用的端口号,我使用PORT:80,在C:\tomcat\conf\server.xml中修改;d).将SET TOMCA T_HOME=c:\tomcatSET JA V A_HOME=c:\jdk1.3 加到C:\tomcat\bin\tomcat.bat文件中,修改完的文件如下:......rem Guess TOMCA T_HOME if it is not presentSET TOMCA T_HOME=c:\tomcatSET JA V A_HOME=c:\jdk1.3 if not "%TOMCA T_HOME%" == "" goto gothome下面还有......e).双击C:\tomcat\startup.bat启动Tomcat;f).在浏览器上输入http://ip/,如果能看到Tomcat V ersion 3.1这一页,就表示Tomcat 安装成功了。

到此准备工作也就差不多了,最后在Tomcat目录下创建一个目录,用来存放编写的程序,具体情况如下:C:\tomcat\fox --存放.html和.jsp 文件C:\tomcat\fox\images --存放图片文件C:\tomcat\fox\global --存放数据库C:\tomcat\fox\WEB-INF\classes --存放JA V A类文件为了使这个目录下的JSP程序能顺利运行,还需要在C:\tomcat\conf\ server.xml文件中加上几行代码:<Context path="/fox" docBase="fox"defaultSessionTimeOut="30"isWARExpanded="true"isWARV alidated="false" isInvokerEnabled="true"isWorkDirPersistent="false"/>添加完代码后的server.xml文件看起来如下所示:......<Context path="" docBase="webapps/ROOT" debug="0" reloadable="true" ></Context><Context path="/redfox" docBase="redfox" defaultSessionTimeOut="30" isWARExpanded="true" isWARV alidated="false" isInvokerEnabled="true" isWorkDirPersistent="false"/><Context path="/test" docBase="webapps/test" debug="0" reloadable="true" ></Context>下面还有......现在编写一个名为test.jsp的程序,存于C:\tomcat\fox\test.jsp<html><body><%java.util.Date date=new java.util.Date(); %>Hello! the time is now<%out.println(date);%></body></html>在IE中键入http://ip/fox/test.jsp,如果能看到当前的时间,那么恭喜:可以开始编写留言板程序了。

一.创建数据库1).打开Access2000,创建一个新的数据库,我将这个数据库命名为foxdb.mdb,存在C:\tomcat\fox\global\foxdb.mdb。

接下来在foxdb.mdb中创建一个表,命名为foxtable,表中有五个字段,全为文本格式:其中“URL”用于记录留言者的IP 。

至于各字段的长度,我把“留言”定为200,其它四个各为20。

2).指定ODBC数据源,其名为foxdb ,指向C:\tomcat\fox\global\foxdb.mdb。

二.编写用户的留言界面foxnote.html,存于C:\tomcat\fox\foxnote.html:<html><body><form method="post" action="foxnoteinsert.jsp"><br>姓名:<input name=username size=15 value=""><br>邮箱:<input name=email size=15 value=""><br>留言:<br><textarea name=doc rows="5" cols="40"></textarea><br><input type=submit value="递交"><input type=reset value="重填"></form></body></html>在IE中键入http://ip/fox/foxnote.html 看看是否显示正常三.编写foxnoteinsert.jsp ,将用户的留言写进数据库表中:<body bgcolor="#FFFFFF"><%@ page import="java.sql.*,MyUtil,java.util.*"%><%Connection con=null;String username=MyUtil.gb2312ToUnicode(request.getParameter("username"));String email=MyUtil.gb2312ToUnicode(request.getParameter("email"));String doc=MyUtil.gb2312ToUnicode(request.getParameter("doc"));String url=request.getRemoteAddr();try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");con=DriverManager.getConnection("jdbc:odbc:foxdb","","");String str="insert into foxtable values(?,?,?,?);";PreparedStatement pstmt=con.prepareStatement(str);pstmt.setString(1,username);pstmt.setString(2,email);pstmt.setString(3,doc);pstmt.setString(4,url);pstmt.executeUpdate();pstmt.close();con.close();} catch(Exception e) {out.println(e.getMessage());}%>这个程序中有一些要说明的地方,就是其中用到了一个JavaBean :MyUtil.class 。

相关文档
最新文档