基于JSP/Servlet校园二手交易平台(二)

目录

2 开发技术及开发环境

2.1 Java语言简介

2.2 J2EE技术介绍

2.3 Servlet/JSP技术

2.4 MVC 简介

2.5 Struts 技术

2.6 Hibernate 技术

2.6.1 应用程序的分层体系结构

2.6.2 Hibernate的应用及API简介

2.7 开发环境及环境配置

2.7.1 Java/JSP系统环境

2.7.2 JSP环境的安装和环境变量的设置

2.7.3 Eclipse开发工具

2.7.4 Tomcat服务器

2.8 数据库开发工具选择及配置


前面内容请移步

基于JSP/Servlet校园二手交易平台(一)

免费资源+源代码+毕业论文

校园二手平台项目

2 开发技术及开发环境

2.1 Java语言简介

        Java语言是美国Sun公司于1995年推出的一种简单的、面向对象的、分布式的、可解释的、键壮的、安全的、结构的、中立的、可移植的、性能很优异的多线程的、动态的语言。其前身为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术。经过Sun公司的工程师的不懈努力以及全世界无数的编程爱好者的使用,Java终于发展成为今天这样一个集桌面(J2SE)、网络(J2EE)、移动平台(J2ME)应用为一体的功能强大的编程语言。目前Java由于其平台无关及分布式特性,最重要的应用是在网络应用上[1]

2.2 J2EE技术介绍

        J2EE技术是Java网络应用的技术,广泛应用于企业级的应用。它是由一套规范(shannin,2001)和建立在J2SE平台上的应用编程接口(API)组成。J2EE拥有Sun公司提供免费开发工具,称为J2EE软件开发工具包(Software Development Kit,SDK )http://java.sun.com/j2ee)。J2EE技术是一种Java网络应用技术的组合,包含有远程方法调用(Remote Method Invocation,RMI)Java消息服务(Java Message Service,JMS)JavaMail等通信服务,JDBCJava命名和目录接口(Java naming and Directory Interface,JNDI)Java连接器体系结构(Java Connector Architecture,JCA)Java事务API/Java事务服务(JTA/JTS)XML处理API等通用服务以及ServletJava服务器页面(JSP)、企业级JavaBean(EJB)等组件技术。任何J2EE的实现都必须要在其特定容器中实现。 

2.3 Servlet/JSP技术

        Servlet是JSP技术的基础,JSP本身就是预先被编译成Servlet,然后再运行的,而且大型的Web应用程序的开发需要Java ServletJSP配合才能完成。 Servlet其实和传统的CGI程序和ISAPINSAPIWeb程序开发工具的作用是相同的,在使用Java Servlet以后,用户不必再使用效率低下的CGI方式,也不必使用只能在某个固定Web服务器平台运行的API方式来动态生成Web页面。许多Web服务器都支持Servlet,即使不直接支持ServletWeb服务器也可以通过附加的应用服务器和模块来支持ServletJSPJavaServer Pages)是一种基于Java的脚本技术。在JSP 的众多优点之中,其中之一是它能将 HTML 编码从 Web 页面的业务逻辑中有效地分离出来。用 JSP 访问可重用的组件,如 ServletJavaBean 和基于 Java  Web 应用程序。JSP 还支持在 Web 页面中直接嵌入 Java 代码。可用两种方法访问 JSP 文件:浏览器发送 JSP 文件请求、发送至 Servlet 的请求。 
    a) JSP 文件访问 Bean 或其它能将生成的动态内容发送到浏览器的组件。

        b) 发送至 Servlet 的请求生成动态内容,并调用 JSP 文件将内容发送到浏览器。该访问使得将内容生成从内容显示中分离出来更为方便。

        JSP最大的优点在于其与平台无关性,具有一次编写,处处运行的特点。

2.4 MVC 简介

        模型-视图-控告器(MVC)是20世纪80年代Smalltalk-80出的一种软件模式,现在已经被广泛使用。

        1. 模型(Model)

模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑。

        2. 视图(View)

视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

        3.控制器(Controller)

控制器的工作就是根据用户的输入,控制用户界面显示和更新模型对象的状态。典型的MVC模式所包含的模块、每个模块的功能以及模块之间的关系如图2-1所示[2]:

图2-1 MVC组件的关系和功能

        MVC模式的出现不仅实现的功能模块和显示模块的分离,同是赛马场还提高了应用系统的可维护性、可扩展性、可移植性和组件的可利用性。

        在早期的程序中,如果不注意对数功能和显示的解耦合,常常估导致程序的复杂及难以维护,像VB,Delphi等RAD程序都有这种问题。甚至现在有C#,Java有时候也会出现把业务逻辑写在显示模块中的现象。

        尽管MVC设计模式很早的提出了,但在Web项目的开发中引入MVC却是步履艰难。主要原因是在早期的Web项目开发中,程序语言和Html的分离一直难以实现,CGI程序以字条串输出的形式动态的生成html内容。直到基于J2EE的JSP Model2问世时才得以改观。它用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean实现模型的功能。JSP Model2 结构如图2-2所示:

图2-2 JSP Model2 结构图

        在Model 2这种框架结构中,Servlet作为控制器负责处理用户的请求以及创建JSP页面中所有要使用的Bean对象,并且还要根据用户的请求来返回到不同的JSP页面。

        在使用Model 2开发框架时,一定要保证在JSP页面中不能包含任何的业务处理逻辑。它只是简单地得到对象或者在Servlet中创建的Bean,然后通过这些动态的内容来生成动态显示的页面。

        Struts 本质上就是在Model 2的基础上实现一个MVC架构,它只有一个中心控制器,采用定制转向的URL并采用Action来处理逻辑。

2.5 Struts 技术

        Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Java Servlet和JSP构建Web应用的一项非常有用的技术。首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command模式,每个继承Action的子类都必须实现一个方法execute。

        struts重要的表单对象是ActionForm,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。

        Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间。

        Struts包含了一组想相互协作的类、Servlet和JSP标记,它们共同组成了一个可重用的MVC模板。通过定义可以看出,Struts是Web应用的开发框架,Struts包含丰富的标记库和独立于该框架工作的实用程序类。图2-3 显示了Struts的基本结构。

图 2-3 Struts基本结构

        通过图 2-3可以看出,采用Struts框架结构的Web应用程序主要由控制器、业务逻辑、模型和视图组成。其中的控制器、模型和视图为Struts框架的主要组成部分,而事务逻辑则是我们需要实现的系统业务逻辑处理部分。

2.6 Hibernate 技术

2.6.1 应用程序的分层体系结构

        随着计算机应用软件的发展,应用程序逐渐由单层体系结构发展为多层体系结构。其中,三层结构是目前典型的一种应用软件结构。

        表述层:提供与用户交互的界面,如GUI(图形用户界面),web页面等;

        业务逻辑层:负责各种业务逻辑,直接访问数据库,提供对业务数据的保存、更新、删除和查询操作;

        数据库层:负责存放管理应用的持久性业务数据。

        三层结构的特点是:所有下层向上层提供调用的接口,具体实现细节对上层透明。层与层之间存在自上而下的依赖关系,即上层会访问下层的API,但下层不依赖于上层。

        分离出的持久化层封装了数据访问细节,为业务逻辑层提供了面向对象的API[2]

        持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

        持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。

        三层软件结构如图2-4所示:

图2-4 三层软件结构图

        数据库的读写是一个很耗费时间和资源的操作,当大量用户同时直接访问数据库的时候,效率将非常低,如果将数据持久化就不需要每次从数据库读取数据,直接在内存中对数据进行操作,这样就节约了数据库资源,而且加快了系统的反映速度。增加持久化层提高了开发的效率,使软件的体系结构更加清晰,在代码编写和系统维护方面变得更容易。特别是在大型的应用里边,会更有利。同时,持久化层作为单独的一层,人们可以为这一层独立的开发一个软件包,让其实现将各种应用数据的持久化,并为上层提供服务。从而使得各个企业里做应用开发的开发人员,不必再来做数据持久化的底层实现工作,而是可以直接调用持久化层提供的API。

2.6.2 Hibernate的应用及API简介

        Hibernate是一种Java语言下的对象关系映射解决方案。它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。

        Hibernate不仅管理Java类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。

        Hibernate对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,它既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB(EnterpriseJavaBeans是Java应用于企业计算的框架)的J2EE架构中取代CMP,完成数据持久化的重任。

        Hibernate使用 Java 反射机制 而不是字节码增强程序来实现透明性。Hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。Hibernate支持各种关系数据库,从一对一到多对多的各种复杂关系。Hibernate核心接口如图2-5所示:

图2-5 Hibernate核心接口框

2.7 开发环境及环境配置

2.7.1 Java/JSP系统环境

        开发及测试的系统环境,我选择了Microsoft Windows Advanced Server 2000。由于其本身就是为服务器版的,适合用于搭设成为服务器端。要开发JSP,首先必须要求有Java环境,我选择了JavaTM Platform, Standard Edition 6 Development Kit

        作为JSP的容器,选择了目前非常流行的Tomcat 6.0。而IDE工具则选择了Eclipse(MyEclips)。

2.7.2 JSP环境的安装和环境变量的设置

        首先安装JDK,安装Tomcat。

        接下来配置环境变量:右键点击“我的电脑”,在弹出的菜单中点“属性”,在系统特性里选择“高级”,找到“环境变量”,点击进入后,“系统变量”就是我们需要设置的地方。

        1、新建变量CATALINA_HOME,变量值为:

                D:\apache-tomcat-6.0.18

        2、新建JAVA_HOME变量,然后在变量值中输入以下内容:

                C:\Program Files\Java\jdk1.6.0_12

        3、编辑path变量:在原有的变量值后添加JDK的BIN目录

                %JAVA_HOME%\bin;%CATALINA_HOME%\BIN

2.7.3 Eclipse开发工具

        Eclipse平台体系结构主要由5部分组成,分别是平台运行库、工作区、工作台、团队支持和帮助。

        在运行时内核是整个架构的核心,其他部件都是以插件方式来实现的。Eclipse采用动态加载机制,即只有需要的才加载,这样可以降低启动时间,提高资源使用效率。

        工作空间插件即所谓的工作区,主要负责管理用户资源,例如用户创建项目的管理、文件变更等,并负责通知其他插件关于资源变更的信息。

        工作台插件是Eclipse 提供的用户界面。它使用标准窗口工具包(SWT)和一个更高级的API(JFace)构建的。SWT是Java的Swing/AWT的非标准替代者,JFace则以SWT为基础,但更易于使用。

        团队支持插件负责提供版本控制和配置管理支持。它允许用户根据需要添加视图,并与允许用户使用的任何版本控制系统交互。

        帮助插件允许以HTML文件形式添加文档,并提供了一个附加的导航结构以便用户使用帮助功能搜索相关信息。

2.7.4 Tomcat服务器

        Tomcat是Sun的JSWDK(Java Server Web Development Kit)中Servlet的运行环境(servlet容器)。Tomcat是Apache Jakarta软件组织的一个子项目,Tomcat是一个JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基础上发展起来的一个JSP和Servlet规范的标准实现,使用Tomcat可以体验JSP和Servlet的最新规范。经过多年的发展,Tomcat不仅是JSP和Servlet规范的标准实现,而且具备了很多商业Java Servlet容器的特性,并被一些企业用于商业用途[4]

Tomcat目录如下:

Tomcat_home
|---bin Tomcat:存放启动和关闭tomcat脚本;

|---conf Tomcat:存放不同的配置文件(server.xml和web.xml);
|---doc:存放Tomcat文档;
|---lib/japser/common:存放Tomcat运行需要的库文件(JARS);
|---logs:存放Tomcat执行时的LOG文件;
|---src:存放Tomcat的源代码;
|---webapps:Tomcat的主要Web发布目录(包括应用程序示例);
|---work:存放jsp编译后产生的class文件;

2.8 数据库开发工具选择及配置

        目前数据库的开发工具,大、中、小型的有很多,比如OracleMS SQL Server2000DB2、MySQL、Access等等许多关系数据库,在系统开发初期,我用SQL server2000 进行数据库连接,因为可以于Windows 2000服务器系统很好的兼容,并且对大并发访问有很好支持,功能强大且使用简单,然而在后期的开发中,由于经常更换设计环境,而且自己用到Hibernate,对软件有一定要求,每次系统移植都要花很多时间配置环境,所以又更换了移植性很好的MySQL做数据库。

        MySQL是一个小型关系型数据库管理系统,被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

        与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本[3]

        在本系统中,对MySQL的配置最重要是数据库字符编码设置,因为数据库的录入的大多是中文字符,默认编码为GBK会减少许多操作,配置如下:

        default-character-set=gbk

 

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

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

相关文章

小程序-购物车-基于SKU电商规格组件实现

SKU 概念: 存货单位( Stock Keeping Unit ), 库存 管理的最小可用单元,通常称为“单品”。 SKU 常见于电商领域,对于前端工程师而言,更多关注 SKU 算法 ,基于后端的 SKU 数据…

(二)vForm 动态表单设计器之下拉、选择

系列文章目录 (一)vForm 动态表单设计器之使用 目录 系列文章目录 前言 一、后端需提供接口 二、组件配置 总结 前言 动态表单下拉、选择等组件,大概率要使用数据库中的数据,那么vForm如何拿到数据库中的数据呢?跟随…

动物合并消除休闲游戏源码 Animal Merge 益智游戏

一款动物合并消除休闲游戏源码,Animal Merge是一款引人入胜的益智游戏,玩家的任务是合并方块,创造出可爱的动物,这些动物的体型会逐渐变大。游戏玩法包括将方块放到网格上,并战略性地将它们合并以形成更大的动物形状。…

【408精华知识】主存相关解题套路大揭秘!

讲完了Cache,再来讲讲主存是怎么考察的,我始终认为,一图胜千言,所以对于很多部件,我都是通过画图进行形象的记忆,那么接下来我们对主存也画个图,然后再来详细解读其考察套路~ 文章目录 零、主存…

python-pytorch 下批量seq2seq+Bahdanau Attention实现问答1.0.000

python-pytorch 下批量seq2seq+Bahdanau Attention实现简单问答1.0.000 前言原理看图数据准备分词、index2word、word2index、vocab_size输入模型的数据构造注意力模型decoder的编写关于损失函数和优化器在预测时完整代码参考前言 前面实现了 luong的dot 、general、concat注意…

【话题】我眼神的IT行业现状与未来趋势

目录 一、挑战 教学资源的重新分配 教师角色的转变 学生学习方式的改变 教育评价体系的挑战 二、机遇 个性化学习 跨学科学习 国际合作与交流 创新教育模式 三、如何培养下一代IT专业人才 更新教育理念 加强基础设施建设 整合课程资源 加强实践教学 培养跨学科…

【Linux】TCP协议【中】{确认应答机制/超时重传机制/连接管理机制}

文章目录 1.确认应答机制2.超时重传机制:超时不一定是真超时了3.连接管理机制 1.确认应答机制 TCP协议中的确认应答机制是确保数据可靠传输的关键部分。以下是该机制的主要步骤和特点的详细解释: 数据分段与发送: 发送方将要发送的数据分成一…

vue深度选择器(:deep​)

处于 scoped 样式中的选择器如果想要做更“深度”的选择&#xff0c;也即&#xff1a;影响到子组件&#xff0c;可以使用 :deep() 这个伪类&#xff1a; <style lang"scss" scoped> .evaluation-situation-details :deep .cl-icon-arrow-right {display: none…

【Python 对接QQ的接口(二)】简单用接口查询【等级/昵称/头像/Q龄/当天在线时长/下一个等级升级需多少天】

文章日期&#xff1a;2024.05.25 使用工具&#xff1a;Python 类型&#xff1a;QQ接口 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算法&#xff09;&…

JS根据所选ID数组在源数据中取出对象

let selectIds [1, 3] // 选中id数组let allData [{ id: 1, name: 123 },{ id: 2, name: 234 },{ id: 3, name: 345 },{ id: 4, name: 456 },] // 源数据let newList [] // 最终数据selectIds.map((i) > {allData.filter((item) > {item.id i && newList.pus…

aws sqs基础概念和队列参数解析

分布式队列的组成部分 生产者&#xff0c;向队列发送消息的组件消费者&#xff0c;接受队列消息队列&#xff0c;多个sqs服务器存储冗余存储消息 sqs自动删除超过最大留存时间的消息&#xff08;默认4天&#xff09;&#xff0c;可以通过SetQueueAttributes调整为&#xff08…

【408真题】2009-13

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

VBA即用型代码手册:删除Excel中空白行Delete Blank Rows in Excel

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…

IDEA中好用的插件

IDEA中好用的插件 CodeGeeXMybatis Smart Code Help ProAlibaba Java Coding Guidelines​(XenoAmess TPM)​通义灵码常用操作 TranslationStatistic CodeGeeX 官网地址&#xff1a;https://codegeex.cn/ 使用手册&#xff1a;https://zhipu-ai.feishu.cn/wiki/CuvxwUDDqiErQU…

Android 自定义图片进度条

用系统的Progressbar&#xff0c;设置图片drawable作为进度条会出现图片长度不好控制&#xff0c;容易被截断&#xff0c;或者变形的问题。而我有个需求&#xff0c;使用图片背景&#xff0c;和图片进度&#xff0c;而且在进度条头部有个闪光点效果。 如下图&#xff1a; 找了…

Kafka(十三)监控与告警

目录 Kafka监控与告警1 解决方案1.2 基础知识JMX监控指标代理查看KafkaJMX远程端口 1.3 真实案例Kafka Exporter:PromethusPromethus Alert ManagerGrafana 1.3 实际操作部署监控和告警系统1.2.1 部署Kafka Exporter1.2.2 部署Prometheus1.2.3 部署AlertManger1.2.4 添加告警规…

大疆上云API本地部署与飞机上云

文章目录 前言一、安装基础环境1. EMQX 安装(版本4.4.0)2. MySql 安装(版本8.0.26)3. Redis 安装 二、部署后端&#xff08;JDK必须11及以上&#xff09;三、部署前端四、成为大疆开发者五、飞机注册上云六、绑定飞机七、无人机状态查看八、直播流查看 前言 大疆上云API官方文…

HarmonyOS鸿蒙应用开发——ArkTS的“内置组件 + 样式 + 循环和条件渲染”

一、内置组件是咩&#xff1f; 学过前端的都知道&#xff0c;一个组件就是由多个组件组成的&#xff0c;一个组件也可以是多个小组件组成的&#xff0c;组件就是一些什么导航栏、底部、按钮......啥的&#xff0c;但是组件分为【自定义组件】跟【内置组件】 【自定义组件】就…

【狂神说Java】Redis笔记以及拓展

一、Redis 入门 Redis为什么单线程还这么快&#xff1f; 误区1&#xff1a;高性能的服务器一定是多线程的&#xff1f; 误区2&#xff1a;多线程&#xff08;CPU上下文会切换&#xff01;&#xff09;一定比单线程效率高&#xff01; 核心&#xff1a;Redis是将所有的数据放在内…

用于时间序列概率预测的蒙特卡洛模拟

大家好&#xff0c;蒙特卡洛模拟是一种广泛应用于各个领域的计算技术&#xff0c;它通过从概率分布中随机抽取大量样本&#xff0c;并对结果进行统计分析&#xff0c;从而模拟复杂系统的行为。这种技术具有很强的适用性&#xff0c;在金融建模、工程设计、物理模拟、运筹优化以…