javaWeb课程设计图书管理系统Word文件下载.docx
《javaWeb课程设计图书管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《javaWeb课程设计图书管理系统Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
![javaWeb课程设计图书管理系统Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/25/45278f3f-05e5-4b8f-b26d-130aa01d86c4/45278f3f-05e5-4b8f-b26d-130aa01d86c41.gif)
Servlet在启用Java的Web服务器上或应用服务器上运行并扩展了该服务器的能力。
Javaservlet对于Web服务器就好象Javaapplet对于Web浏览器。
Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。
JavaServletAPI定义了一个servlet和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。
Servlet通过创建一个框架来扩展服务器的能力,以提供在Web上进行请求和响应服务。
当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应。
当启动Web服务器或客户机第一次请求服务时,可以自动装入Servlet。
装入后,Servlet继续运行直到其它客户机发出请求。
Servlet的功能涉及范围很广。
例如,Servlet可完成如下功能:
(1)创建并返回一个包含基于客户请求性质的动态内容的完整的HTML页面。
(2)创建可嵌入到现有HTML页面中的一部分HTML页面(HTML片段)。
(3)与其它服务器资源(包括数据库和基于Java的应用程序)进行通信。
(4)用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。
例如,Servlet可以是多参与者的游戏服务器。
(5)当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连
接保持在打开状态。
当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。
可以通过定制协议或标准(如IIOP)进行通信。
(6)对特殊的处理采用MIME类型过滤数据,例如图像转换和服务器端包括(SSI)。
(7)将定制的处理提供给所有服务器的标准例行程序。
例如,Servlet可以修改如何认证用户。
(8)网站流程的控制。
例如,用户登陆[1]
1.3开发工具MyEclispe简介
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
MyEclispe是基于Eclispe的J2EE应用程序开发工具,此系统就是采用MyEclispe6.0来开发的,它集中了开源和商业软件的开发支持的大多数框架,方便易用,功能强大,它支持开发基于Spring、Hibernate、Struts、JSF、JPA、EJB、WebService等技术的项目。
[6]
2系统需求分析
2.1系统整体分析
在当今高速发展的信息时代,计算机技术已经被应用于社会的各个方面,取代了很多人工的操作,这样既提高了效率,又节省了劳动力。
学校等机关图书管理也应该跟上科技的发展,运用计算机进行自动化的管理。
本课题在研究了学校图书管理运营模式之后,从学校的实际需求出发,采用当前较为流行的B/S结构和JSP动态网页技术,基于Oracle数据库,设计并实现一个功能完善的小型图书管理系统。
本系统主要包括图书管理,借还书管理和读者管理三大模块。
本文是该系统需求文档,对系统功能结构进行分析,并对数据流程进行了图解,以及对这次设计进行了总结。
2.2系统数据分析
本系统共有5张数据表:
2.3数据流图
2.4功能模块的核心代码
网站后台开发目录结构:
用户登陆的核心代码:
packagecom.servlet;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.Map;
importjava.util.Set;
importjavax.servlet.ServletConfig;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.connectDb;
importcom.toChinese;
publicclassservletGoextendsHttpServlet{
publicvoidinit(ServletConfigconfig)throwsServletException{
super.init();
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsIOException{
connectDbconD=newconnectDb();
toChineset=newtoChinese();
ResultSetrs1=conD.con("
selectusernamefromreader"
);
ResultSetrs2=conD.con("
selectpasswordfromreader"
response.setContentType("
text/html;
charset=gb2312"
PrintWriterout=response.getWriter();
Stringstring1=t.codeToString(request.getParameter("
username"
));
Stringstring2=t.codeToString(request.getParameter("
userpassword"
Map<
String,String>
map=newHashMap<
();
try{
while(rs1.next()&
&
rs2.next()){
map.put(rs1.getString
(1),rs2.getString
(1));
}
}catch(SQLExceptione){
e.printStackTrace();
Set<
String>
keySet=map.keySet();
Iterator<
iterator=keySet.iterator();
while(iterator.hasNext()){
if(!
(iterator.next().equals(string1))){
iterator.remove();
}
if(keySet.isEmpty()){
out.print("
<
ahref='
../enter.html'
>
b>
用户名或密码错误,点此重新登陆<
/b>
/a>
"
else{
Stringstring3=map.get(string1);
string3.equals(string2))
else{
Object[]b=keySet.toArray();
Stringstr=b[0].toString();
response.sendRedirect("
../library.jsp?
username="
+str);
System.out.print(str);
}
}
使用jsp验证用户名是否重名,用户是否已经被注册:
%@pagecontentType="
%>
%@pageimport="
com.toChinese"
%>
java.sql.*"
java.util.*"
jsp:
useBeanid="
conD"
class="
com.connectDb"
scope="
page"
/jsp:
useBean>
qb"
com.QueryBean"
%
ResultSetrs=conD.con("
List<
list=newArrayList<
while(rs.next()){
list.add(rs.getString
(1));
toChineset=newtoChinese();
Stringstring1=t.codeToString(request.getParameter("
Stringstring2=t.codeToString(request.getParameter("
qb.setConnection("
oracle.jdbc.driver.OracleDriver"
"
jdbc:
oracle:
thin:
@127.0.0.1:
1521:
orcl"
"
yexiang"
ye123"
StringstringSqlString="
insertintoreadervalues(reader_id.nextval,'
+string1+"
'
'
+string2+"
)"
;
qb.setQuerystatement(stringSqlString);
//设置SQL语句
Iterator<
iterator=list.iterator();
while(iterator.hasNext()){
if(!
iterator.next().equals(string1))
if(list.isEmpty()){
qb.insertRecord();
//插入数据
out.print("
enter.html'
注册成功<
else
{out.print("
regist.html'
注册失败,用户名已注册<
html>
head>
title>
接收新用户注册<
/title>
/head>
body>
br>
您注册的用户名是:
%=t.codeToString(request.getParameter("
))%>
/body>
/html>
Struts的使用与配置
Web.xml
?
xmlversion="
1.0"
encoding="
UTF-8"
web-appversion="
2.5"
xmlns="
xmlns:
xsi="
http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
<
servlet>
description>
ThisisthedescriptionofmyJ2EEcomponent<
/description>
display-name>
ThisisthedisplaynameofmyJ2EEcomponent<
/display-name>
servlet-name>
servletGo<
/servlet-name>
servlet-class>
com.servlet.servletGo<
/servlet-class>
/servlet>
booksServlet<
com.servlet.booksServlet<
serachServlet<
com.servlet.serachServlet<
servlet-mapping>
url-pattern>
/servlet/servletGo<
/url-pattern>
/servlet-mapping>
/servlet/booksServlet<
/servlet/serachServlet<
welcome-file-list>
welcome-file>
enter.html<
/welcome-file>
/welcome-file-list>
filter>
filter-name>
redisp<
/filter-name>
filter-class>
com.bean.ReDispatcherFilter<
/filter-class>
init-param>
param-name>
includeServlets<
/param-name>
param-value>
servletGo,booksServlet,serachServlet<
/param-value>
/init-param>
/filter>
filter-mapping>
/*<
/filter-mapping>
struts2<
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter<
/web-app>
Struts.xml
?
!
DOCTYPEstrutsPUBLIC
"
-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"
//struts.apache.org/dtds/struts-2.3.dtd"
struts>
constantname="
struts.devMode"
value="
true"
/>
packagename="
main"
namespace="
/library"
extends="
struts-default"
actionname="
borrow"
com.action.borrowBook"
resultname="
success"
/main/frame_c.jsp
/result>
/action>
/package>
--Addpackageshere-->
/struts>
3系统界面展示
3.1页面
登陆:
注册:
主界面:
最新入库
搜索书籍
我要借书
4设计总结
在需求分析部分,我们认真阅读了图书管理系统的功能简述,在此基础上把整个系统按处理功能分解成若干模块,进行数据分解,画出了总系统和各模块的数据流图、数据项表、数据结构表、数据流表等。
我们得到的需求分析的主要结果,基本反映了用户的需求。
在概念结构设计时,我们采用自底向上的设计方法。
将数据流程图中的子图抽象为E-R图,然后再合并各个分E-R图。
设计出的整体概念结构内部具有一致性,不但能满足需求分析阶段确定的所有要求,而且能准确反映原来的每个子视图的结构。
并且给出了各个实体的描述,对实体和关系进行了调整,消除了冗余实体和冗余关系。
在逻辑结构设计时,我们选择oracle所支持的数据模型,适于描述和表达概念结构的。
我们遵循一定原则进行实体、属性和联系的转换。
优化了关系数据模型,根据具体的应用确定范式和关系模式的分解与合并。
确定了外模式和数据视图。
在使用servlet时遇到了许多参数传输错误,最后发现大多数都是路径问题
解决完就没问题了,操作数据库时sql语句要符合规范,明白怎么使用参数来查寻。
在使用struts2时配置与servlet冲突,struts将所有请求都拦截了,经过网上XX后再struts配置前加了servlet的配置就没问题了。
这次实验我熟悉了很多新学到了技术,学习到了解决问题的方法,收获颇多。