当前位置: 首页 > news >正文

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

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

转载:Future魏来 
 

前言

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

敬请期待哦~

转载于:https://www.cnblogs.com/nelsen-chen/p/9050350.html

相关文章:

  • ActiveMq启动后,输入网址出现HTTP ERROR: 503错误的问题
  • 好代码是管出来的——浅谈.Net Core的代码管理方法与落地(更新中...)
  • win10应用程序添加到开机启动项的两种解决办法
  • SSL-ZYC 2432 面积最大
  • 剑指offer-用两个栈实现队列
  • 简单介绍帧动画
  • 浮动菜单
  • 2018.5.20
  • Xpath,XQuery,DTD
  • FLINK流计算拓扑任务代码分析二
  • 坑爹的阿里云
  • ubuntu安装配置搜狗拼音输入法
  • CS294-112深度增强学习课程(加州大学伯克利分校 2017)NO.3 Learning dynamical system models from data...
  • ubuntu 16.04 python版本切换(python2和python3)
  • Window下安装 hmmlearn 问题: Microsoft visual C++ 14.0 is required
  • 时间复杂度分析经典问题——最大子序列和
  • 《Java编程思想》读书笔记-对象导论
  • Android开源项目规范总结
  • CAP理论的例子讲解
  • Git的一些常用操作
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • magento2项目上线注意事项
  • Vultr 教程目录
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 微信公众号开发小记——5.python微信红包
  • 一天一个设计模式之JS实现——适配器模式
  • Java数据解析之JSON
  • 我们雇佣了一只大猴子...
  • 选择阿里云数据库HBase版十大理由
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十六)Flask之蓝图
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (学习日记)2024.01.19
  • (转)iOS字体
  • (转)大型网站架构演变和知识体系
  • .htaccess配置重写url引擎
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .Net mvc总结
  • .net 使用ajax控件后如何调用前端脚本
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET轻量级ORM组件Dapper葵花宝典
  • .Net小白的大学四年,内含面经
  • .Net中ListT 泛型转成DataTable、DataSet
  • @requestBody写与不写的情况
  • [ C++ ] template 模板进阶 (特化,分离编译)