JSP+JDBC班级留言板

合集下载

第7章JSP实现留言板

第7章JSP实现留言板

7.5 完整的留言板功能实现
• 通过前几节的介绍,简单的留言板功能基本完成 了。本节将一个完整的留言板实现展示给读者。 该留言板的流程是:用户先登录,如果没有注册 要先注册,注册页面如图7-8所示;注册完成后将 跳到登录页面,登录后的用户可以看见目前所有 留言的标题;可以单击标题的名称查看详细内容 并可以添加留言;也可以新建一个留言题目;在 查看留言详细信息页面时,可以单击留言人名称 来查看该用户详细信息,
7.2.2 通过JDBC将留言内容存储到数据库中 • 通过request对象获取留言内容等信息的目的就是 将它们存储到数据库中,JSP要连接数据库就要使 用到JDBC。这里创建了一个DBMessage.java类处 理与数据库相关的代码,并使用一个无参的构造 函数来初始化JDBC的连接, • 数据库连接好后,就要将相关信息保存到数据库 中。这里保存留言内容等信息的表为message,字 段有留言标题title、留言内容content、留言人 姓名username。在DBMessage.java类中定义了一 个newMessage()方法,来实现向数据库中添加数 据信息。
7.2 JSP处理留言请求
• 在JSP中处理留言请求,首先通过request对象获 取到留言的内容,留言人的姓名,并且通过JDBC 将获取到的内容存储到数据库中,最后再返回到 留言页面将相关留言信息显示出来的过程。下面 就对以该过程分解开来一一介绍。
7.2.1 通过request对象得到留言信息及留言人的姓名 • 通过form表单提交的数据信息,如果在另一个页面中想要 取得这个数据信息,就要使用request对象。通过form表单 提交的有留言人姓名、留言内容和留言标题,
7.5.8 发表留言页面addMessage.jsp的创建 • 创建addMessage.jsp文件,该页面提供了发表留 言的功能。在该页面中列出所有的留言标题信息, 并且利用自定义标签提供分页功能。该页面中还 提供了form表单,主要提供了发表留言的功能,

JSP+JDBC综合实例--我的留言本

JSP+JDBC综合实例--我的留言本

三、相关技术
完成此程序需要使用的技术 JSP的基础语法、request对象、response对 象、Session对象 JDBC操作、HTML表单
数据库创建脚本
四、实现过程
--创建用户表 create table person ( id varchar(20) not null primary key, name varchar(20) , password varchar(20) ); --创建留言表 create table ( id int not null primary key, title varchar(20) not null; author varchar(20) not null; content varchar(50) not null )
JSP+JDBC综合实例
我的留言本
一、总体概述
技术:JSP+JDBC 数据库:MySQL 目的:JDBC在JSP的基本操作(JDBC的使用) 总体描述:
实现用户登陆 登陆之后,可以发表、修改、浏览全部留言、查 询、删除留言
二、功能
登陆:将用户名保存在Session中 留言管理
页面分析
四、实现过程
2、留言管理
list_notes.jsp
需要对用户登陆作出验证;以表格列出全部留言; 超链接增加、修改、删除的页面;检索留言的提示
insert.jsp
需要对用户登陆作出验证;表单,输入新内容的表单; 给出返回list_notes.jsp的连接
insert_do.jsp update.jsp
对数据库中的内容进行删除四实现过程loginjsp参考代码四实现过程loginjsp参考代码四实现过程loginconfjsp参考代码四实现过程loginconfjsp参考代码四实现过程loginconfjsp参考代码四实现过程loginconfjsp参考代码四实现过程loginsuccessjsp参考代码四实现过程loginsuccessjsp参考代码四实现过程listnotesjsp参考代码四实现过程listnotesjsp参考代码四实现过程listnotesjsp参考代码四实现过程listnotesjsp参考代码四实现过程listnotesjsp参考代码四实现过程insertjsp参考代码四实现过程insertjsp参考代码四实现过程insertjsp参考代码四实现过程insertdojsp参考代码四实现过程insertdojsp参考代码四实现过程insertdojsp参考代码四实现过程insertdojsp参考代码四实现过程insertdojsp参考代码四实现过程updatejsp参考代码四实现过程updatejsp参考代码四实现过程updatejsp参考代码四实现过程updatejsp参考代码四实现过程updatejsp参考代码四实现过程updatedojsp参考代码四实现过程updatedojsp参考代码四实现过程updatedojsp参考代码四实现过程updatedojsp参考代码四实现过程updatedojsp参考代码四实现过程deletedojsp参考代码四实现过程deletedojsp参考代码四实现过程deletedojsp参考代码四实现过程deletedojsp参考代码四实现过程

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在水一方留言簿设计报告一需求分析随着互联网的迅猛的发展,给我们带来不少的便利,于此同时,论坛基本是每个必有的功能,为用户之间的交流提供的很好的平台。

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

这些功能的具体描述如下: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。

初级前端开发实训创建一个基本的留言板功能

初级前端开发实训创建一个基本的留言板功能

初级前端开发实训创建一个基本的留言板功能初级前端开发实训 - 创建一个基本的留言板功能在本次的初级前端开发实训中,我们将要创建一个基本的留言板功能。

留言板是一个常见的应用,它允许用户发布留言、查看留言并与其他用户进行互动。

为了实现这一功能,我们将使用HTML、CSS和JavaScript来构建前端界面,并使用后端技术来处理数据和实现服务器端功能。

一、准备工作在开始之前,我们需要做一些准备工作。

首先,确保你已经安装了适当的开发工具,比如文本编辑器和浏览器。

其次,我们需要创建所需的文件和目录结构。

创建一个名为"messageboard"的文件夹,并在其中创建三个文件夹分别命名为"css"、"js"和"images"。

此外,我们还需要创建一个名为"index.html"的HTML文件,一个名为"style.css"的CSS 文件,以及一个名为"script.js"的JavaScript文件。

二、构建前端界面接下来,我们将从构建前端界面开始。

打开"index.html"文件,并按照下面的示例代码来编写HTML结构:```html<!DOCTYPE html><html><head><title>留言板</title><link rel="stylesheet" type="text/css" href="css/style.css"></head><body><h1>欢迎来到留言板</h1><div id="message-container"><h2>留言列表</h2><ul id="message-list"><!-- 这里将来会动态生成留言 --></ul></div><div id="message-form"><h2>发布留言</h2><input type="text" id="name-input" placeholder="请输入您的用户名"><textarea id="message-input" placeholder="请输入留言内容"></textarea><button id="submit-button">发布</button></div><script src="js/script.js"></script></body></html>```以上代码中,我们创建了一个简单的留言板界面。

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语言开发的留言板

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计论文课题名称:基于jsp的班级留言管理程序学生姓名:解芸聪班级:08计软指导教师:二○壹一年三月三日题目:JSP + JDBC的班级留言管理程序[摘要]用户登陆之后,可以发表、修改、浏览全部、查询、删除留言。

[关键词]JSP的基础语法request对象response对象session对象JDBC操作HTML表单目录第1章Java Web 应用开发简介 (4)1.1 什么是Web编程 (4)1.2 JSP简介 (4)1.3 JSP的优点 (4)1.3.1 跨平台运行 (4)1.3.2 执行效率高 (5)1.3.3服务器端组件支持 (5)1.3.4数据库支持 (5)第2章班级留言板的分析 (8)第3章班级留言板的数据库设计3.1 用户信息表(person) (9)3.2 留言表(note) (9)第4章网络留言板的基本框架 (10)第5章网络留言板系统各功能模块的设计和实现5.1 公共模块 (10)5.1.1 “gcl_include.jsp”文件 (10)5.2 用户登陆界面 (11)5.3 欢迎界面 (12)5.4 留言板管理页面 (13)5.5 添加留言页面 (15)5.6 查询留言 (17)5.7 修改留言页面 (18)5.8 删除留言 (21)总结与体会 (23)附录1 插图清单 (24)附录2 查表清单 (24)第1章Java Web 应用开发简介WWW是目前Internet上的主要服务类型之一,WWW的基础是基于HTML 的页面,使用在HTML基础上的脚本语言进行应用程序开发,可以创建动态生成内容的Web页面。

JSP是一种在服务器端编译执行的Web设计语言,其脚本语言采用Java,并继承了Java的所有优点。

1.1 什么是Web编程Web编程简单地说是基于WWW的Internet上的应用程序开发,随着Internet的普及与传播,越来越多的人通过WWW走进网络世界的大门。

CGI(Common Gateway Interface)应用程序的第一次引入了动态交互的概念,这些运行于服务器端的脚本程序通常用Perl语言或C语言写成,需要编译才能运行。

随着Web应用程序技术的发展,CGI所引入的动态内容概念被很多新技术所实现和发展,基于程序运行的地点大致可以分为两大类:一类是随着HTML页面下载并运行于客户端的程序脚本,例如ActiveX控件,DHTML,Java Applet和JavaScript;另一类程序是基于服务器端的技术,例如Active Server Page(ASP),PHP, Java Server Page(JSP),Java Servlet等。

1.2 JSP简介JSP[1]是Java Server Page技术的缩写,是由Java语言的创造者Sun 公司提出、多家公司参与制定的动态网页技术标准。

通过在传统的(*.html,*.htm)中加入Java代码和JSP标记,构成后缀为*.jsp的JSP 网页文件。

Web服务器在遇到访问JSP页面的请求时,首先执行其中的代码片断,然后将执行的结果以普通HTML方式返回客户浏览器,JSP页面中的程序代码在客户端是看不到的。

这些内嵌的Java程序代码可以完成数据库的操作、文件上传、网页重定向、发送电子邮件的等功能,所有的操作均在服务器端进行,客户端得到的仅仅是运行的结果,因而对客户浏览器的要求很低。

JSP有Java Servlet技术为基础,利用可跨平台运行的Java Beans 组件,可以方便的操作数据库,执行各种复杂的查询,使逻辑处理和显示互相分离。

1.3 JSP的优点1.3.1 跨平台运行JSP的最大优势在于平台可移植性,利用Java语言的平台无关性,任何JSP程序只要编译一次,就可以在任何服务器平台使用。

1.3.2 执行效率高JSP在服务器端被Java 虚拟机编译成Servlet执行,编译的过程只在第一次执行时进行,以后Servlet对于每个客户端请求都使用内存中的同一副本处理,而不像CGI那样需要为每个请求创建单独的进程,而只要在Java虚拟机中装载一个Servlet ,因而节省了大量的服务器资源,执行时性能优化,代码效率高。

1.3.3 服务器端组件支持服务器端编程语言往往由于缺少强大的服务器组件支持而受到限制,JSP使用成熟的Java Beans技术,可以轻松得到各种服务器组件的支持。

1.3.4 数据库支持JSP技术利用Java语言的数据库操纵能力可以与任何JDBC兼容数据库建立连接,执行常用的查询、添加、更新、删除操作和复杂的逻辑代数。

利用Sun公司开发的JDBC-ODBC 桥,JSP还可以访问现有的ODBC(Open DataBase Connection)[2]驱动的数据库系统。

目前市场上的主流数据库产品都带有ODBC支持,所以JSP可以访问Oracle、Microsoft SQL Server 和My SQL等数据库产品。

第2章班级网络留言板的分析网络留言板,即班级留言管理程序,是一个可以在用户登陆以后,进行查询、发表、修改、浏览全部、删除留言等功能。

用户使用ID及PASSWORD登录网上留言版,随后进入欢迎界面,然后留言管理页面,根据用户需要,看是否要查找、添加、修改或删除留言。

根据以上分析,网络留言板应该具有如下功能:2.1 用户登陆用户在进入留言板前,必须验证身份。

即只有已注册的用户才能进行留言管理。

2.2 添加留言用户可以在留言板上添加留言。

2.3查询留言查询出现所要查询字的相关留言信息。

2.4修改留言用户登录系统后,可以修改留言信息。

2.5删除留言用户登录系统后,删除数据库留言。

第3章网络留言板的数据库设计根据以上的分析,设计出下面的数据库表。

3.1 用户信息表(person)用户信息表实,主要用来记录用户的详细信息。

用户信息表如表3-1所示表3-1用户信息表列名数据类型是否为空说明Id varchar(20)否id,主键Name varchar(20) 否用户姓名password Varchar(20) 否密码3.2留言表(note)留言表,主要用于记录用户留言信息。

留言表表详细信息如表3-2所示:表3-2留言表列名数据类型是否为空说明Id varchar(20)否留言序号,主键,自动增长Title varchar(20) 否主题author varchar(20) 否留言者content varchar(200) 否内容第4章网络留言板的基本框架网络留言程序目录部署如图4-1所示:第5章网络留言板系统各功能模块的设计和实现5.1 公共模块5.1.1 “gcl_include.jsp”文件“gcl _include.jsp”文件包含其它JSP文件中需要的登陆验证。

“gcl_include.jsp”文件的程序清单如下:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%if(session.getAttribute("name") == null){request.setAttribute("error","您没有登录,请您先登录!!");request.getRequestDispatcher("/gcl_login.jsp").forward(request,response);}%>5.2 用户登陆界面用户登陆页面程序“gcl_login.jsp”代码如下:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":" +request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'gcl_login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control"content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords"content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css"href="styles.css">--><style type="text/css"><!--.STYLE1 {color: #66FFCC;font-weight: bold;font-size: 36px;font-family: "楷体_GB2312";}.STYLE2 {font-family: "Courier New", Courier, monospace;font-size: 16px;font-weight: bold;color: #FFCCFF;}--></style></head><body><p align="center" class="STYLE1">08计软留言板</p><p align="center" class="STYLE2"> 用户登录页面</p><%if(request.getAttribute("error") != null){%><center><h3> <fontcolor="red" ><%=request.getAttribute("error") %></fon t></h3></center><% }%><form id="form1" name="form1" method="post"action="gcl_login_conf.jsp"><table width="337" height="124" border="1"align="center"><tr><td width="77">用户名:</td><td width="107"><label><input name="id" type="text" id="id" size="20" maxlength="20" /></label></td></tr><tr><td>密&nbsp;&nbsp;&nbsp;码:</td><td><label><input name="password" type="password"id="password" size="20" maxlength="20" /></label></td></tr><tr><td><label><input type="submit" name="submit" id="submit"value="登录" /></label></td><td><label><input type="reset" name="reset" id="reset" value="重置" /></label></td></tr></table></form></body></html>上述程序主要是定义一个表单以及相关的输入框,用于输入用户信息。

相关文档
最新文档