Java Web基础教程(二)开发基础

前言

Java web是一种基于B\S(浏览器\服务器)架构的网络应用程序的技术实现。这种结构的Web应用程序被大量的企业级应用所采用。随着Web应用程序的规模不断扩大,传统的Web开发模式无法满足日渐复杂的业务需要,所以出现了更加合理更加先进的MVC开发模式。随之而来的也出现了一系列的基于MVC模式的开发框架,Struts框架、Spring MVC 等。

1. Web 技术的发展

1. 第一阶段 静态网站

Web技术出现伊始,由于硬件技术的限制大多数Web应用都是基于静态的HTML页面,有部分动态Web应用运行起来也是没有现在这么流畅的。静态页面只能起到信息发布的作用,它们并不具备交互能力。

2. 第二阶段 动态网站

没有交互能力的应用程序,是绝对不能流行起来的。有很多专家提出了不同的实现动态Web程序的解决方案。其中最早提出的就是通过CGI(通用网关接口),其中最重要的特点就是可以通过CGI技术访问数据库,因为几乎所有的Web应用都需要对数据进行存取。CGI技术虽然很强大,但是它也有自己的不足之处,比如实现CGI程序的技术难度比较大,代码不易维护等。

3. Servlet 实现动态网站

为了解决以上的这些历史遗留问题,Java 在1999年推出了自己的动态Web技术Servlet
Servlet有如下技术优点

  1. 基于Java技术实现
  1. 跨平台
  2. 可以访问众多数据库
  3. 多线程
  4. 网络
Servlet的请求响应流程
  1. 浏览器向服务器发送请求
  2. Web服务器接受请求
  3. 将请求提交给Servlet引擎
  4. Servlet引擎调用Service方法
  5. 返回响应给客户端(相应的代码)

Servlet是整个JavaWeb技术的核心,也就是说Servlet可以实现全部的动态JavaWeb程序的功能。但是如果客户端页面的逻辑非常复杂的话,编写Servlet的工作量是非常大的,而且代码不易维护。

4. JSP的出现

为了解决这个问题实现页面显示代码编写与控制逻辑代码编写的分离,JSP技术就这样诞生了。
JSP技术可以在同一个页面中将客户端代码与服务端代码进行混合编程,可以直接使用Java代码作为服务端脚本。

sun公司为了充分利用已有的Servlet技术,在第一次访问JSP页面时,JSP页面会被JSP引擎翻译成Servlet,然后再交由Servlet引擎来进行处理。

JSP页面的请求、相应和运行流程

2. Java Web 技术

1. Java Web 的基本构成

一个典型的Java web程序中应该包含以下元素,将它们打包在一起,并在Web容器中运行。

  • Servlet
  • Java Server Pages
  • JSP标准标签(JSTL)和定制标签
  • 在Web应用程序中使用的Java类
  • 静态的文件,包括HTML、图像、JavaScript和CSS
  • 描述Web应用程序的元信息(web.xml)

2. Java Web 的目录结构

标准目录结构
  1. untitled3 是这个工程的根目录
  1. web 目录下存放资源文件 例如 图片目录、CSS目录、JS目录、jsp文件等
  2. WEB-INF 目录下 存放 工程的配置文件 web.xml 和 lib 库文件

3. Java Web 的配置文件

配置文件是所有Java web应用程序的支柱。我们这里介绍的文件主要是位于WEB-INF目录下的web.xml文件。除此之外在Tomcat\conf目录下也有一个web.xml文件,这个文件是对于Tomcat服务器的配置文件,一种全局的配置。
配置文件可以进行如下的相关配置👇

  1. Servlet Context 初始化参数
  1. Session配置
  2. Servlet/JSP定义
  3. 标签库引用
  4. MIME类型映射
  5. 欢迎页
  6. 错误页
  7. 安全信息

3. MVC 模式和 MVC框架

经过广泛的使用Servlet/JSP技术,开发者们渐渐发现了Servlet与JSP技术的弊端

HTML代码、JavaScript、CSS和动态JSTL、java代码混合在一起不利于后期的维护,为了解决好这个问题将页面与服务端代码分离,这就是MVC模式的基本思想之一。

1. JSP Model 1 与 JSP Model2

  • JSP Model1

Mode1由三部分组成

  1. 客户端浏览器
  2. 服务端程序(JSP/Servlet)
  3. 数据库
Model1的构架

这种结构也有它的不足之处,没有做到进一步的代码层次分离。

  • JSP Model2

MVC是模型(Model)-视图(View)-控制器(Controller)的简称

以下就是交互图示

Model2的构架

MVC模式可以实现最大限度的代码重用

2. Web应用中的基础服务

在web应用中有许多的基础功能可以在很多页面进行复用,我们进行以下总结。

  • 页面导航:这个功能最好在控制器中实现
  • 页面布局:通过标准方法来实现页面布局
  • 数据验证:最好通过集合框架来实现对数据的验证
  • 业务逻辑重用:把能够重复利用的业务逻辑从系统中分离出来,形成一系列独立的组件,这样重用起来就非常容易了。

3. 什么是MVC模式

MVC模式将一个应用分成3部分:Model(模型)、View(视图)、Controller(控制器),这3个部分应该尽量少的耦合,从而可以提高应用程序的可扩展性和可维护性。

  • 多个视图可以对应多个模型
  • 可以通过模型为视图提供不同的数据
  • 可以在控制器中添加权限验证来限制用户对敏感资源的访问
  • 降低各层次之间的耦合性,有利于对系统中各层进行扩展

4. 常用的MVC框架

  • Struts 1.x

  • Struts 2.x

  • Spring MVC

总结

我们了解了web技术的历史及其发展路程,了解了在web应用开发中所必需的内容,了解到在多人开发中MVC模式所起到的重要作用。

下节预告

  1. HTML
  2. CSS
  3. JavaScript
  4. Ajax

敬请期待哦~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,785评论 0 11
  • 这部分主要是与Java Web和Web Service相关的面试题。 96、阐述Servlet和CGI的区别? 答...
    杂货铺老板阅读 1,397评论 0 10
  • 我在杂乱的菜市场里行走着,突然间被她吸引了,一身金黄的皮毛,毛发是一根一根的,好似淡金色的头发,又像是一株株禾苗,...
    Zhangyousheng阅读 167评论 0 0
  • 终于可以躺下 躺在铺满月光的床上 月光很舒展 不像我 心里跌跌荡荡 我呼一口气 拍拍胸口 像是给些安慰 月光躺...
    m末子m阅读 127评论 0 1