JAVA大作业实验报告Word格式.docx
《JAVA大作业实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《JAVA大作业实验报告Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
3.1.2jsp部分
Jsp部分设计了8个页面,其中index页面用来跳转至login页面,,login页面用来输入登录数据,welcome页面显示登录成功后可进行下一步操作的页面,logout页面显示用户登出后的状态,logo页面显示每页中都有的一个logo,message页面显示留言板的留言页面,showmessage页面显示留言板的内容。
3.1.3servlet部分
Servlet部分设计了3个,其中loginservlet用来处理用户登录时的数据,registerservlet用来处理用户注册时的数据,messageservlet用来处理用户运行留言板功能时的数据。
3.1.4javabean部分
Javabean部分设计了3个,其中databasebean用来连接access数据库,userdao用来进行用户在登录注册功能中对数据库的操作,messagedao用来进行用户在留言板功能中对数据库的操作。
3.2整个系统的结构,各模块之间的关系图
数据流图是对系统数据流向的一种描述,并从本质上让程序的使用者,大致了解系统的使用方法。
本登录系统的大致流程图如下:
图3-2数据流图
3.3系统中的MVC层次结构介绍
MVC是三个单词的缩写,分别为:
模型(Model),视图(View)和控制Controller)。
MVC模式的目的就是实现Web系统的职能分工。
Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。
View层用于与用户的交互,通常用JSP来实现。
Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
在这个登录系统中,视图(View)层为jsp,模型(Model)层为javabean,控制Controller)层为servlet。
视图层用于与用户进行登录用户、密码的输入,注册用户、密码、电子邮件的输入等程序与用户之间的交互;
模型层用于连接数据库并对按用户需求提取出的数据库信息的操作;
控制层用于在用户输入数据后对输入数据的处理及判断。
3.4各模块说明及介绍
3.4.1index.jsp
此页面中仅有一句代码,<
%response.sendRedirect("
login.jsp"
);
%>
用于跳转至login.jsp中。
3.4.2login.jsp
此页面负责将用户输入的数据送给loginservlet处理或通过超链接进入register.jsp进行注册。
<
%Stringnotice=(String)request.getAttribute("
notice"
%if(notice!
=null){%>
<
fontcolor="
red"
>
%=notice%>
/font>
%}%>
用于将loginservlet中对用户输入的数据进行处理后的结果通过notice的文字表达方式送回本页面中来提示所输入的数据是否可用。
3.4.3register.jsp
此页面与login.jsp页面基本一样,负责将用户输入的数据送给registerservlet处理。
用于将servletservlet中对用户输入的数据进行处理后的结果通过notice的文字表达方式送回本页面中来提示所输入的数据是否可用。
3.4.4welcome.jsp
此页面为用户成功登陆后由login.jsp转至的页面,作用为进行登出或其他功能的操作。
%Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"
:
//"
+request.getServerName()+"
"
+request.getServerPort()+path+"
/"
;
basehref="
%=basePath%>
这个标签在jsp中表示,该页所有的默认连接时新窗口,还是当前页,还是框架页里打开新连接。
%=(String)session.getAttribute("
username"
)%>
用来取得在login.jsp中发出的username数据然后显示出来。
ahref="
message.jsp"
点击进入留言板<
/a>
建立一个超链接连接至自行添加的功能留言板页面。
3.4.5logout.jsp
此页面为用户登出后的界面。
已经退出登录<
br>
用来接收前面所输入的username数据已显示。
%session.removeAttribute("
用来移除保存在session中的username数据,这样才可以在返回登陆页面后能重新输入用户数据进行登录。
3.4.6databasebean.java
此javabean用来连接数据库并定义一些变量来控制打开、更新、关闭数据库。
定义classDatabaseBean控制整个databasebean中的整体变量,publicDatabaseBean()用来打开数据库,publicbooleanupdate(Stringsql)用来更新数据库中sql所指向的内容,publicResultSetquery(Stringsql)用来提取sql中所指向的内容,publicbooleanisThereAnyResult(Stringsql)用来判断sql在数据库中提取的内容和用户输入的数据的相同与否,以ture和false返回。
3.4.7userdao.java
此javabean用来定义数据库查询语句sql及进行相关的数据库操作。
定义publicbooleanisValid(Stringusername,Stringpassword)用来提取Stringsql="
select*fromuserwhereusername='
+username+"
'
andpassword='
+password+"
的内容并使用publicbooleanisThereAnyResult(Stringsql)进行判断后的返回值来操作用户输入的用户密码是否存在或密码是否错误。
定义publicbooleanisExist(Stringusername)用来提取Stringsql="
select*fromuserwhereusername="
的内容并使用publicbooleanisThereAnyResult(Stringsql)进行判断后的返回值来操作用户在注册是输入的用户名是否存在。
定义publicvoidadd(Stringusername,Stringpassword,Stringemail)用来使用Stringsql="
insertintouser(username,password,email)values("
"
+password+"
+email+"
)"
进行数据库的更新。
3.4.8loginservlet.java
此servlet用来处理输入的登录数据。
importjavabean.UserDAO;
添加userdao到此servlet中,使用Stringusername=request.getParameter("
Stringpassword=request.getParameter("
password"
用来提取在login.jsp中用户输入的数据,然后使用判断语句判断username=="
,为真则返回notice为用户名未输入并传送至login.jsp,为假则使用userdao中的userDao.isValid(username,password),返回为真则将username保存至session中并跳转至welcome.jsp页面以显示登录成功,为假则返回notice为用户名、密码输入错误并传送至login.jsp。
3.4.9registrerservlet.java
此servlet用来处理输入的注册数据。
Stringpassword1=request.getParameter("
password1"
Stringpassword2=request.getParameter("
password2"
Stringemail=request.getParameter("
email"
用来提取在register.jsp中用户输入的用户名、密码、二次密码、电子邮件的数据,然后使用if(username.equals("
)||password1.equals("
)||password2.equals("
))进行用户名、密码、二次密码是否为空,若判断为真则返回notice为信息未输入完整并传送至register.jsp中,判断为假则再进行if(!
password1.equals(password2))判断密码与二次密码输入的数据是否相同,若判断为真则返回notice为两次输入密码不同并传送至register.jsp中,判断为假则使用userdao中的userDao.isExist(username),返回为真则返回notice为用户名已注册,请更换用户名并传送至registter.jsp中,为假则进行userDao.add(username,password2,email);
的操作并返回notice为注册成功。
4系统界面截图
根据上面所介绍的本系统的各个模块及其需要实现的功能,下面详细设计如下:
4.1.系统主界面截图
首先显示登录界面:
若输入的用户名在数据库中不存在,则显示为:
然后点击注册新用户进入注册页面:
此处注册用户名为123,密码为123,email为123。
若确认密码中输入的不是123则显示:
注册成功则显示
使用注册的用户名和密码登录,显示weicome页面:
点击进入留言板,显示:
输入标题、留言内容后点击留言显示成功:
点击查看留言板,显示留言板内的内容:
5新增代码说明
新增代码为一个留言板功能,留言板的功能同样以MVC模型建立,其中,jsp部分负责用户的可视部分,servlet负责处理用户提交的数据,javabean则负责由servlet进行处理后所使用的功能。
Jsp层中使用了两个jsp,message为留言板输入页面,showmessage为显示留言板页面。
javabean层中使用了两个javabean,databasebean为连接数据库,messagedao用来进行用户在留言板功能中对数据库的操作。
Servlet层中使用了一个servlet,messageservlet用来处理用户运行留言板功能时的数据。
在message.jsp中,<
StringbasePath=request.getScheme()+"
用来取得在login.jsp中发出的username数据然后显示出来并发送至messageservlet中作为author的数据。
showmessage.jsp"
点击查看留言板<
/td>
跳转至留言板查看页面。
在showmessage.jsp中,使用<
%while(rs.next()){out.print("
tr>
for(inti=1;
i<
=4;
i++){out.print("
td>
+rs.getString(i)+"
}out.print("
/tr>
}%>
的循环语句来循环提取在数据库中的留言板数据并打印在当前页面中。
在messagedao.java中,定义publicvoidadd(Stringtitle,Stringcontent,Stringauthor)用来将servlet发送出的数据添加到数据库中,定义publicvoidshow(Stringtitle,Stringcontent,Stringauthor)用来提取数据库中的数据。
在messageservlet.java中,importjavabean.UserDAO;
添加userdao到此servlet中,使用Stringtitle=request.getParameter("
title"
Stringcontent=request.getParameter("
content"
Stringauthor=request.getParameter("
author"
用来提取在message.jsp中用户输入的标题、内容和用户名的数据,然后使用if(title.equals("
)||content.equals("
))进行标题、内容和用户名是否为空的判断,若判断为真则返回notice为未输入内容并传送至message.jsp中,判断为假则使用MessageDao中的MessageDao.add(title,content,author),的操作并返回notice为已发表。
添加新功能源代码如下:
--------------message.jsp---------------------------
%@pagelanguage="
java"
import="
java.util.*"
pageEncoding="
UTF-8"
%
Stringnotice=(String)request.getAttribute("
!
DOCTYPEHTMLPUBLIC"
-//W3C//DTDHTML4.01Transitional//EN"
html>
head>
title>
留言板<
/title>
/head>
body>
center>
jsp:
includepage="
logo.jsp"
/>
h2>
登录成功<
/h2>
formname="
form1"
action="
MessageServlet"
method="
post"
tablewidth="
300"
border="
1"
tdalign="
center"
欢迎你,<
blue"
divstyle="
width:
500px;
border:
1pxsolid;
留言标题:
inputtype="
text"
name="
<
留言内容:
textareaname="
cols="
30"
rows="
5"
/textarea>
用户:
value="
submit"
留言"
/div>
tdcolspan="
2"
align="
退出"
/table>
/form>
/center>
/body>
/html>
--------------showmessage.jsp---------------------------
DOCTYPEhtml>
%@pageimport="
.*"
java.sql.*"
Stringdrv="
sun.jdbc.odbc.JdbcOdbcDriver"
Stringurl="
jdbc:
odbc:
Driver={MicroSoftAccessDriver(*.mdb)};
DBQ=d:
\\j.mdb"
Stringusr="
Stringpwd="
Stringsql="
select*fromlyborderbytitle"
//orderbyidDESC
insertintomessage(TITLE,CONTENT,AUTHOR,COMPOSE_DATE)values('
+msg.getTitle()+"
'
+msg.getContent()+"
+msg.getAuthor()+"
+msg.getStrDate()+"
deletefrommessagewhereID="
+id+"
try{
Class.forName(drv);
Connectionconn=DriverManager.getConnection(url,usr,pwd);
Statementstm=conn.createStatement();
ResultSetrs=stm.executeQuery(sql);
HTML>
BO