1、javaWeb课程设计图书管理系统 1 系统设计关键技术及开发工具收发室邮件管理系统主要采用JSP,Servlet、Struts、AJAX,CSS/XML,javascript等相关技术、采用oracle数据库、Apache Tomcat 5.5作为web服务器、开发工具为Myeclispe集成软件开发环境。整体设计遵循软件工程的方法,经过需求分析、系统设计、详细设计、文档和代码的编制、模块测试和系统实现这几个阶段,下面就对这几种技术和方法做一个概述。1.1 Struts技术Web应用分为交互层(Interaction Layer),表现数据,收集数据,也就是视图层,接受请求,通过处理层完成相
2、应的响应。(V,C)和处理层(Processing Layer),完成数据的处理,也就是业务层(M)。MVC的设计模式(应用观察者模式的框架模式)表现为M层: Model(Business process layer),模型层,操作数据的业务处理层,并独立于表现层(Independent of presentation)。V层: View(Presentation layer),视图层,通过客户端数据类型显示数据,并回显模型层的执行结果。C层: Controller(Control layer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图。正如上文所讲,
3、MVC框架的实现模型有两种:模型一(Page-centric):JSP+JavaBean,JSP既充当控制,又充当视图,以页面为核心,JSP使用jsp:useBean,它不能够实现不同的页面,显示不同的数据,需要借助于中间类来调用JavaBean的方法才能实现。模型二(Servlet-centric):JSP+Servlet+JavaBean,以控制为核心,JSP只负责显示和收集数据,Sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC的实现模式。Struts框架是使用MV
4、C的实现模式二来实现的,也就是以控制器为核心。它提供了一些组件使用MVC开发应用程序:Model:Struts没有提供model类。这个商业逻辑必须由Web应用程序的开发者以JavaBean或EJB的形式提供View:Struts提供了action form创建form bean, 用于在controller和view间传输数据。此外,Struts提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中。Controller:Struts提供了一个核心的控制器ActionServlet,通过这
5、个核心的控制器来调用其他用户注册了的自定义的控制器Action,自定义Action需要符合Struts的自定义Action规范,还需要在struts-config.xml的特定配置文件中进行配置,接收JSP输入字段形成Action form,然后调用一个Action控制器。Action控制器中提供了model的逻辑接口。11.2Servlet技术servlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的 Java 程序。除了 Java Servlet API,Servlet 还可以使用用以扩展和添加到 API 的 Java 类软件包。Servlet 在启用 Jav
6、a 的 Web 服务器上或应用服务器上运行并扩展了该服务器的能力。Java servlet对于Web服务器就好象Java applet对于Web浏览器。Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。 Java Servlet API 定义了一个servlet 和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给 Servlet,并让 Servlet 建立
7、起服务器返回给客户机的响应。 当启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet。装入后, Servlet 继续运行直到其它客户机发出请求。Servlet 的功能涉及范围很广。例如,Servlet 可完成如下功能:(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML页面。(2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面(HTML 片段)。(3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。(4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如,Servlet 可以是多参与者的游戏
8、服务器。(5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准 (如 IIOP)进行通信。(6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括(SSI)。(7) 将定制的处理提供给所有服务器的标准例行程序。例如,Servlet 可以修改如何认证用户。(8)网站流程的控制。例如,用户登陆11.3 开发工具MyEclispe简介Eclipse 是一个开放源代码的、基于 Java 的可扩展开发
9、平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。MyEclispe是基于Eclispe的J2EE应用程序开发工具,此系统就是采用MyEclispe6.0来开发的,它集中了开源和商业软件的开发支持的大多数框架,方便易用,功能强大,它支持开发基于Spring、Hibernate、Struts、JSF、JPA、EJB、Web Service 等技术的项目。62系统需求分析2.1系统整体分析在当今高速发展的信息时代,计算机技术已经被应用于社会的
10、各个方面,取代了很多人工的操作,这样既提高了效率,又节省了劳动力。学校等机关图书管理也应该跟上科技的发展,运用计算机进行自动化的管理。本课题在研究了学校图书管理运营模式之后,从学校的实际需求出发,采用当前较为流行的B/S结构和JSP动态网页技术,基于Oracle数据库,设计并实现一个功能完善的小型图书管理系统。本系统主要包括图书管理,借还书管理和读者管理三大模块。本文是该系统需求文档,对系统功能结构进行分析,并对数据流程进行了图解,以及对这次设计进行了总结。2.2系统数据分析 本系统共有5张数据表: 2.3数据流图 2.4功能模块的核心代码网站后台开发目录结构:用户登陆的核心代码:packag
11、e com.servlet;import java.io.IOException;import java.io.PrintWriter;import java.sql.ResultSet;import java.sql.SQLException;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import java
12、x.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.connectDb;import com.toChinese;public class servletGo extends HttpServlet public void init(ServletConfig config) throws ServletException super.init(); public void doPost(H
13、ttpServletRequest request, HttpServletResponse response) throws IOException connectDb conD=new connectDb(); toChinese t=new toChinese(); ResultSet rs1=conD.con(select username from reader); ResultSet rs2=conD.con(select password from reader); response.setContentType(text/html;charset=gb2312); PrintW
14、riter out=response.getWriter(); String string1=t.codeToString(request.getParameter(username); String string2=t.codeToString(request.getParameter(userpassword); Map map=new HashMap(); try while(rs1.next()&rs2.next() map.put(rs1.getString(1),rs2.getString(1); catch (SQLException e) e.printStackTrace()
15、; Set keySet=map.keySet(); Iterator iterator=keySet.iterator(); while(iterator.hasNext() if(!(iterator.next().equals(string1) iterator.remove(); if(keySet.isEmpty() out.print(用户名或密码错误,点此重新登陆); else String string3=map.get(string1); if(!string3.equals(string2) out.print(用户名或密码错误,点此重新登陆); else Object b
16、=keySet.toArray(); String str=b0.toString(); response.sendRedirect(./library.jsp?username=+str); System.out.print(str); 使用jsp验证用户名是否重名,用户是否已经被注册:% ResultSet rs=conD.con(select username from reader); List list=new ArrayList(); while(rs.next() list.add(rs.getString(1); toChinese t=new toChinese(); Str
17、ing string1=t.codeToString(request.getParameter(username); String string2=t.codeToString(request.getParameter(userpassword); qb.setConnection(oracle.jdbc.driver.OracleDriver, jdbc:oracle:thin:127.0.0.1:1521:orcl,yexiang,ye123); String stringSqlString = insert into reader values(reader_id.nextval,+st
18、ring1+,+string2+); qb.setQuerystatement(stringSqlString); /设置SQL语句 Iterator iterator=list.iterator(); while(iterator.hasNext() if(!iterator.next().equals(string1) iterator.remove(); if(list.isEmpty() qb.insertRecord();/插入数据 out.print(注册成功); else out.print(注册失败,用户名已注册);%接收新用户注册 您注册的用户名是:Struts 的使用与配置
19、Web.xmlweb-app version=2.5 xmlns= xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xsi:schemaLocation= This is the description of my J2EE component This is the display name of my J2EE component servletGo com.servlet.servletGo This is the description of my J2EE component This is the display name of
20、 my J2EE component booksServlet com.servlet.booksServlet This is the description of my J2EE component This is the display name of my J2EE component serachServlet com.servlet.serachServlet servletGo /servlet/servletGo booksServlet /servlet/booksServlet serachServlet /servlet/serachServlet enter.html
21、redisp com.bean.ReDispatcherFilter includeServlets servletGo,booksServlet,serachServlet redisp /* struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* Struts.xml /main/frame_c.jsp 3系统界面展示3.1页面登陆:注册:主界面: 最新入库搜索书籍我要借书4设计总结在需求分析部分,我们认真阅读了图书管理系统的功能简述,在此基础上把整个系统按处理功能分解
22、成若干模块,进行数据分解,画出了总系统和各模块的数据流图、数据项表、数据结构表、数据流表等。我们得到的需求分析的主要结果,基本反映了用户的需求。在概念结构设计时,我们采用自底向上的设计方法。将数据流程图中的子图抽象为E-R图,然后再合并各个分E-R图。设计出的整体概念结构内部具有一致性,不但能满足需求分析阶段确定的所有要求,而且能准确反映原来的每个子视图的结构。并且给出了各个实体的描述,对实体和关系进行了调整,消除了冗余实体和冗余关系。在逻辑结构设计时,我们选择oracle所支持的数据模型,适于描述和表达概念结构的。我们遵循一定原则进行实体、属性和联系的转换。优化了关系数据模型,根据具体的应用确定范式和关系模式的分解与合并。确定了外模式和数据视图。在使用servlet时遇到了许多参数传输错误,最后发现大多数都是 路径问题解决完就没问题了,操作数据库时sql语句要符合规范,明白怎么使用参数来查寻。在使用struts2时配置与servlet冲突,struts将所有请求都拦截了,经过网上XX后再struts配置前加了servlet的配置就没问题了。这次实验我熟悉了很多新学到了技术,学习到了解决问题的方法,收获颇多。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1