基于JAVA的宠物网站的设计与实现

news/2024/5/20 10:47:49/文章来源:https://blog.csdn.net/taotao658/article/details/116028921
源码及资料:
http://www.byamd.xyz/sss.html

摘 要

本系统是采用Java技术来构建的一个基于Web技术的B/S结构的宠物网站,该网站建立在Spring和Struts2框架之上,前台使用JSP作为开发语言,后台使用MySQL数据库管理系统对数据进行管理,开发环境选用MyEclipse,应用服务器采用Tomcat。

宠物网站系统为广大用户实现便捷的购买宠物的功能,实现宠物商店的网络化管理。网站前台系统主要负责与用户打交道,实现用户的注册、登录、宠物预览、提交订单等功能。网站后台系统主要实现管理员登录、会员中心、新闻动态、完成订单、系统维护等功能。结果表明,本系统能够实现所需的功能,并且运行状况良好。

本文分为六个部分。在绪论里首先分析了课题的研究背景与研究现状;第二章介绍了本系统开发采用的技术;第三章根据软件开发流程,对系统进行可行性分析和需求分析;第四章为系统概要设计,本章提出系统总体功能模块的设计,并对数据库的结构进行设计;第五章着重介绍各个功能模块的实现方案;最后,第六章介绍系统单元测试和性能测试的设计,以及对测试结果的分析。

****关键词****:宠物商店网站系统;JSP;Mysql数据库;Spring和Struts2框架

Design and Implementation of Pet Web site Based on Java

ABSTRACT

This system is constructed by Java based on a B/S technology Web structure of the pet website, the website based on Spring and Struts2 framework, the use of JSP as a development language, the background using the MySQL database management system to manage the data, with the MyEclipse development environment, application server using Tomcat.
Pet website system for the majority of users to facilitate the purchase of pet functions, pet shops to achieve network management. Website front desk system is mainly responsible for dealing with users, to achieve the user’s registration, login, pet preview, submit orders and other functions. Website backstage system mainly realizes the administrator login, the member center, the news dynamics, completes the order, the system maintenance and so on. The results show that the system can achieve the required functions and run in good condition.

This paper is divided into sex parts. In the preface, firstly analyzes the research background and research status of the topic; the second chapter introduces the development of the technology of this system; the third chapter according to the software development process, feasibility analysis and requirement analysis of the system; the fourth chapter is the system design, this chapter presents the design of the overall system function module, and the structure of the database design; the fiveth chapter emphatically introduces the realization scheme of each functional module; finally, the sixth chapter introduces the system design of the unit test and performance test, and the analysis of test results.

*Keywords:* Pet Web System; JSP; MySQL database; Spring and Struts2 Framework

1绪论

1.1研究的背景和意义

随着社会的进步,人民生活水平的提高,特别是近些年来,宠物以突飞猛进的速度进入到百姓家里,成为人们生活中重要娱乐内容之一。以前宠物只是贵族人的娱乐项目,迄今,我国已经把宠物作为一种生活的方式已得到普遍认可,伴随着人民精神文明的提高,越来越多的宠物已经和我们成为了好朋友。但是,我们该怎么和他们去相处,该怎么样去呵护他们,毕竟他们和人类还有很大的区别,我们应该给他们用什么样的东西?我们应该给他们吃些什么好呢?大多数人都不知道,他们只是简单的知道应该像照顾孩子一样去照顾他们,但是他们并不会说话,甚至有些人并不会把他们当作孩子来呵护!由此可见宠物商品的相关信息已经成为重要的话题。

宠物作为我们人类的友好的朋友动物是我们人类获得快乐幸福与健康的一个重要来源,而且饲养宠物可以让人们的生活的更丰富多彩,更加幸福充实,同时陪着宠物运动对身体有很大好处能够有效的降低身体里血压和血脂,在当前越发竞争激烈的社会中可以提供良好的精神支持特别当我们遇到挫折时,我们可以通过与宠物的交流,调节我们的心情有助于我们的心理健康管理,缓解我们生活中遇到的各种压力从而提高工作上的效率。另一方面养可爱的宠物可以培养我们后代的责任心和爱心以及社会社交能力。当我们的孩子与狗狗愉快的玩耍时,狗狗可以传递许多正能量。而且最关键的是养宠物可以保护我们的家庭财产安全,可以起到家庭防止被盗窃保护作用使我们整个家庭有一种安全放心感。宠物也可以给我们以及后代带来无限的欢乐乐趣成为幸福和快乐的源泉,并能够帮助人们积极出去促进进行体育锻炼,给我们提供了许多人与他人相互沟通交流的机会。目前养宠物的人数增加的非常迅速,越来越多的宠物信息的网站应运而生。将传统宣传与日益成熟的网络宣传结合在一起,打造一个兼具传统和电子商务特色的宠物销售网站,极具意义。

随着电子商务的发展趋势日趋成熟伴随着社会发展的必然如何面对电子商务方式、以及如何适应数字化生存并积极参与电子商务时代的国际竞争中取得良好的机会。这是关系到每一个公民、每个公司企业和部门及国家发展与生存的重要的战略问题,而且也是我们国家管理部门现在应该规划、并鼓励其大力发展的关键问题。

目前随着我们的科学技术的不断的发展提高,我们的计算机科学水平日益发展成熟,它给我们带来的好处已被我们深刻了解,而且它已经在我们人类生活社会的各个领域范围内发挥着越来越关键的作用。这主要归功与因为计算机商品信息具有着多人工管理所不具备的优势,比如:检索迅速、查找方便、可靠性高、存储量大、保密性良好等。这些优势极大的提高了信息管理的速度,这也正是将来公司企业的科学化、正规化管理,和世界接轨的至关重要的条件。所以,我们急需研制出开发一套宠物商品网站系统对有效管理相关信息是非常必要的。

1.2国内外研究现状

目前社会由于随着人们的生活水平的日益提高改善以及城市化速度的快速向前发展以及城市家庭规模的缩小,宠物慢慢的成为我们生活中的关键部分。根据一些资料显示,而今中国都市拥有宠物数目已经超过1亿只,并且其数量增加速度越来越快,如日中天的宠物市场行业热吸引了越来越多的人的关注!接下来我们将大概的阐述我国目前宠物行业的发展现状。由此带来的问题和建议以及发展前景。

最近这些年计算机和互联网建设获得了高速的发展。在中国,互联网已经是广大人民生活的一部分。现在中国社会提倡互联网加,互联网与传统行业结合,以提供效益和竞争力。使用计算机和互联网对线上销售平台进行管理,它有着很大的价值。同时有着特有的功能比如:检索快速、查看方便快捷、效率高、成本低、存储数据量大、使用寿命长、并且沟通成本低等,这些优点能为商品销售提供极大的便利。而且只要销售网站设计合理,就可以为手机厂商添加新的销售渠道,减少手机产品的库存,利用网络的共享、互动的优点,结合实体销售的优点,借助数据库管理技术实现手机产品网上销售规范化、个性化、人性化。宠物主要是以狗、猫为主。我们以狗为例,现在为什么社会越来越多的人喜欢它而且愿意养它呢?狗起源于狼,目前已经得到了共识,但围绕着具体的发源地和时间则是众说纷纭。到目前为止,最早的狗化石证据是来自于德国14000年前的一个下颌骨化石,另外一个是来源于中东大约12000年前的一个小型犬科动物骨架化石。这不过养宠物对我们人类来说有诸多的好处,比如说以下几个方面

1日常生活中我们可以和狗狗玩耍,增加许多生活中的乐趣

当我们工作或学习一天后,带着浑身疲惫的回到家中,看见绕膝承欢的小狗后,一切烦恼忧愁不愉快都抛到到脑后。目前有很多老人,很多家里只有一个儿女,而且儿女长期在外地工作不在身边,养一个狗或猫,能够给老年人带来很大的精神寄托,减少他们孤独的感觉,重新帮助他们对生活的信心。

宠物也可以帮助小的孩子一颗积极纯洁向上的心,而且根据有关资料显示,狗狗也对治疗儿童痴呆症和自闭症等疾病都有莫大的帮助,每年都有很多的志愿者,带着他们的自己的狗狗到孤儿院或儿童心理疾病治疗中心去帮助那里的孩子,给哪里的孩子带来了许多快乐。甚至连一些患有高血压或者心脏病的病人靠和狗狗和猫咪的交流玩耍可以降低血压和减少心脏病的复发。

2:宠物在救援社会活动中也扮演着至关重要的角色

狗狗在我们社会中扮演者原来越重要的角色,狗因为天生具有良好的嗅觉,它的嗅觉极其发达和灵敏,利用此特性可以发掘猎物,枪支,弹药等。有专门的警犬用于帮助警察破案,而且发挥着至关重要的作用。

这些年来,由于数据仓库技术,网络信息技术,电子商务信息技术的飞速发展,可视化技术已经涉及到人们生活的各个部分,人们提出进一步定义数据可视化概念,特别注重在可视化大型数据库或数据仓库中的可视化。这是在非空间数据领域中应用可视化技术,使人们不需要束缚于通过关系数据表来研究和理解数据,而且在一个比较直观的方式下查询数据和相关结构之间的关系。在当今社会随着互联网的高速普及,电子商务成为热点,由于淘宝和京东的存在,商家传统的销售渠道受到了极大的挑战,利润降低并且销量下降,传统的模式的商家情况不容乐观。而在线网络销售网站比实体店铺具有更高的优势,只需要很少的人工和互联网环境就可以实现在线购物,用户可以直接从网上查看购买所需要的网络产品,同时网络销售网站提供了广泛和快捷的搜索途径,方便用户查找,分类精确,购物良好、风险小,完善了消费体验。所以手机销售网站受到传统模式企业的关注,并且纷纷开通在线手机销售网站。消费者在网站注册后可以浏览网站信息、按需要搜索网络产品、找到想购买的产拼后通过下定单实现用户的在线购买,使交易更加迅速、准确;管理员登录后可以管理用户、信息和定单等实现系统的更新维护。

img

图1-1 到2015年为止中国市场宠物产业规模现状

1.3研究内容和步骤

本文主要分为六个章节,第一部分为前言,主要介绍了课题背景、研究意义、国内外研究现状、课题的研究方法、技术路线以及本文研究的主要内容等。

第二部分为相关技术简介,主要介绍了JSP技术、MyEclipse、Tomcat、以及Oracle数据库等。

第三部分为系统分析,主要介绍了可行性分析、包括技术可行性、经济可行性、操作可行性等。

第四部分为需求分析,主要进行了系统的功能需求分析和非功能需求分析等。

第五部分为系统概要设计,主要介绍了系统设计过程。

第六部分为系统详细设计,对系统详细设计实现进行了介绍。

第七部分为测试,主要对系统功能进行了测试。

2基本技术方案

2.1系统采用的技术

2.1.1JSP技术

Jsp技术sun倡导并联合其它公司创建的动态生成HTML,xml或其他文档的技术规范,JSP是一门技术规范,也是一门脚本语言,在Jsp中我们可以使用特定语言即Java语言编写html,xml,以及其他文档的编写规范。

img

图2.1.1 项目中Jsp部分的代码

(1)Jsp拥有java语言的所有特性,列入面向对象,健壮,安全,可移植,高性能,多线程等。

(2)Jsp运行与jsp的容器之中,比较典型的有tomcat。

(3)在开发项目过程中,jsp文件会转换成servlet文件,servlet会在转换成相应的class文件。

(4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下

(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。

内部对象说明:request 客户端请求,此请求会包含来自GET/POST请求的参数; response 网页传回客户端的响应;pageContext 网页的属性是在这里管理; session 与请求有关的会话; application servlet正在执行的内容;out 用来传送响应的输出流; config 代码片段配置对象;page JSP网页本身; exception 针对错误网页,未捕捉的例外。

2.1.2 JavaScript技术

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在HTML基础上,使用Javascript可以开发交互式Web网页。JavaScript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。在本系统中很多地方使用了JavaScript技术,比如说,检验用户输入数据的有效性,是否重复,是否为空等等。

2.1.3Servlet技术

Servlet是servlet加applet的缩写,applet是运行Java客户端中的小程序,java诞生的时候也就是因为applet而闻名于世,不过现在applet现在很少有人使用了,而servlet在不断的发展和更新之中,现在已经成为很多技术的基础比如spring和strutes2等等。Servlet本质上也就是JAVA类,所以在编写时要尊崇java规则,不过servlet与普通的java类也有所不同,比如说,它没有main方法,他是靠服务器所运行的,它的创建和销毁都是由它自己的容器说产生的。这里说的容器我们这的是类似于tormat服务器。有自己的servlet规则,因此他有一些普通java类所不具有的特性。Servlet与http是紧密联系的,所以使用servlet可以处理所有与HTTP相关的类容,这也是servlet广泛应用的原因之一。

img

图2—1 项目中servlet 的代码

我的项目中几乎每一个JAVA文件都要用到servlet,其中我们使用到的最主要的方法为service(httpServlet Request,httpServletResponse)方法。

img

图2—2 项目中service 的代码

通过request与response的来实现前台与后台之间的数据传输。我们可以在xml文件中配置servlet属性,其中servlet用来注册个servlet,而它有两个主要元素一个是servalet—name和servlet-class,前者用来定义servlet的名称,后者用来确定servlet的完全限定名,还有映射servlet-mapping标签。下面是servlet的主要流程图

img

图2 servlet的主要流程图

Servlet的生命周期主要有service,init,destroy等。

使用Servlet的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。Servlet是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2002年3月成为ASF的顶级项目。它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller〔MVC〕设计模式的应用框架〔Web Framework〕,是MVC经典设计模式中的一个经典产品。它的优点在于:

(1),Servlet基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程;

(2),使用OGNL进行参数传递;

(3),强大的拦截器;

(4),易于测试;

(5),易于扩展的插件机制;

全局结果与声明式异常。

2.2基于B/S的WEB应用体系结构

​ Web,全称为World Wide Web,缩写为WWW。Web有许多译名,诸如环球网、万维网、全球信息网等。简单地说,Web是一种体系结构,通过它可以访问分布于Internet主机上的超文本页面。这一说法包含以下两层含义:第一, Web是Internet提供的一种服务。 第二,Web是存储在全世界Internet计算机中、数量巨大的文档的集合,或者可以说,Web是世界上最大的电子信息仓库[7] [8]。

Web上的海量信息是由彼此关联的文档组成的,这些文档称为主页或页面,它是一种超文本信息,使其联接在一起的是超链接。

Web的内容保存在Web站点中,用户可以通过浏览器访问Web站点。因此,Web是一种典型的基于B/S的体系结构。

工作过程:如下图2-1所示描述了Web的工作原理。

img

图2-1 Web的工作原理

客户端浏览器的主要作用是向Web服务器发出请求,当接到Web服务器传送回来的数据以后,对这些数据进行解释和显示[14]。浏览器以URL为统一的定位格式,使用超文本传输协议HTTP接收采用HTML语言编写的页面,其基本结构如下图2-2所示:

img

图2-2 使用超文本传输协议HTTP接收采用HTML语言编写的过程

用户通过键盘或鼠标发出请求,该请求由浏览器中的控制器接收、检查并分析用户输入,根据用户请求执行相应动作。如果用户请求可以在本机解决,例如浏览已存在本机的页面,则输出到HTTP解释器或其他解释器,解释后通过驱动程序送入显示器显示。如果用户请求不能在本机解决,则通过HTTP客户机或其他客户机及网络界面与远程服务器通信,由远程服务器解决用户请求,将用户需要的HTML文档送回,然后通过HTTP解释器或其他解释器,解释后通过驱动程序送入显示器显示。

目前两大主流浏览器是Netscape公司的Netscape Communication(简称NC)和Microsoft公司的Microsoft Internet Explorer(简称IE)。在使用这两种浏览器运行HTML文档时,只需在地址栏中输人文件的URL即可。NC和IE这两大浏览器可执行的程序并不完全相同

2.3MyEclipse简介

MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括完备的编码、调试、测试和发布功能,支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate[1]。

在结构上,MyEclipse的特征可以被分为7类:

\1. J2EE模型

\2. WEB开发工具

\3. EJB开发工具

\4. 应用程序服务器的连接器

\5. J2EE项目部署服务

\6. 数据库服务

\7. MyEclipse整合帮助

MyEclipse 是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。根据官方最新消息,MyEclipse 2013已经正式发布!MyEclipse 2013支持HTML5、JQuery和主流的Javascript 库。随着MyEclipse 2013支持Html5,你可以添加音频、视频和API元素到你的项目,从而为移动设备创建复杂的Web应用程序。你甚至还可以通过HTML5 可视化设计器设计令人难以置信的用户界面。同时,随着MyEclipse 2013支持JQuery,你可以通过插件提升性能,并添加动画效果到设计中。myeclipse 10.0系列 主要 有以下 改进:
首先 在eclipse 3.7.2(Indigo) 基础上构建
最大的特色是 :
完全支持 Java EE 6
With MyEclipse 10, you can now take advantage of Java EE 6features, such as:
· Servlet 3.0
· JSF 2.0
· JPA 2.0
· EJB 3.1
· JAX-RS 1.1
其他的改进:
\1. 支持maven3.0
\2. 支持 64-bit Windows support
\3. WebSphere Portal Server 7 and WebSphere 8
\4. JRebel for MyEclipse
\5. EJB Deployment Descriptor Editor
\6. Extended DB2 Support
\7. Extended Application Client Project Support
\8. Instant Deployment (Experimental)
\9. EJB Deploy
10.J2EE Connector Architecture (JCA)

2.4Tomcat简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为8.0.0-RC1 (alpha) Released。

Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。

2.5Struts 2框架

Struts 2是由出色稳定的struts1和webwork框架整合而来,吸取了两大框架的优点,提高了开发效率和规范性,减少了非常多的冗余代码,更好的实现了mvc架构,层与层之间的关系更加明确直接,解除了与servlet的强耦合性,无需启动服务器便可以进行单元测试,功能测试,极大的节约了我们的时间。是在 struts 1和WebWork的技术基础上进行了合并的全新的Sruts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

Struts2的意义

1.自动封装表单提交数据:属性驱动,模型驱动。提高了开发效率和简洁性。

2.便捷的实现上传文件:fileUpload.

3.使网站通用于国内化:国际化

4.通过配置完成表单验证:校验器

5.强大的标签库:struts2标签库,OGNl标签库

更科学的管理:

使用xml文件管理程序文件对应的关系,使我们的维护更加的简洁更加的安全和更加的迅速。

更安全的操作:

1.安全的线程机制:每个action都是独立的,在我们使用JSP和servlet开发的时候,由于servlet是单列模式,导致线程是不安全的,在编程的时候应多加注意,才能避免线程混乱的情况。而strut2的action对于每一个请求就会生成对应的一个实例,所以线程是安全的,简化了开发,安全性也提高了不少。

2.防止数据重复提交:token令牌机制,该机制可以有效的防止用户因网速或者电脑卡等因素导致的统一表单数据被重复提交了两次甚至更多遍的问题,比如说注册界面,用户在填写完信息后点击提交按钮,由于网络阻塞而导致的电脑卡顿现象,用户不耐烦有反复的点击提交按钮,导致重复提交的现象。

3.异常处理机制:通过配置来完成,更便于管理

先进的编程思路

面向切面编程:拦截器(相当于过滤器的一种,不编写重复的代码,减少代码的冗余

使用filter作为控制器的MVC应用实战

流程概念分析

img

图2-3 servlet的主要流程图

img

图2-4 struts2的主要流程图

可以看出在struts2中用filter代替了servlet的作用,这是struts2的核心思想

本项目中到struts2的核心程序段为:

在web.xml中配置filter

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

Struts.xml的代码

!–该标签用于Struts默认行为标签 -->

<constant name=“struts.devMode” value=“true” />

<constant name=“struts.action.extension” value=“do, action”/>

<constant name=“struts.multipart.saveDir” value=“d:/test”>

<constant name=“struts.configuration.xml.reload” value=“true”/>

<package name=“admin” extends=“struts-default” namespace="/admin">

<action name=“usersmanager” class=“com.daowen.action.UsersAction”>

图2-4-1 struts2的核心程序段

对于Struts1框架而言,由于与JSP/Servlet耦合非常紧密,因而导致了一些严重的问题。首先,Struts1支持的表现层技术单一。由于Struts1出现的年代比较早,那个时候没有FreeMarker、Velocity等技术,因此它不可能与这些视图层的模版技术进行整合。其次,Struts1与Servlet API的严重耦合,使应用难于测试。最后,Struts1代码严重依赖于Struts1 API,属于侵入性框架。

img

图2-5 Http请求流转流程图

从目前的技术层面上看,出现了许多与Struts1竞争的视图层框架,比如JSF、Tapestry和SpringMVC等。这些框架由于出现的年代比较近,应用了最新的设计理念,同时也从Struts1中吸取了经验,克服了很多不足。这些框架的出现也促进了Struts的发展。目前,Struts已经分化成了两个框架:第一个是在传统的Struts1的基础上,融合了另外的一个优秀的Web框架WebWork的Struts2。Struts2虽然是在Struts1的基础上发展起来的,但是实质上是以WebWork为核心的。Struts2为传统的Struts1注入了WebWork的先进的设计理念,统一了Struts1和WebWork两个框架。Struts1分化出来的另外一个框架是Shale。这个框架远远超出了Struts1原有的设计思想,与原有的Struts1关联很少,使用了全新的设计思想。Shale更像一个新的框架而不是Struts1的升级。

2.6 Spring框架

Spring就是为了解决企业的复杂性而创建的,它的特性之一就是基于分层架构,分成架构可以让我们决定使用哪个组件而开发的,同时也为我们J2EE的开发创建了条件。Spring是一个轻量级级控制反转(ioc)和面向切面(aop)的容器框架,他主要是为了解决企业应用开发的复杂性而诞生的:它的目的就是为了解决企业开发的复杂性,它的主要功能为使用基本的JAVABEAN来代替EJB,并且他提供了更多的企业级应用功能,它的适用范围是JAVA的任何应用,spring不简单单的是服务器端的开发,从简单性,可测试性,低耦合性的角度而言,任何的java应用都可以从spring中受益,sping的核心是面向切面和控制反转,spring存在有它得天都后的优势:

1:它定位的领域是许多framework而没有的,spring致力于一个统一的方法来管理你的业务对象

2:spring是全面的和模块化的,sping是分层结构的,这意味着你可以使用孤立与它的任何一个成分,它的框架依然是内在的和稳定的。

3:它的设计是从底部帮助你易于测试的代码。Spring是测试驱动的理想的framework。

3.spring是潜在的一站式解决服务,定位与典型应用的大部分基础结构,当然它也设计到了其他framework所考虑到的内容。

Spring有以下优点:

1:低侵入式设计,代码污染率极低

2:write once,Run anywhere

3:DI有效的降低了耦合度

4:aop提供了通用任务的管理

5:ORM和DAO简化了数据库的访问

6:高度的开放性,并不强制,它的这种优点贯穿与表现层,业务层,逻辑层,在实际的开发过程中,并不强制依赖spring。作为开发者你可选择使用spring一部分框架或者全部框架来进行你的全部开发。

正因为SPRING有上述优点和好处,可以给我们带来很多的好处,例如:可以有效的解决组织中间层对象,还可以减少许多对单列模式的使用。可以使用统一的配置文件,易于单元测试以及促进良好的编程习惯,减少编程代价。

spring特点:

1.方便解耦,简化开发。

2.Aop编程的支持,通过aop的支持。我们很容易使用面向切面的过程。

3.声明式事务支持,通过spring框架中我们可以从单调烦闷的事务中解救出来,痛过生命是方式灵活的进行事务管理,从而提高开发效率和开发的质量。

4.方便程序测试,可以进行非依赖容器的方法进行所有的测试工作,再spring框架中车上不再时昂贵的操作,而是一个随手可作的事情。

5.方便集成各种优秀的框架,在spring中不排除各种框架的使用,而是降低各种框架的使用难度。

Spring的核心模块:

1.核心容器(spring core)

2.应用上下文(spring context)

3.Aop模块(spring aop)

4.Jdbc和DAO模块(spring DAo)

5.对象实体映射(spring orm)

6.Web模块(spring web)

7.Mvc模块(spring web mvc)

img

​ 图2-6 Mvc模块核心图

1.软件应用分层架构

标准三层架构:

1:数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.

2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。具体的讲主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。

3:表示层:主要表示WEB方式,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。

4.IOC(inversion of control) 是spring的核心,贯始至终。所谓IOC

,对于spring框架来说,就是由spring来负责生命周期和对象间的关系。

传统开发模式:对象之间相互依赖。

IOC开发模式:ioc容器安排对象之间的依赖。

Ioc的另外的名字叫做依赖注入(DepenDency Injection),所谓的依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。所以,依赖注入和控制反转(IOC)是从不同的角度的描述的同一件事情。就是只通过引入ioc容器,利用依赖关系注入的方式,实现对象之间的解耦。

Ioc在对象过程中不会对业务对象构成很强的侵入性,使用ioc之后,对象之间具有更好的可实现性,可重用性和可扩展性:

降低对象之间的耦合度

提高开发效率和产品质量

统一标准,提高产品的复用性

模块具有热插拔特性。

5.aop专门用于处理系统中分布与各个模块中交叉关注点的问题,在JAVAEE的应用中,常常通过AOp来处理一些具有横切性质的系统级服务,如事务管理,安全检查,缓存,对象池管理等,aop已经成为一种非常常用的解决方案。

img

图2-7 普通处理方法

img

图2-8 spring处理方法

6.spring核心开发包

Spring core(包含spring基本工具类,其它组件都会使用到这个包里的类,是其它组件的核心)

Java bean(是所有都需要用到的,它包含了访问配置文件,创建和管理bean,以及控制反转和依赖注入操作)

Spring aop(包含了使用aop特性时所使用到的类)

Spring context(为spring的核心提供了大量的扩展,能够找到使用application context的全部类)。

优点:

​ 1:开发人员可以只关注整个结构中的其中某一层;

​ 2:可以很容易的用新的实现来替换原有层次的实现;

​ 3:可以降低层与层之间的依赖;

​ 4:有利于标准化;

​ 5:利于各层逻辑的复用。

​ 6:结构更加的明确

​ 7:在后期维护的时候,极大地降低了维护成本和维护时间

缺点:

​ 1:降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

​ 2:有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

​ 3:增加了开发成本。

2 Spring相关概念

1:轻量级的容器:

spring容器帮我们管理业务逻辑层,里边有很多业务逻辑对象,有对象就有对象的生命周期的管理(创建,销毁).

轻量级:容器给予的业务逻辑对象多少种服务?spring给用户提供的服务完全由用户自己决定,spring想用什么服务自己开启使用。但是重量级的都是只要你用就把所有的服务都给你,不能自己定制。

spring容器从来不能独立运行,一定借助于其他容器启动,或者借助web容器启动,或者ejb容器启动。

特点:

应用模块之间耦合度小,组件都是可重用的,都是各自打包的

2:why spring?

1)动态解藕,方便开发,面向接口设计

通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用

2)方便程序的测试TDD(Test-Driven Development)

可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。

3)降低Java EE API的使用难度

Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个简单的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。

4)方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。

5)AOP编程的支持

Aop(aspect-oriented programming )面向方面的程序设计,是一种比较新颖的编程思想,aop将程序分为两个部分,核心业务逻辑以及横向的业务逻辑。在spring中提供了丰富的业务支持,允许通过分离业务的业务逻辑和系统级的服务,进行类聚性的开发Aop是对oop的一种延续,也是对oop的一种补充,oop是一种静态的过程,而aop是一种动态的过程,aop的主要功能为系统级别的功能,列入:系统日志,性能统计,安全控制,事务处理,异常处理等等这些主要功能,将实现上述功能的代码从业务逻辑层中划分出来,将它们独立到非业务指导性的代码当中,处理这些代码的时候不影响其它代码的处理。使用切面代码我们可以将面向切面的代码植入程序,可以有效防止代码的混乱。Aop专门用于处理系统中分布于各个模块中交叉关注点的问题,在JAVAEE应用中,常常通过aop来处理一些具有横切性质的系统级服务,如事务管理,安全检查,缓存,对象池管理等等,aop已经成为一种非常常用的解决方案。

Aop代理其实是由aop动态生成的一个对象,该对象可作为目标对象使用,aop代理所包含的方法与目标对象方法如下图所示

img

图2-10 aop代理所包含的方法与目标对象方法

6)声明式事务的支持

在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

7)对异常的处理方式,所有的都转换成Unchecked的。

8)它不是一个一体化的解决方案。

9)良好的设计,容易扩展,很多可重用的组件

3.Spring核心组件(我们主要学习的是IOC和AOP模块)

(1)、Spring Core(IOC) 核心容器,提供组件的创建、装备、销毁

(2)、Spring Context Spring上下文,是一个接口ApplicationContext(继承自BeanFactory接口)的实现

(3)、Spring Web容器,web应用上下文,是webApplicationContext接口的实现

(4)、Spring DAO容器,是SpringDAO 支持模块,是为了简化DAO的使用

(5)、Spring ORM

(6)、Spring AOP ,对AOP编程支持的模块 [面向切面编程,扩展功能不是修改源代码实现]

(7)、Spring MVC,类似于Spring表示层的一个框架

4.spring ioc(must):

IOC:Inversion of Control 控制反转

​ 一种说法:对象之间的依赖关系,由容器在运行时依据配置文件动态的建立

​ 另一种说法:对象的控制器转移了,转到外部容器了,避免了代码的纠缠,代码更容易被维护,模板之间的耦合性降低,容易测试

​ 比如:有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象,使用对象调用方法,

​ 创建类对象的过程,需要new出来对象。

​ ioc是把对象的创建不是通过new方式实现,而是交给spring配置创建类对象

IoC 控制反转意味着将你设计好的类交给容器去控制,而不是在类的内部进行控制,即控制权由应用代码中转到了外部容器

IoC:包括两部分内容

DI:Dependency Injection依赖注入,组件不做定位查询,只提供相应方法,由容器创建对象,并调用相应方法设置所需对象需要的组件

(不要求)DL:Dependency Loopup依赖查找,容器创建对象并提供回调接口和上下文环境给组件,需要时通过接口从容器中查找对象

​ 依赖查找,现在使用不太多。(EJB使用的更多,将对象创建好后,放到容器中。)

​ IOC解决:对象谁来创建的问题

​ DI解决:对象间的关系如何建立的问题。

org.springframework.beans及org.springframework.context包是IOC容器的基础。

3.系统需求分析

3.1功能需求分析

当我们对已有系统进行分析时,通过分析系统的功能和实现去确定系统的即将要达成的目的。因此,我们要收集足够的信息去验证我们的分析结果,在该次毕设中,我们获取的信息大多都是从网上,书库中了解到的。在任何的实践中获取的信息其实才是最可靠,最具有说服力的信息,所以,我们找到其他的宠物用品店,然后注册成为会员来获得有用信息。

从用户角度来看:

用户同时使用网站的注册登录功能,进入系统后可以获得一部分功能。在处理消息时,可以进行对宠物资料的浏览,进行购买宠物用品然后对订单进行单个购买或者取消,同时也可以清空购物车中的所有订单,或者全部进行结账等功能。

2.从网站的角度看:

(1)网站应该包含宠物搜索功能。

(2)订单处理功能,确认订单方式:

a). 电话通知方式

b). E-mail方式

(3)管理员管理:

其任务是查看用户订单,查看用户信息,并在根据查看了用户的信息和用户订单之后,将商品的发送到购买者的身边。

(4)宠物浏览

a). 宠物名 b).宠物类型

c). 价格 d). 订购号

通过分析,系统主要分为前台和后台两大模块,前台主要由用户体验使用,实现了用户登录、注册、查找商品、商品类别等功能导航;后台主要由系统管理员操作使用,用来维护系统,管理员主要实现了订单管理、商品管理、公告管理、会员管理、用户管理、个人信息维护等主要功能。

img

图4-1 功能需求分析图

3.2系统设计规则

无论哪个网站都要有它自己的设计规则。该系统也一样,它的主要设计规则有:

简单性:在实现系统的功能的同时,尽量让系统操作简单易懂,这对于一个系统来说是非常重要的。

针对性:该系统设计是宠物商店网站系统及后台管理的定向开发设计,所以具有专业突出和很强的针对性。

实用性:系统接受来自系统管理员的请求,管理员可以对商品信息以及用户信息进行增、删、改、查等操作,具有良好的实用性。

3.3系统的可行性分析

3.3.1技术可行性

(1)硬件可行性分析

系统的硬件要求方面不存在特殊的要求,只需要在普通的硬件配置就能够轻松的实现,只是需要确保系统的正常工作即可,以及拥有较高的效率。如果有特别低的硬件,它可以导致系统的低性能以及效率低,从而导致整个系统的运行不顺畅。以目前普遍的个人计算机的配置而言,这是十分容易实现的 。因此,本系统的开发在硬件方面是可行的。

(2)软件可行性分析

Java语言提供了一个共同的机制类似的借口动态模型,设计更集中。另外,在使用Java语言可以很容易实现模块化和存储信息。此外,代码复用,也可以很好的体现。因此,考虑到系统的实际情况,选择JAVA作为本系统开发语言的时候。通过上述分析,该系统的设计实现在软件方面是可行的。

3.3.2经济可行性

如今是信息化时代,信息化管理可以使宠物商品管理工作更加系统化、快速化、全面化。这样可以为企业带来较高的工作效益和经济效益,在提高工作效率的基础上,可以考虑减少工作人员的数量,本系统对计算机配置的要求不高,企业机房更换下来的低配置电脑都可以完全满足需要,再者,企业在管理工作上的高效率和便捷性远远超过了开发本系统的成本,所以在经济上具有完全的可行性。

3.3.3操作可行性

系统的登录界面简单和友好,采用常见的界面窗口的登录界面,而系统的开发则采用的是较为常用的JSP技术。这些策使得用户不需要很长的时间就能够快速熟悉系统,并掌握系统的操作方法。此外,为了方便系统管理维护人员,用户登录系统后会给出了一些提示,使得整个系统更加人性化,用户操作更简单方便。

3.3.4 技术可行性分析

本次宠物用品店系统的开发采用了java,jsp作为语言,采用了servlet,javaBeans技术,sqlserver2008作为数据库,Web服务器的选择是tomcat7.0。这次的开发对于一个即将毕业的我来说是一项复杂的系统工程。但是上述所用到的语言,我们在大学期间都有所接触过,在杰普基地实习的时候也都有所接触,所以很容易着手进行开发,但是为了保证系统开发的成功,我们只能采用工程化的系统开发方法,并且可以适当的研究有些符合标准的开发方法,并研究出一些符合工程化标准的开发方法。新研究出来的开发方法是为了加快系统开发的速度,在保证质量的同时尽可能的去降低开发的成本。对于任何一个物件来说,在质量有所保证的情况下,所消耗的资源越少越好。

3.3.5 运行可行性分析

现在的生活中计算机已经普遍到每个家庭的生活当中,自然也就越来越多的人掌握了使用计算机的基本使用方法和技能。因此,在这个信息时代中,必定会有越来越多的人利用网络足不出户就可以享受购物的便捷性,让人们可以更快的了解到自己的需求。

3.3.6 经济可行性分析

宠物食品店系统给人们带来了方便,成为一种全新的商务模式。因此,不用出门就可以在家购买宠物食品的新时尚已经到来,构建一个宠物食品店系统在经济上是完全可行的。就本系统而言,随着宽带网络进入校园,为宠物主在网络上进行购物提供有利的条件。商家可以从中获得利润,两全其美。通过以上的分析,开发宠物商品店系统是完全可行的。

3.4运行环境

本系统是一个web版的应用程序,需要在服务器上部署中间件Tomcat、Oracle数据库,其他的客户端通过网络进行访问该服务器即可。

(1)开发硬件平台:

CPU:酷睿双核 3.2GHZ

内存:4G以上

硬盘:320GB

(2)服务器端硬件平台:

Web服务器参考配置:Intel Xeon Quad Core E5530 80W 2.40GHz/5.8GT/8MB Cache, 2x2GB DDR3-1066MHz, 2.5in HS 146GB SAS,HS 675W PSU, ServeRAID MR10i(RAID 5), 2*Giga Ethernet,Light Path, CD-RW/DVD Combo, 1U,3 Years Onsite Next Business Day. 146GB 10K 6Gbps SAS 2.5" SFF Slim-HS HDD x3550M2/x3650M2/HS22

数据库服务器参考配置:Intel Xeon Quad Core E5504 80W 2.00GHz/4.8GT/4MB Cache, 2x2GB DDR3-800MHz, 2.5in HS 146GB SAS, 670W PSU, ServeRAID BR10i(RAID 0,1), 2*Giga Ethernet, DVD ROM,5U,3 Years Onsite Next Business Day. 146GB 10K 6Gbps SAS 2.5" SFF Slim-HS HDD x3550M2/x3650M2/HS22

(3) 开发软件平台:

操作系统:Windows7以上均可

数据库:mysql

4.宠物网站系统概要设计

4.1系统功能结构图

系统主要分为前台和后台两大模块,前台主要由用户体验使用,实现了用户登录、注册、查找商品、商品类别等功能导航;后台主要由系统管理员操作使用,用来维护系统,管理员主要实现了订单管理、商品管理、公告管理、会员管理、用户管理、个人信息维护等主要功能。系统功能图如下图5-1所示。

img

图4-1系统功能结构图

4.2系统交互图

系统架构类的工作流程:

1、当用户在jsp页面输入了相应的信息后,对象会根据用户的请求向请求业务处理类处理数据。

2、当业务处理类收到相应的请求后,会向相应的权限管理类对象发送验证请求。

3、通过权限管理类验证过后会把相应的验证权限结果返回给相应的业务代理类。

4、业务对象会根据接受到不同的验证权限结果进行两部不同的处理操作:若权限不符,这返回到相应的JSP用户界面,若权限相符,则进行到相应的业务逻辑类。

5、业务逻辑类的业务对象进行相应的业务处理。在业务处理中的数据持久化操作,靠访问数据库访问类进行操作,可以进行读取,写入等操作,期间若发生任何的异常,交给异常处理类来完成。

6、业务代理对象类最后将最终结果返回给jsp用户界面。

系统交互图如下图5-2所示:

img

图4-2 系统交互图

4.3数据库设计

在概念设计中,通常用下面的四种方法:

自顶向下:第一,把全局概念结构的框架定义好,之后再慢慢细化;自底向上:第一,把各局部应用的概念结构定义好,之后把他们再集合起来,最后得到全局的概念结构;逐步扩张: 首先把概念结构里最核心的地方定义好,之后再向外面扩充,最后直到总体概念结构;混合策略: 把自顶向下和自底向上两种相结合,设计一个全局概念,使用自顶向下的策略。结构的框架, 设计的各局部概念结构,以它为骨架集成,使用自底向上的策略。

在物理结构设计阶段,首先应该分两步走:

一是,在关系数据库中,确定数据库的物理结构,主要是指存取方法和存储结构。时间和空间效率是对物理结构的评价。.

二是要选取存取方法,并且是正确的关系模式,存取索引方法、聚簇存取、HASH存取方法等都是常用的方法。数据库的概念设计整体属性E-R图如下图5-3所示:

img

图4-3宠物商品网站系统E-R模型图

3、数据库设计

宠物商店网站系统ER模型中的实体转换为物理表,得到物理表结构部分如下:

1、宠物信息表book:表中显示了关于宠物的所有详细信息,对于字段的属性也有详细的描述。可以很明显的看出表中的内容显示的是哪方面的信息。

img

图4-1 宠物信息表booK

2、管理员表admin:表中显示了管理员的属性信息。表中的字段就是管理员所拥有的详细信息。

img

图4-2 管理员表admin

3、宠物类型表booktypes:

img

图4-4 宠物类型表types

4、用户注册表users

img

图4-5 用户注册表users

5、定单详细信息表orderbook

img

图4-6 订单详情信息表

6、定单表num

img

图4-7 订单表

4.4系统概要设计

4.4.1系统的前台

系统的界面按照常规的WEB界面进行设计,设计的原则是界面友好,易于操作,容易上手,尽可能的贴切用户实际。系统主页界面如下图5-4所示。

img图a 狗狗商城

imgimg

​ 图b 热卖商品推荐 图c 精品推荐

图4-4 系统主界面图

所有的用户都可以进入该首页,想要使用购买商品等功能,需要进行登录操作,登录时需要输入用户名、密码进行验证,通过之后才能使用这些功能。系统登录功能界面如图4-5所示:

img

图4-5 系统登录界面图

img

图4-6 系统注册界面图

img

图4-7 购买界面图

img

图4-8 订单信息图

4.4.2系统的后台

img

图4-9 系统后台登录界面图

img

图4-10 会员管理界面图

img

图4-11 网站后台管理菜单

img

图4-12 商品管理界面图

5.系统的详细设计与功能实现

5.1应用层配置

系统采用目前流行的Struts2框架进行开发。先来看看Struts2框架是如何配置到应用程序中的。

在WEB-INF/web.xml文件的配置代码如下:

< <bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest"

name=“myRequestParser” class="com.daowen.util.RequestParseWrapper"

scope=“default” optional=“true” />

<package name=“admin” extends=“struts-default” namespace="/admin">

<action name=“usersmanager” class=“com.daowen.action.UsersAction”>

<action name=“friendlinkmanager” class=“com.daowen.action.FriendlinkAction”>

<action name=“jiaodiantumanager” class=“com.daowen.action.JiaodiantuAction”>

​ <action name=“sysconfigmanager” class=“com.daowen.action.SysconfigAction”>

5.2登录功能的实现

img

图5-1 登录信息

*public* *class* LoginAction *extends* Action {

*public* ActionForward execute(ActionMapping mapping, ActionForm form,

​ HttpServletRequest request, HttpServletResponse response) {

*try* {

​ response.setContentType(“application/x-www-form-urlencoded; charset=UTF-8”);

​ List userlist=****null****;

​ Session s=HibernateSessionFactory.getSession();

​ Transaction t=s.beginTransaction();

​ String username=request.getParameter(“username”);

​ String password=request.getParameter(“password”);

​ String action=request.getParameter(“action”);

​ System.out.println(“action=”+action+“username=”+username+“password=”+password);

​ SQLQuery query=s.createSQLQuery(“select * from [users] where username=’”+username+"’");

​ userlist=query.list();

​ String s1="";

​ ****if****(!userlist.isEmpty())

​ s1=“res=true”;

*else*

​ s1=“res=false”;

​ System.out.println(“json=”+s1);

​ response.getWriter().write(s1);

​ }

5.3注册功能的实现

img

图5-3 注册功能

<script type="text/javascript"  src="<%=SystemParam.getSiteRoot() %>/webui/jquery/jquery.metadata.js" ></script><script type="text/javascript"  src="<%=SystemParam.getSiteRoot() %>/webui/jquery/messages_cn.js" ></script>	
    <script src="<%=SystemParam.getSiteRoot() %>/webui/combo/combo.js" type="text/javascript"></script> <script type="text/javascript">

​ $(****function****() {

​ $(".ui-record-table").recordTable();

​ $("#btnDelete").click(****function****(){

​ ****if****($(".check:checked").length<1)

​ {

​ $.dialog.alert(“请选择需要删除的记录”);

​ ****return****;

​ }

5.6会员管理模块的实现

img

图5-6 会员管理模块

会员信息 **/admin/css/common.css"**

​ rel=“stylesheet” type=“text/css” />

**/admin/css/web2table.css"**

​ rel=“stylesheet” type=“text/css” />

​ href="<%=SystemParam.getSiteRoot()%>/webui/artDialog/skins/default.css"

​ rel=“stylesheet” type=“text/css” />

6.测试与性能分析

6.1系统测试目的与意义

(1)测试的重要性

不管是什么技术,以及如何使用的方法,但该软件,该软件将仍然是放错了地方。减少引入的错误,您可以使用新的语言,先进的开发方法,改进开发过程,但这是不可能完全消除软件错误,由于需要进行测试,以找出引入的错误,你必须通过测试误差估计密度在软件中。对于可行性研究而言,其任务就是用最低的代价在最短的时间内做出一个判断当前系统实现后的价值。为了避免在花费了大量的资源之后才发现该功能的实现完成不了或者完成了之后也没有多少实用性的价值。从而造成更多的浪费。

所有工程学科的基本单元是一个测试,这是软件发展的一个非常重要的组成部分。测试陪同,从编程本身的日子。统计显示,在一个典型的软件开发项目,往往占总工作量的测试软件的软件开发工作量的40%以上。但成本为这个测试是30%至50%的软件开发总成本的。如果考虑把维护阶段包含在内,在讨论整个软件的生存期时,有所降低的也许是测试的成本比例,但维护工作,实际上是相当于第二次的开发,甚至是多次开发,许多测试工作也一定包含在其中。这次的开发对于一个即将毕业的我来说是一项复杂的系统工程。但是上述所用到的语言,我们在大学期间都有所接触过,在杰普基地实习的时候也都有所接触,所以很容易着手进行开发,但是为了保证系统开发的成功,我们只能采用工程化的系统开发方法,并且可以适当的研究有些符合标准的开发方法,并研究出一些符合工程化标准的开发方法。新研究出来的开发方法是为了加快系统开发的速度,在保证质量的同时尽可能的去降低开发的成本。对于任何一个物件来说,在质量有所保证的情况下,所消耗的资源越少越好。

在实践中,因为还有一个感知测试这是不正确的和错误的态度,难以在软件测试往往过高或敷衍,现在的生活中计算机已经普遍到每个家庭的生活当中,自然也就越来越多的人掌握了使用计算机的基本使用方法和技能。因此,在这个信息时代中,必定会有越来越多的人利用网络足不出户就可以享受购物的便捷性,让人们可以更快的了解到自己的需求。

包括:

假设测试,也很难带来成就试验人员从某种意义上说,作为设计和编码一样容易取得进展:

那个戒指是不是建立在自然破裂,找到软件错误作为测试的目标,他们负责的负面测试工作中发现错位;

测试可以不感兴趣,沉闷;

测试工作是困难的,艰苦的工作;

准备他们的信心盲目的过程,发现错误后,所表达的意见对他们的发展能力的担忧。

软件测试,这种观点是不赚钱,提高软件产品的质量,必须澄清认识,态度。

(2)测试的目的

如果你说,要找出尽可能测试的目的是错误的,那么测试应直接向软件的一部分,是更复杂或更错误之前。

该过程发现错误和软件测试的执行情况;

该测试是为了证明其中的一个节目,而不是没有错误的认证程序;

这就是它没有被发现的错误,这是一个很好的例子

发现一个测试没有找到一个成功的测试。

为了测试错误,因为这个视图的中心可以提醒人们,而不是正常运作的演示软件。但可能会非常棘手,真的只是给这纯粹是为软件测试是为了发现错误,找不到错误的测试,其实不是这样的。

首先,测试,而不是目的只是为了找到错误。但是,因误差分析和分配可以帮助项目经理更好的软件过程发现现在是在一个残疾的存在使用,以方便日后的改进。在同一时间,根据该分析还可以帮助我们设计的目标检测方法,以提高测试的效率。其次,没有在测试中发现的错误也是有价值的评估试验的质量的方式来完成测试。

6.2测试环境

​ WIN7 64位,FireFox,TOMCAT6,JDK1.6

6.3测试过程

在测试之初,由于将数据库中的数据是随便输入,没有实用性,为了使系统更加完善,在系统测试的过程中,本系统将一开始编程随便输入的数据全部清理后,输入了一些有效的测试数据,这样可以更真实的反映系统的功能实现情况。

测试的每个步骤在逻辑上与前一个步骤都有关联。准确来说是上一个步骤的继续。每个模块写的是不同的功能,多个模块,就相对于多个功能组成了一个系统,而多个小的系统组成了一个大型的系统,所以,大型的软件系统的测试是分布进行的,就类似如下所述:

(1)模块测试:该测试中发现的一般是编码和详细设计的错误。

(2)系统测试:该测试中发现的一般是软件设计中的错误,也可能发现需求说明中的错误。

(3)验收测试:该测试中发现的一般是系统需求说明书中的错误。

这样不断发现问题,经过反复的测试、调试,把问题一个个的解决,最终系统可以正常运行。

6.4测试的主要内容及结果

(1)单元测试

单元测试是检查每个软件中单位最小的,通过检测去发现原来定义该模块的功能说明和本身所需要实现的实际的功能是不符合要求的状况,或者检测出模块的错误。

身份认证时候要保证在以下输入情况时候系统能够健康运行:

① 输入的用户ID:不存在

② 输入的用户ID:重复

③ 输入的用户ID:输入信息为空。

④ 输入的用户ID:与密码不相符合。

⑤ 输入的用户的信息 格式不正确

(2)集成测试

(3)确认测试

(4)系统测试

测试结果:注册测试:输入的错误信息符合要求如图

img

图7-1 注册失败情况

img

图7-2 注册成功情况

img

图7-2 登录失败情况

img

模块名称测试用例预期结果实际结果是否通过
登录模块用户名:null 密码:null弹出错误提示,请输入用户名登录失败,提示请输入用户名通过
登录模块用户名:m1 密码:null弹出错误提示,请输入密码失败,提示输入密码通过
登录模块用户名:m1 密码:1弹出错误提示,用户名或者密码错误登录失败,提示用户名或者密码错误通过
商品管理模块添加商品信息后提交添加成功录入成功通过
用户密码修改随意一个用户登录,修改密码修改成功,退出后用新密码登录,并登录成功修改成功通过

总结与展望

本文主要阐述了如何利用JSP技术的Struts2框架开发一个性能优化、可扩展性强和安全可靠的宠物商店管理系统。系统主要分为前台和后台两大模块,前台主要实现了用户登录、注册、查找商品、商品类别等功能导航;后台主要实现了订单管理、商品管理、公告管理、会员管理、用户管理、个人信息维护等主要功能。然后根据这些功能进行分析设计,对所有到的技术Struts2框架就行简要的介绍。接着进行需求分析的描述。接着是概要设计和详细设计。描述这个系统的部分功能的实现方案及过程。

本设计所实现的是一个宠物商品系统,主要介绍了JSP,Struts2技术。系统按照总体设计、数据库设计、各个模块设计和代码分析,宠物商品系统的基本功能已得到实现。由于时间及本人所学有限,该系统还有许多地方需要改进,并且还有许多自己未起到的功能,本人会在以后的学习过程中进一步加强和完善。

本系统具有以下优点:

1、该系统可以运行在多个操作系统平台(Windows 7和Windows 8),数据库采用mysql,开发语言选择Java,可移植性好。

2、系统的用户权限进行划分,分为会员用户和管理员,不同的用户具有不同的操作权限。这不仅方便了用户,也保证了系统的安全性。

3、该系统界面简单,操作方便,容易使用。

但也存在以下缺点:

1、界面跳转复杂,接口不能被刷新,可以改进。

2、功能比较简单,没有进一步提高一些选修的程序等,不能更好的为用户提供服务。

3、数据库设计有冗余,需要进一步优化。

参考文献

[1] 刘志诚.JSP程序设计实例教程.北京:人民邮电出版社,2009.5

[2 ]孙卫琴.精通Struts:基于MVC的JavaWeb设计与开发.北京:电子工业出版社,2004.11

[3] 李刚.整合Struts+hibernate+Spring应用开发详解.北京:清华大学出版.

[4] 张桂元、贾燕枫.Struts开发入门与项目实践.北京:人民邮电出版社,2005.12

[5]孙卫琴.Tomcat与Java Web开发技术详解.北京:电子工业出版社,2003.11

[6] 吴其庆.Java模块设计实例经典.北京:冶金工业出版社2004.6

[7] 刘斌.《精通Java Web整合开发》,电子工业出版社,2007.11

[8] [美]Rogers Cadenhead. Java编程入门经典.梅兴文译.第4版.北京:人民邮电出版社,2007

[9] 赵文靖.Java程序设计基础与上机指导.北京:清华大学出版社,2006

[10] 赵毅.跨平台程序设计语言——Java.西安:西安电子科技大学出版社,2006

[11] 王路群.Java高级程序设计.北京:中国水利水电出版社,2006

[12]雍俊海.Java程序设计习题集.北京:清华大学出版社,2006

[13] 朱福喜.Java语言习题与解析.北京:清华大学出版社,2006

[14] 吴其庆.Java程序设计实例教程.北京:冶金工业出版社,2006

致谢

​ 在即将毕业的这段时间内,我专心研究了有关毕业的相关内容,进行大量的市场调查,综合多方面因素考虑做出毕业设计的主题。通过后期查询大量的书籍、资料和报刊,进行毕业设计的相关内容,通过对软件编程的各种应用的熟练运用最终完成了我的毕业设计,对此特别欣慰。

从2XXX年X月入学到2XXX年X月,我在XX大学度过了我的整整四年的大学时光,在这四年了我成长了许多,经历了许多,学会了许多。在即将毕业的这段时间内,我专心研究了有关毕业的相关内容,进行大量的市场调查,综合多方面因素考虑做出毕业设计的主题。通过后期查询大量的书籍、资料和报刊,进行毕业设计的相关内容,通过对软件编程的各种应用的熟练运用最终完成了我的毕业设计,对此特别欣慰。重刚开始的在大一连hello Word的小程序都不会编写的我,到现在我可以在我的优秀的导师和善良的同学的帮助下,我可以自己写出一些小的工程,在这四年里我学到了许多关于编程的知识,也认识到了许多非常认真负责的老师和积极向上的同学们,期间我还参加了一些学校组织的社会活动,给我积累下了宝贵的经验,丰富了我的社会阅历。对Myeclipse和MySQL数据库的知识有了更深的了解和学习,完善了计算机专业知识体系,拓宽了知识面。特别是通过大家动手设计和开发一个完整的系统,把书本上学到的基础知识同实践、客观合理的结合起来,加深了对计算机知识的理解,对以后的工作,学习和生活有了极大的帮助.

首先在我的论文写作中要感谢我的XX老师和XX老师给了我很大的帮助,感谢我的两位导师在我的写论文期间给我的莫大的帮助。在这次的论文写作期间我遇到了不少的问题,辛亏有几位无私的老师给我的支持,为我答疑解惑,才让我的论文和代码顺利的完成。

时光仍然,匆匆而过,没想到我们即将面临毕业。毕业这个话题总有一些伤感和沉重,我不愿提起却无法抵挡他的到来。人们常说“天下无不散的宴席”,随着毕业设计接近尾声,我们的离别格外的接近。从课题开始到毕业答辩,这段时光对我来说弥足珍贵,那些教导过我的老师们,那些陪在我身边和我一起努力的同学们,他们都是我人生中的良师益友。在此我表示我最真诚的感谢,谢谢你们。

当然,我也要感谢教我专业课的所有老师们,里我还要感谢我的母校XX大学,是它把我从一个懵懂的学生培养成一个能自己撑起一片天的成年人。它为我提供了那么优良的教学环境,为我提供了那么优秀的教室团队,为我提供了那么优质的学习氛围。让我安心专心的完成我四年的大学历程。感谢我所就读的软件工程专业,它让我学到了不只是课本上的专业知识,还有很多课本外的实践知识,我受益匪浅。是他们在我的大学四年专业课的学习过程中无私奉献的教给我许多专业知识和技能,这才能够使我能够在论文写作的过程中以及编写代码的过程中顺利解决难题和疑问。同时还要感谢所有在我的大学生活中帮助我和鼓励我的同学和朋友们,因为他们在生活和学习中给的我大量帮助,帮助我进步,陪伴我一起前行。在以后的人生道路上,我一定谨遵恩师的教诲,发挥自己的潜能,努力为社会做贡献。

最后,对阅读和评审本论文的各位老师表示衷心的感谢!

附录:英文翻译

1.英文原文

*AN OVERVIEW OF SERVLET AND JSP TECHNOLOGY*

*Chap 1 AN OVERVIEW OF SERVLET AND JSP TECHNOLOGY*

*1.1 A Servlet’s Job*

Servlets are Java programs that run on Web or application servers, acting as a middle layer between requests coming from Web browsers or other HTTP clients and databases or applications on the HTTP server.

*1. Read the explicit data sent by the client.*

The end user normally enters this data in an HTML form on a Web page. However, the data could also come from an applet or a custom HTTP client program. Chapter 4 discusses how servlets read this data.

*2. Read the implicit HTTP request data sent by the browser.*

It shows a single arrow going from the client to the Web server (the layer where servlets and JSP execute), but there are really two varieties of data: the explicit data that the end user enters in a form and the behind-the-scenes HTTP information. Both varieties are critical. The HTTP information includes cookies, information about media types and compression schemes the browser understands, and so forth; it is discussed in Chapter 5.

*3. Generate the results.*

This process may require talking to a database, executing an RMI or EJB call, invoking a Web service, or computing the response directly. Your real data may be in a relational database. Fine. But your database probably doesn’t speak HTTP or return results in HTML, so the Web browser can’t talk directly to the database. Even if it could, for security reasons, you probably would not want it to. The same argument applies to most other applications. You need the Web middle layer to extract the incoming data from the HTTP stream, talk to the application, and embed the results inside a document.

*4. Send the explicit data (i.e., the document) to the client.*

This document can be sent in a variety of formats, including text (HTML or XML), binary (GIF images), or even a compressed format like gzip that is layered on top of some other underlying format. But, HTML is by far the most common format, so an important servlet/JSP task is to wrap the results inside of HTML.

*5. Send the implicit HTTP response data.*

It shows a single arrow going from the Web middle layer (the servlet or JSP page) to the client. But, there are really two varieties of data sent: the document itself and the behind-the-scenes HTTP information. Again, both varieties are critical to effective development. Sending HTTP response data involves telling the browser or other client what type of document is being returned (e.g., HTML), setting cookies and caching parameters, and other such tasks. These tasks are discussed in Chapters 6 and 7.

*1.2 Why Build Web Pages Dynamically?*

After Marty wrote the first edition of Core Servlets and JavaServer Pages, various of his non-software-savvy friends and relations would ask him what his book was about. Marty would launch into a long, technical discussion of Java, object-oriented programming, and HTTP, only to see their eyes immediately glaze over. Finally, in exasperation, they would ask, “Oh, so your book is about how to make Web pages, right?”

“Well, no,” the answer would be, “They are about how to make programs that make Web pages.”

“Huh? Why wait until the client requests the page and then have a program build the result? Why not just build the Web page ahead of time?”

Yes, many client requests can be satisfied by prebuilt documents, and the server would handle these requests without invoking servlets. In many cases, however, a static result is not sufficient, and a page needs to be generated for each request. There are a number of reasons why Web pages need to be built on-the-fly:

*• The Web page is based on data sent by the client.*

For instance, the results page from search engines and orderconfirmation pages at online stores are specific to particular user requests. You don’t know what to display until you read the data that the user submits. Just remember that the user submits two kinds of data: explicit (i.e., HTML form data) and implicit (i.e., HTTP request headers). Either kind of input can be used to build the output page. In particular, it is quite common to build a user-specific page based on a cookie value.

*• The Web page is derived from data that changes frequently.*

If the page changes for every request, then you certainly need to build the response at request time. If it changes only periodically, however, you could do it two ways: you could periodically build a new Web page on the server (independently of client requests), or you could wait and only build the page when the user requests it. The right approach depends on the situation, but sometimes it is more convenient to do the latter: wait for the user request. For example, a weather report or news headlines site might build the pages dynamically, perhaps returning a previously built page if that page is still up to date.

*• The Web page uses information from corporate databases or other server-side sources.*

If the information is in a database, you need server-side processing even if the client is using dynamic Web content such as an applet. Imagine using an applet by itself for a search engine site: “Downloading 50 terabyte applet, please wait!” Obviously, that is silly; you need to talk to the database. Going from the client to the Web tier to the database (a three-tier approach) instead of from an applet directly to a database (a two-tier approach) provides increased flexibility and security with little or no performance penalty. After all, the database call is usually the rate-limiting step, so going through the Web server does not slow things down. In fact, a three-tier approach is often faster because the middle tier can perform caching and connection pooling.

In principle, servlets are not restricted to Web or application servers that handle HTTP requests but can be used for other types of servers as well. For example, servlets could be embedded in FTP or mail servers to extend their functionality. And, a servlet API for SIP (Session Initiation Protocol) servers was recently standardized (see http://jcp.org/en/jsr/detail?id=116). In practice, however, this use of servlets has not caught on, and we’ll only be discussing HTTP servlets.

*Chap 2 SERVER SETUP AND CONFIGURATION*

*2.1 Download and Install the Java Software Development Kit (SDK)*

You probably have already installed the Java Platform, but if not, doing so should be your first step. Current versions of the servlet and JSP APIs require the Java 2 Platform (Standard Edition—J2SE—or Enterprise Edition—J2EE). If you aren’t using J2EE features like Enterprise JavaBeans (EJB) or Java Messaging Service (JMS), we recommend that you use the standard edition. Your server will supply the classes needed to add servlet and JSP support to Java 2 Standard Edition.

But what Java version do you need? Well, it depends on what servlet/JSP API you are using, and whether you are using a full J2EE-compliant application server (e.g.,WebSphere, WebLogic, or JBoss) or a standalone servlet/JSP container (e.g., Tomcat,JRun, or Resin). If you are starting from scratch, we recommend that you use the latest Java version (1.4); doing so will give you the best performance and guarantee that you are compatible with future releases. But, if you want to know the minimum supported version, here is a quick summary.

• Servlets 2.3 and JSP 1.2 (standalone servers). Java 1.2 or later.

• J2EE 1.3 (which includes servlets 2.3 and JSP 1.2). Java 1.3 or later.

• Servlets 2.4 and JSP 2.0 (standalone servers). Java 1.3 or later.

• J2EE 1.4 (which includes servlets 2.4 and JSP 2.0). Java 1.4 or later.

We use Java 1.4 in our examples.

For Solaris, Windows, and Linux, obtain Java 1.4 at http://java.sun.com/j2se/1.4/ and 1.3 at http://java.sun.com/j2se/1.3/. Be sure to download the SDK (Software Development Kit), not just the JRE (Java Runtime Environment)—the JRE is intended only for executing already compiled Java class files and lacks a compiler. For other platforms, check first whether a Java 2 implementation comes preinstalled as it does with MacOS X. If not, see Sun’s list of third-party Java implementations at http://java.sun.com/cgi-bin/java-ports.cgi.

Your Java implementation should come with complete configuration instructions, but the key point is to set the PATH (not CLASSPATH!) environment variable to refer to the directory that contains java and javac, typically java_install_dir/bin. For example, if you are running Windows and installed the SDK in C:\j2sdk1.4.1_01, you might put the following line in your C:\autoexec.bat file. Remember that the autoexec.bat file is executed only when the system is booted.

set PATH=C:\j2sdk1.4.1_01\bin;%PATH%

If you want to download an already configured autoexec.bat file that contains the PATH setting and the other settings discussed in this chapter, go to http://www.coreservlets.com/, go to the source code archive, and select Chapter 2. On Windows NT/2000/XP, you could also right-click on My Computer, select Properties, then Advanced, then Environment Variables. Then, you would update the PATH value and press the OK button. On Unix (Solaris, Linux, etc.), if the SDK is installed in /usr/j2sdk1.4.1_01 and you use the C shell, you would put the following into your .cshrc file.

setenv PATH /usr/j2sdk1.4.1_01/bin:$PATH

After rebooting (Windows; not necessary if you set the variables interactively) or logging out and back in (Unix), verify that the Java setup is correct by opening a DOS window (Windows) or shell (Unix) and typing java -version and javac -help. You should see a real result both times, not an error message about an unknown command. Alternatively, if you use an Integrated Development Environment (IDE) like Borland JBuilder, Eclipse, IntelliJ IDEA, or Sun ONE Studio, compile and run a simple program to confirm that the IDE knows where you installed Java.

2.中文翻译

第一章 servlet和JSP技术概述

*1.1 servlet的功用*

Servlet是运行在Web服务器或应用服务器上的Java程序,它是一个中间层,负责连接来自Web浏览器或其他HTTP客户程序的请求和HTTP服务器上的数据库或应用程序。

(1)读取客户发送的显示数据。

(2)读取由浏览器发送的隐式请求数据

(3)生成结果

(4)向客户发送显示数据

(5)发送一个隐式的HTTP响应数据

1.2 动态构建网页的原因

*·* 网页基于客户发送的数据

例如,搜索引擎生成的页面,以及在线商店的订单确认页面,都要针对特定的用户请求而产生。在没有读取到用户提交的数据之前,我们不知道显示什么,要记住,用户提交两种类型的数据:显示(即HTML表单的数据)和隐式(即HTTP请求的报头)。两种输入都可用来构建输出页面。基于cookie值针对具体用户构建页面的情况尤其普遍。

*·* 网页由频繁改变的数据导出

如果页面需要根据每个具体的请求做出相应的更改,当然需要在请求发生时构建响应。但是,如果页面周期性地改变,我们可以用两种方式来处理它:周期性地在服务器上构建新的网页(和客户请求无关),或者仅仅在用户请求该页面时再构建。具体应该采取哪种方式要依具体情况而定,但后一种方式常常更为方便,因为它只需简单地等待用户的请求。例如,天气预报或新闻网站可能会动态地构建页面,也可能会返回之前构建的页面(如果它还是最新的话)。

*·* 网页中使用了来自公司数据库或其他服务器端数据源的信息

如果数据存储在数据库中,那么,即使客户端使用动态Web内容,比如applet,我们依旧需要执行服务器端处理。想象下,如果一个搜索引擎网站完全使用applet,那么用户将会看到:“正在下载50TB的applet,请等待!”。显然,者很愚蠢:这种情况下,我们需要与数据库(二层结构)更灵活,也更安全,而性能上的损失很少甚至没有。毕竟数据库调用通常是对速度影响最大的步骤,因为经过Web服务器不会带来性能上的明显降低。实际上,三层结构常常更快,因为中间层可以执行高缓存和连接共享。

理论上讲,servlet并非只用于处理HTTP请求的Web服务器或应用服务器,它同样可以用于其他类型的服务器。例如,servlet能够嵌入到FTP或邮件服务器中,扩展它们的功能。而且,用于会话启动协议服务器的servlet API最近已经被标准化(参见http://jcp.org/en/jsr/detail?Id=116)。但在实践中,servlet的这种用法尚不流行,在此,我们只论述了HTTP servlet。

第2章 *服务器的安装和配置*

*2.1 下载和安装Java软件开发工具包*

您可能早已安装了Java平台,如果尚未安装,那么第一步就是安装Java平台,当前版本的servlet和JSP API需要Java 2平台(标准版,J2EE,或企业版,J2EE)。如果不准备使用J2EE的特性,如Enterprise JavaBeans(EJB)或Java消息服务(Java messaging service,JMS),我们建议使用标准版。服务器会提供向Java 2标准版加入servlet和JSP支持所需的类。

但我们需要Java的哪个版本呢?这要使用哪种servlet/JSP API,以及使用的是与J2EE完全兼容的应用服务器(例如:WebSphere,WebLogic或JBoss),还是独立的servlet/JSP容器(例如Tomcat,JRun或Resin)而定。如果从零做起,我们推荐使用Java的最新版本(1.4);这样可以得到最佳的性能,并保证与奖励的版本兼容。但是,如果您希望了解最低的支持版本,下面是一个简略的汇总。

****·****servlet 2.3和JSP(独立服务器)。Java 1.2或更新的版本。

****·****J2EE 1.3(包括servlet和JSP 1.2)。Java 1.3或更新的版本。

****·****servlet 2.4 和JSP 2.0(独立服务器)。Java 1.3或更新版本。

****·****J2EE 1.4(包括servlet 2.4和JSP 2.0)。Java 1.4或更新版本。

本书以Java 1.4为例进行介绍。

对于Solaris,Windows和Linux,可以到http://java.sun.com/j2se/1.4/获取Java 1.4,http://java.sun.com/j2se/1.3/获取Java 1.3.要确保下载的是SDK(软件开发工具包),而非仅仅是JRE(Java runtime environment,Java运行环境)JRE只执行已经编译好的Java类文件,不提供编译器。对于其他平台,首先检查这些平台是预装了Java 2的实现,请到http://java.sun.com/cgi-bin/java-ports.cgi查询Sun提供的第三方Java实现饿清单。

您使用的Java实现应该拥有完整的配置操作指南,但关键是设置环境变量PATH(不是CLASSPATH),使之指出包括Java和Javac的目录,一般是java_install_dir/bin。例如,如果您使用windows操作系统,并将SDK安装在C:\j2sdk1.4.1_01中,您可能需要将下面的行加入到C:\autexec.bat文件。切记,autoexec.bat只在系统启动时执行。

Set PATH=C:\j2sdk1.4_01\bin;%PATH%

如果您想下载已经配置好的autoexec.bat文件,包含PATH设定以及本章论述的其他设置,可以到http://www.eoreservlets.com/,转到相应的源代码档案文件后,选择第2章。

在windows NT/2000/XP中,您还可以在My Computer上右击鼠标,选择Properties.然后选择Advanced,再选择Environment variables【我的电脑】|【属性】|【高级】|【环境变量】。更新PATH的值,然后单击OK按钮。

在UNIX中,如果SDK安装在/usr/j2sdk1.4.1_01中,并且您使用C外壳。您需要将下面的内容放入到.cshrc文件中。

Setenv PATH/usr/j2sdk1.4.1_01

重启后(视窗;没有必要的,如果你以交互方式设置的变量)或注销并重新登录的(UNIX),验证Java的设置是通过打开一个DOS窗口(Windows)或shell(UNIX)并键入java的版本正确, javac的互助。你应该看到一个真实的结果两次,不是一个未知的命令的错误消息。另外,如果您使用的集成开发环境(IDE),如Borland公司的JBuilder,Eclipse中,IntelliJ IDEA的,或Sun ONE Studio中编译和运行一个简单的程序,以确认该IDE知道您安装Java。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_734499.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#Web网站的创建

本文转载自&#xff1a; https://www.cnblogs.com/dawasai/p/4443927.html 作者&#xff1a;dawasai 转载请注明该声明。一、CS与BS的区别 CS软件&#xff1a;需要在客户端安装软件。 BS软件&#xff1a;只需要浏览器就能运行&#xff0c;Web网站就是BS软件。 创建过程&…

网站访问慢怎么办?一张图教你如何解决!

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/zhiqiangwang/blog/794871

网路编程(网站源码查看器)

一、网页源码查看器 1.shiftF2调用httpwatch&#xff08;为网页抓包数据分析工具【需下载】&#xff09;: 2.HttpURLConnection:用于发送和接收数据 3.必须有联网权限&#xff1a;android.permission.INTERNET 4.异常处理方式&#xff1a; //若出现此种异常&#xff0c; W/Syst…

大学四年一直自学,作为程序员的他,这次把私藏的学习网站都贡献出来了

如何在大学高效地进行学习&#xff1f;这是需要大家去思考的问题。学习网站也好&#xff0c;实用工具也好&#xff0c;基础前提是你知道如何去学习它&#xff0c;并且能在无人监督的条件下花足够的时间学习它。 为了助力大家的学习&#xff0c;我把这些年私藏的各种网站资源全…

大学四年,靠着这些学习网站,我从挂科学渣变成了别人眼中的大神

前记 毕业合影时&#xff0c;导员笑着对我说“你可是我们系里的风云人物”。我也笑了&#xff0c;思绪却回到了四年前。 还记得四年前&#xff0c;我从小县城里走出&#xff0c;来到学校的计算机学院报到&#xff0c;开始面对更大世界。一段时间之后&#xff0c;我见识到同学…

用百度地图做自定义图层_白杨SEO:企业商家怎么做百度地图标注、优化排名、推广引流和营销?【实操方法】...

原创&#xff1a;白杨 全文2500字 预计阅读5分钟前言&#xff1a;这是白杨SEO公众号原创第169篇。之前SEO好友王海写了一篇高地图标注方法(文尾)&#xff0c;所以今天我来写一篇百度地图标注实操的。如果觉得有帮助&#xff0c;点在看或分享给需要朋友。大纲如下&#xff1a;1、…

如何用python爬取图片数据_Python3.6爬虫入门练手小项目之一:使用爬虫爬取糗事百科网站图片项目...

1.步骤解析 这个小项目的目的是让大家学会如何爬取网站上的图片&#xff0c;下面是简单介绍。 实现步骤如下&#xff1a; 1.首先要写最简单的代码&#xff0c;确定能通过url访问糗百 2.将糗百服务器返回的数据进行解码&#xff0c;得到完整HTML代码 3.查看糗百HTML代码&#xf…

网站导航颜色停留_关乎网站用户体验的10个关键要素,用好了事半功倍!

互联网时代&#xff0c;几乎每个稍微成型的企业都有自己在网络上的窗口——企业网站。企业网站能否在极短时间内抓住用户眼球&#xff0c;增加用户停留时间&#xff0c;让用户找出兴趣点&#xff0c;进而发起在线咨询&#xff0c;最终形成转化&#xff0c;达到企业网站最终提升…

如何避免网站收录低和收录周期长

无论是新站还是旧站都会遇到网站收录低或者收录周期长的问题&#xff0c;那么该如何去解决这一问题呢?下面咱们聊一聊对网站的一些建议。 一、内容重复度高  很多使用采集工具或者转载他人文章来更新内容&#xff0c;这样的内容重复度非常高&#xff0c;严重影响用户体验&am…

Kali linux 2016.2(Rolling)中metasploit的搜集特定网站的目录结构

parent directory site: testfire.net可以看到&#xff0c;在这个testfire.NET中存在有几个隐藏目录&#xff08;返回代码403&#xff1a;没有权限访问&#xff09;。 本文转自大数据躺过的坑博客园博客&#xff0c;原文链接&#xff1a;http://www.cnblogs.com/zlslch/p/68702…

手把手教学使用Halo搭建自己的博客网站

工作需要学习&#xff0c;学习需要积累。网上有很多好的博客系统。我们可以去"CSDN"&#xff0c;"博客园"等这种大厂提供的博客空间&#xff0c;也可以自己搭建高逼格的独立博客。例如&#xff0c;适合github的hexo&#xff0c;大众的wordpress&#xff0c…

https改为http访问_网站更改为https后,数据统计不到了

http协议网站更改为https后&#xff0c;很多数据统计不到了。是很多SEO和运营人员会遇到的比较严重的问题&#xff0c;数据渠道计入不准确&#xff0c;那很多的考核就没办继续。该怎么办呢&#xff1f;https协议对比http协议而言&#xff0c;针对于我们的网站来说会更加的安全。…

Hive(27):分析网站uvpv等多指标综合案例

一、实现功能 1.分析网站日志&#xff0c;获得日期&#xff0c;uv&#xff0c;pv&#xff0c;登录人数&#xff0c;游客人数&#xff0c;平均访问时长&#xff0c;二跳率&#xff0c;独立ip数等关键信息。 其中&#xff1a; 登录&#xff1a;userid有值&#xff0c;会员&…

(转)程序员实用工具网站

【原文地址&#xff1a;https://blog.csdn.net/m0_38106923/article/details/100130354】 版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blog.csdn.net/m0_3810…

Loadrunner12 - WebTours网站使用录制回放时错误(2)——Session自动关联问题

当你发现你录制回放完成webTours后loadrunner12提示你脚本通过&#xff0c;但实际webTours中并没有发生任何实际的变化时&#xff0c;那可能就是session关联的问题了。 首先&#xff0c;我们重新录制&#xff0c;录制完成后&#xff0c;LR自动扫描可能存在的关联&#xff0c;LR…

宝塔自动备份网站到FTP空间

上次分享了宝塔自动备份网站到阿里云oss中&#xff0c;但是阿里云的oss是要收存储费用的&#xff0c;而且我非常在意的一点就是这样会把阿里云的API密码明文存储在面板后台&#xff0c;感觉这样也不太好&#xff0c;就一直在想其他的自动备份方案&#xff0c;正好前几天腾讯云活…

经营10多年的科技网站月光博客每月可以赚多少钱?[图]

2019独角兽企业重金招聘Python工程师标准>>> 经营10多年的科技网站月光博客每月可以赚多少钱&#xff1f; 相信你也想知道这个问题吧&#xff0c;我反正是充满了好奇。月光博客是十多年前就已经崛起的一个优秀博客&#xff0c;主打科技主题&#xff0c;曾经引得很多…

JSP——实现简单的计数器(统计访问网站的次数)

1.index.jsp文件 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <html> <body> <%! int i0; //成员变量 %> <% i; //Java程序片 %&g…

简洁精美的企业单页门户网站(纯静态模板)

为什么80%的码农都做不了架构师&#xff1f;>>> <!DOCTYPE html> <html lang"en" class"no-js"> <!-- BEGIN HEAD --> <head> <meta charset"utf-8"/> <title>钦州日之新科技有限公司</titl…

在官方网站获得JMeter工具的步骤

首先我们了解一下JMeter是什么&#xff0c;以下是百度百科对于JMeter的解释说明。 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 它可以用于测试静态和动态资…