南昌大学数据库实验8 BS模式应用程序开发.docx
- 文档编号:24714447
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:37
- 大小:130.31KB
南昌大学数据库实验8 BS模式应用程序开发.docx
《南昌大学数据库实验8 BS模式应用程序开发.docx》由会员分享,可在线阅读,更多相关《南昌大学数据库实验8 BS模式应用程序开发.docx(37页珍藏版)》请在冰豆网上搜索。
南昌大学数据库实验8BS模式应用程序开发
南昌大学实验报告
学生姓名:
王维学号:
6100212202专业班级:
网工121班
实验类型:
■验证□综合□设计□创新实验日期:
实验成绩:
一、实验名称
实验8B/S模式应用程序开发
二、试验目的
(1)掌握利用Dreamweaver2004的基本使用,建站点、连接数据库。
(2)掌握在Dreamweaver2004中通过菜单的方式使用数据库。
(3)掌握利用JSP的基本语法。
(4)掌握B/S模式数据库程序设计的方法。
三、试验内容
设计一个班级BBS网站,该系统具有以下功能:
(1)用户注册;
(2)用户信息查询和更改个人信息;
(3)显示聊天内容;
(4)对已发的留言进行更改;
(5)站点访问次数的记录。
四、实验环境
(1)硬件环境:
互联网及运行在一起环境中的一台计算机。
(2)软件环境:
Windows2012操作系统;
MicrosoftSQLServer2012数据库管理系统;
Tomcat7;
MySQL;
MyEclipse;
五、实验步骤
(1)根据班级里同学提供的BBS的要求和自己的分析写出需求分析报告。
(2)在需求分析报告的基础上,进行概念设计和系统的功能设计。
(3)根据功能确定数据库结构。
(4)理顺各功能模块之间的关系,确定各页面的转向关系。
(5)按照本章的步骤设计各功能模块。
六、实验分析
本实验,我设计了数据库bbs,以及三个表users、posts和replys
users记录的是用户账户信息;posts记录的是发帖;而replys记录的是所有帖子的回复帖。
用户表users
列名
数据类型
主键
NULL
说明
id
int
是
NOT
自动增长id
name
varchar(20)
NOT
姓名
password
varchar(20)
NOT
密码
varchar(40)
电子邮件
phone
varchar(11)
电话号码
帖子表posts
列名
数据类型
主键
NULL
说明
id
int
是
NOT
自动增长id
username
varchar(20)
NOT
姓名
title
varchar(30)
NOT
帖子标题
content
text
NOT
帖子内容
time
timestamp
时间戳
回复帖子的表replys
列名
数据类型
主键
NULL
说明
id
int
是
NOT
自动增长id
postid
int
NOT
所回复帖子的id
username
varchar(20)
NOT
姓名
content
text
NOT
帖子内容
time
timestamp
时间戳
对应的的sql语句为:
createdatabasebbs;
usebbs;
createtableusers(
idintprimarykeyauto_increment,
namevarchar(20)notnull,
passwordvarchar(20)notnull,
emailvarchar(40),
phonevarchar(11)
);
createtableposts(
idintprimarykeyauto_increment,
usernamevarchar(20)notnull,
titlevarchar(30)notnull,
contenttextnotnull,
timetimestamp
);
createtablereplys(
idintprimarykeyauto_increment,
postidintnotnull,
usernamevarchar(20)notnull,
contenttextnotnull,
timetimestamp
);
在后台的Java源码中,我建立了三个包:
●entity包:
实体包,里面的类符合JavaBean的设计原则,只包含set和get方法,以及无参数的构造方法
⏹User类:
用户实体类
⏹Post类:
帖子实体类
⏹Reply类:
回复的实体类
●dao包:
为每一个实体类,建立了一个DAO类,来封装实体的各种操作
⏹UserDAO类:
封装了用户登录(loginUser方法)和增加用户(addUser)的功能
⏹PostDAO类:
封装了获得所有帖子(getAllPosts方法),和通过id获得某个帖子(getPostById方法)的工程
⏹ReplyDAO类:
封装了通过帖子id来获得全部回复(getReply方法),还有发表回复的功能(postReply方法)
●util包:
功能包,只包含一个数据库操作类DBHelper
⏹DBHelper类:
使用单例模式,返回一个数据库的连接对象(getConnection方法)
我的开发环境,选择的是MyEclipse。
jsp文件中的很多内容是自动生成的。
只包含四个jsp文件:
●login.jsp
●register.jsp
●posts.jsp
●detail.jsp
这个网站的入口我设计的是login.jsp,即用户登录,如果用户未注册则点击注册按钮,进入register.jsp页面,注册完成后进入posts页面;如果已经注册则输入用户名和密码,点击登录按钮,如果用户名和密码和后端的数据库中的用户名密码相匹配则进入posts页面。
不匹配则不停留在login.jsp页面。
posts.jsp页面是所有帖子标题及发帖人等信息的简单汇总页面,用表格table来显示(做得比较丑)
点击不同的帖子会进入不同的detail.jsp页面,url跳转时,传递的参数中包含了帖子的id。
在detail.jsp页面根据不同的帖子id,来显示不同的帖子的详细内容,并且会查询数据库中的replys表,将该帖子的所有回复,在帖子内容的下方,展示出来。
源码见后面附录
七、实验结果
在tomcat启动后,打开浏览器,在地址栏输入http:
//localhost:
8080/BBS/login.jsp
页面如下:
点击登录,页面如下,此时我的数据表中只有两个帖子。
点击第一个帖子
点击第一个庐山西海神韵
最上面是标题“庐山西海神韵”,下面是一个表格,左侧是用户名,右侧是内容。
现在我发表一个回复。
点击回复,之后
可以看到已经更新到页面中了。
下面看一下,注册页面:
注册了一个用户wangwei。
点击提交。
这时去MySQL的控制台去查一下users表:
可以看到多了一条记录。
再来看,当我尝试注册一个没有用户名的用户的时候。
这是用JS实现的。
当我两次输入的密码不一致时:
八、总结和感想
B/S应用程序的开发,就是web开发。
之前学习过Java,但是没有接触过Web开发,所以很多概念都是新学的,这个实验也是现学现卖,做得很差。
尤其是前端,做得很丑,我想重点还是放在后台吧。
因为时间比较赶,所以设计的数据库表的结构比较简单,包含的字段较少,以后有时间自己再补充完善。
九、附录
WebRoot下面的jsp页面代码:
login.jsp
<%@pageimport="dao.UserDAO"%>
<%@pagelanguage="java"import="java.util.*"
contentType="text/html;charset=utf-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"
+request.getServerName()+":
"+request.getServerPort()
+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
type='login'"method="post">用户名:
register.jsp
<%@pagelanguage="java"import="java.util.*"
contentType="text/html;charset=utf-8"%>
<%@pageimport="entity.User"%>
<%@pageimport="dao.UserDAO"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"
+request.getServerName()+":
"+request.getServerPort()
+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--
-->
functionvalidate_form(thisform){
with(thisform){
if(username.value==""){
alert("用户名不能为空");
returnfalse;
}
if(password.value==""){
alert("密码不能为空");
returnfalse;
}
if(password.value!
=repassword.value){
alert("两次密码不一致");
repassword.value="";
returnfalse;
}
apos=email.value.indexOf("@");
dotpos=email.value.lastIndexOf(".");
if(apos<1||dotpos-apos<2){
alert("邮箱格式不正确");
returnfalse;
}
returntrue;
}
}
type='register'" onsubmit="returnvalidate_form(this);"method="post">用户名
posts.jsp
<%@pageimport="entity.User"%>
<%@pagelanguage="java"import="java.util.*"
contentType="text/html;charset=utf-8"%>
<%@pageimport="dao.PostDAO"%>
<%@pageimport="dao.UserDAO"%>
<%@pageimport="entity.Post"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"
+request.getServerName()+":
"+request.getServerPort()
+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--
-->
<%
Stringusername=request.getParameter("username");
Stringpassword=request.getParameter("password");
Stringtype=request.getParameter("type");
UserDAOud=newUserDAO();
Useruser=newUser();
user.setName(username);
user.setPassword(password);
if(type.equals("login")){
booleanflag=ud.loginUser(user);
if(flag==false){
response.sendRedirect("login.jsp");
}
}else{
user.setEmail(request.getParameter("email"));
user.setPhone(request.getParameter("phone"));
ud.addUser(user);
}
CookieusernameCookie=newCookie("username",username);
CookiepasswordCookie=newCookie("password",password);
//最大生存期限
usernameCookie.setMaxAge(864000);
passwordCookie.setMaxAge(864000);
response.addCookie(usernameCookie);
response.addCookie(passwordCookie);
%>
--
useBeanid="user1"class="entity.User"scope="page"/> setPropertyname="user1"property="*"/> <%/* if(user.getName()! =null){ ud.addUser(user1); }*/%> -->帖子列表
标题 发帖人 时间
<%
PostDAOpd=newPostDAO();
ArrayList
for(inti=0;i Postpost=posts.get(i); %> <% out.println(" postid="+post.getId() +"'>"+post.getTitle()+" %> ");<%=post.getUserName()%> <%=post.getTime()%>
<%
}
%>
detail.jsp
<%@pageimport=".URLEncoder"%>
<%@pageimport="dao.PostDAO"%>
<%@pageimport="dao.ReplyDAO"%>
<%@pageimport="entity.Post"%>
<%@pageimport="entity.Reply"%>
<%@pagelanguage="java"import="java.util.*"
contentType="text/html;charset=utf-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"
+request.getServerName()+":
"+request.getServerPort()
+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌大学数据库实验8 BS模式应用程序开发 南昌大学 数据库 实验 BS 模式 应用程序 开发