2.1 Web 应用程序开发 JSP 技术
2.1.1 JSP 的概述
JSP(Java Server Pages)是由 Sun Microsystems 公司倡导、多家公司
参与共同建立的一种动态网页技术规范,是一种用来开发动态网页内容的
标准。
JSP 是新一代的动态网页内容编程技术,它跟 Java 技术类似具有“一
次编写,随处运行”的特性,该特性允许相关开发人员开发和维护与操作
平台无关、信息丰富的动态 Web 页面,包括 HTML,DHTML,XHTML 和 XML 等。
该技术使 Web 开发人员搭建网络平台变的更加简单。JSP 技术可以让用户界
面跟内容从根本上分离出来,使得 Web 开发人员不必修改底层的动态内容,
来修改整体的页面布局。
2.1.2 JSP 的运行原理
程序运行的过程中,首先将相关 JSP 文档复制到 Web 服务器的文档目
录中。当用户请求该文档时,服务器将识别出这个具有.jsp 扩展名的文档,
并将该文档进行特殊处理。当用户第一次请求该文档时,它首先被编译成
一个 servlet 对象,并将其存储到内存中,然后所需内容反馈给发出请求
的客户机。在此之后,只要有请求到来,服务器都将进行检查,查看该文
件是否被改动,若没有变化,服务器将调用已编译过的 servlet 对象;否则
重新将编译。
JSP 请求具体过程如图 1-1 所示。
(1)用户机发出一个 JSP 页面请求。
(2)JSP 引擎编译该 JSP 被编译成 servlet。
1
(3)生成的 servlet 被编译并装载。
图 1-1 JSP 请求步骤
(4)将编译后的 servlet 服务请求一并反馈给用户机。
JSP 主要是为对于 Java 程序处理熟悉的人设计的。与传统的 servlet
相比,JSP 具有如下优势:
1.与传统的 HTML 语言兼容。
2.开发跟测试相对方便。
2.1.3 JSP 的优势与劣势
JSP 的优势:
(1)可移植性强:JSP 是在 Java 的基础上开发,因此它具有 Java 的
“一处编写,随处运行,支持跨平台运行”的特点。
(2)有效性:JSP 的初始化仅在网络服务器首次加载时执行一次。在
处理某个新的请求时,只须调用其对应的服务方法。相对于每个请求都全
部加载一个完整的程序来说,这种方式是一种相当有效的技术。
(3)强大的可伸缩性和可扩充性:基于面向对象的语言(Java)开发,
2
并可在现有的面向对象基础上进行扩展,形成新的对象,可以更好地满足
用户的需求。
(4)JSP 是以 servlet 技术为基础,并对其进行对方的改进。利用跨
平台的 JavaBeans 组件,为业务逻辑模块与视图模块的分离提供了很好的
解决方案。
JSP 的劣势:
(1)为了达到其跨平台功能以及极度的伸缩能力,极大的提高了其的
复杂性。整合 Java 系统中的 JRE,JDK,J2EE,EJB 等多种组件,这就需要
拿出部分精力来学习,这样才能更加灵活地对其加以运用。
(2)内存需求加大。
(3)JSP 的运用需要掌握一定的 Java 知识。
(4)程序调试起来异常复杂,可能某些细节问题都会影响整个系统运
行。
2.2.1 B/S 介绍
2.2 B/S
B/S 体系结构即浏览器和服务器结构。该结构是基于传统 C/S 体系结构
的改进。其体系结构由 Web 服务器、浏览器、数据库服务器三个层次组成,
其中通过浏览器跟后台交互,一般情况下浏览器只具有展示功能,业务逻
辑交于后台处理。Web 服务器位于业务层,对于用户传过来的具体请求进行
处理,并将处理结果反馈给用户,同时它也是数据库跟浏览器交互的桥梁。
服务器根据用户请求对数据库数据进行相应的操作[错误!未找到引用源。]。
B/S 体系结构系主要部分安装及维护全在服务器端进行,用户仅需要网
路通畅的浏览器就可以运行系统的全部功能模块,从而避免了安装大型客
3
户端所带来的麻烦,用户不需要安装所有的组件,降低了客户端电脑的配
置需求,与此同时也降低了系统维护与升级的成本和工作量。
2.2.2 B/S 体系结构的优势与劣势
B/S 结构优势:
(1)支持客户端跨平台操作
由于 B/S 结构以浏览器作为系统功能的使用接口,各种操作系统、数据
库管理系统都可以通过统一的协议和标准完全集成在一个 B/S 结构中,从
而为用户提供统一的信息服务界面。
(2)软件和硬件成本降低
使用 B/S 结构的系统,用户只需要在自己的电脑上配置 Web 浏览器就
可以对服务器进行访问,从而方便地使用系统提供的各项功能,极大节省
了用户的系统开销和各项成本。此外,B/S 结构系统对客户端和服务端的操
作系统没有具体的要求,因此,许多系统的服务器端选择使用免费的 Linux
操作系统,大大降低了服务提供方的成本。
(3)维护和升级方式简单
基于 Web 的 B/S 系统结构的主要特点就是它把系统管理程序装在服务
器端,维护人员只需要管理服务器,不必去考虑客户端的相关维护工作,
极大方便了系统的升级和维护工作。
B/S 结构劣势:
尽管 B/S 体系结构具有诸多优点,但它对系统的服务端配置也提出了
一定的要求。B/S 结构系统的核心集中在服务器端,服务器运行负荷较重,
服务器一旦“崩溃”,将会带来不可估量的严重后果。因此,对于服务器端
需要添加许多必要的措施,这样大大提高了运营成本,增加了许多不必要
的支出。
4
2.3 SSM 框架
SSM 框架是 Spring MVC ,Spring 和 MyBatis 框架的整合而成,采用标
准的 MVC 模式,该框架将系统划分为视图层,控制层,业务层,持久层四
部分,运用 spring MVC 框架处理请求的转发和视图管理,Spring 框架对业
务对象进行管理,采用 MyBatis 框架对数据对象进行持久化操作[错误!未找到引用源。]。
2.3.1 Spring
Spring 是由 Rod Johnson 创建,用于解决企业应用开发的复杂性而创
建成熟的开源框架。Spring 使用基本的 Java Bean 来完成以前只可能由 EJB
完成的事情。然而,Spring 的用途不仅限于用于服务后台的开发。从软件
可测试性和高内聚、松耦合的角度而言,任何运用该框架的 Java 应用都可
以从中受益。简单来说,Spring 是一个轻量级的控制反转(IOC)和面向切面
(AOP)的容器框架[错误!未找到引用源。]。Spring 架构如图 2-1 所示:
图 2-1:Spring 架构
Spring 优势:
(1)Spring 提供了一种管理对象的方法,可以把中间层对象有效地组织
5
起来。一个完美的框架“黏合剂”。
(2)养成面向接口的编程习惯,使代码结构更加清晰。
(3)采用了分层结构,可以增量引入到项目中。
(4)目的之一是为了写出易于测试的代码。
(5)非侵入性,应用程序对 Spring API 的依赖可以减至最小限度。
(6)一致的数据访问介面。
(7)一个轻量级的架构解决方案。
2.3.2 Spring MVC
通过策略接口,Spring MVC 框架是可配置的,而且包含多种视图技术,
例如 Java Server Pages(JSP)技术、Velocity、Tiles、iText 和 POI。
Spring MVC 框架并直接使用的视图,因此不会强迫开发者使用 固定的视
图技术。Spring MVC 分离了控制器、实体对象、过滤器以及处理程序对象
的角色,这种分离使得程序耦合度降低。
Spring MVC 工作原理:
(1)客户端发送请求到 DispacherServlet(分发器)
(2)由 DispacherServlet 控制器查询 Hander Mapping,找到处理请
求的 Controller
(3)Controller 调用业务逻辑处理后,返回 ModelAndView
(4)DispacherServlet 查询视图解析器,找到 ModelAndView 指定的
视图
(5)最后将请求结果显示到客户端
Spring MVC 流程如图 2-2 所示:
6
Spring MVC 优点:
图 2-2:Spring MVC 流程
Spring MVC 是一个典型的 MVC 模式的框架,而不像 struts 等都是变种
或者不是完全基于 MVC 系统的框架,对于初学者或者想了解 MVC 的人来说
是非常必要的!其次,它跟 tapestry 一样是一个纯正的 servlet 系统,这
也是它相对于 tapestry 和 struts 所具有的优势。而且框架本身属于 Spring
家族对于 Spring 来说具有更好的兼容性。
2.3.3 MyBatis
MyBatis 是一款优秀的持久层框架,它支持定制 SQL、存储过程以及高
级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取
结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将
接口和 Java 的 POJOS(Plain Old Java Objects,普通的 Java 对象)映射
成数据库中的记录。MyBatis 架构如图 2-3 所示:
7
图 2-3:MyBatis 架构
每个 MyBatis 应用程序主要都是使用 SqlSessionFactory 对象的,通过
SqlSessionFactoryBuilde 来 生 成 所 需 的 SqlSessionFactory 对 象 。
SqlSessionFactoryBuilde 可以通过 XML 文件配置然后交给 Spring 来管理,
也可以通过 new 关键字来初始化所需对象。
MyBatis 优点:
(1)简单易学:框架本身很小且内容相对简单。且不存在第三方依赖,
只要导入两个必要 jar 文件并且配置几个简单的对应 SQL 映射文件,就可
以操作和使用该框架。通过阅读官方文档和源代码,可以较熟练的操作该
框架。
(2)灵活:MyBatis 不需要对现有的应用程序或者数据库设计强加多余
的操作。 SQL 配置在对应的 XML 文件里,该方式便于统一管理和优化。通
过其自动生成工具生成的 SQL 可以基本上满足我们所需的所有数据库基本
操作,一些相对复杂的业务处理可以自定义所需的就可以。
(3)解耦:通过提供 DAO 层,将具体业务逻辑和数据访问逻辑分离,降
低了个各层间的耦合性,使程序结构更加清晰,更易维护测试。SQL 和代码
8