第二章:高层体系结构

容器

1 什么是容器?

servelet没有main()方法。它们受控于另一个Java应用,这个Java应用称为容器(Container)

Tomcat就是这样一个容器。Web服务器应用(如Apache)得到一个指向servlet的请求,服务器不是把这个请求交给servlet本身,而是交给部署该servelet的容器。由该容器向servlet提供HTTP请求和响应,而且要由容器调用servlet的方法(如doPost()或doGet())

2 容器能提供什么?

2.1 通信支持

利用容器,能轻松的让servlet与Web服务器对话。你不用自己建立ServerSocket,监听某个端口,创建流等等。容器知道自己与Web服务器(如Apache)和你自己的Web代码之间的API。你要考虑的只是如何在servlet中实现业务逻辑

2.2 生命周期管理

容器控制着servlet的生与死。它会负责加载类,实例化和初始化servlet。调用servlet的方法,以及使servlet实例能够被垃圾回收。有了容器的控制,你就不用太多考虑资源管理

2.3 多线程支持

容器会自动地为它接收的每个servlet请求创建一个新的Java线程。针对客户的请求,如果servlet已经运行相应的HTTP服务方法,这个线程就会结束。不过还是需要考虑线程安全性。还是会遇到同步问题。

2.4 声明方式实现安全

利用容器,可以使用XML部署描述文件来配置(和修改)安全性,而不必将其硬解码写到servlet(或其他)类代码中,想象一下,不用去改你的Java源文件,和重新编译。就能管理和修改安全性配置。

2.5 jsp支持

容器把JSP代码翻译成Java。

3 容器如何处理请求?


4 servlet代码剖析

5 容器如何知道servlet

  • 使用部署描述文件xml把URL映射到servlet上

    • servelet

      • servlet-name servlet在部署文件中的名字
      • servlet-class 类名
    • servlet-mapping

      • servlet-name servlet在部署文件中的名字
      • url-pattern 映射的URL

实际代码:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<servlet>
<servlet-name>Chapter1-Servlet</servlet-name>
<servlet-class>Ch1Servlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>Chapter1-Servlet</servlet-name>
<url-pattern>/Serv1</url-pattern>
</servlet-mapping>
</web-app>

6 部署文件

1. 作用

主要:

  • URL 映射 servlet

其余:

  • 安全角色
  • 错误页面
  • 标记库
  • 初始化配置信息

2. 优点

  • 尽量少地接触已经测试过的源代码
  • 更容易维护动态安全信息,如访问控制列表和安全角色

MVC设计模式

1.何为MVC模式?

维基百科:

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

  • (控制器 Controller)- 负责转发请求,对请求进行处理。(servlet)
  • (视图 View) - 界面设计人员进行图形界面设计。(jsp)
  • (模型 Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。

2.为什么要用MVC模式

业务逻辑与表现分离

3.servlet&JSP世界中的MVC

  • 控制器

    从请求获得用户输入,并明确这些输入对模型有什么影响。告诉模型自行更新,并且让视图(JSP)能得到新的模型状态

  • 视图

    负责表示。它从控制器得到模型的状态(控制器把模型数据放在视图能找得到的地方)。另外,视图还可以获得用户输入,交给控制器

  • 模型

    实际的业务模型,系统只有这部分与数据库通信

认识

1. tomcat 就是所谓的容器

2. MVC 模式 M model V view C control

[HeadFirst-JSPServlet学习笔记][第二章:高层概述]的更多相关文章

  1. 《DOM Scripting》学习笔记-——第二章 js语法

    <Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...

  2. The Road to learn React书籍学习笔记(第二章)

    The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...

  3. [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”

    [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...

  4. c#高级编程第七版 学习笔记 第二章 核心c#

    第二章 核心C# 本章内容: 声明变量 变量的初始化和作用域 C#的预定义数据类型 在c#程序中使用条件语句.循环和跳转语句执行流 枚举 名称空间 Main()方法 基本的命令行c#编译器选项 使用S ...

  5. 《Python基础教程(第二版)》学习笔记 -> 第二章 列表和元组

    本章将引入一个新的概念:数据结构. 数据结构是通过某种方式阻止在一起的数据元素的集合,这些数据元素可以是数字或者字符,设置可以是其他数据结构. Python中,最基本的数据结构是序列(Sequence ...

  6. Java 学习笔记 ------第二章 从JDK到IDE

    本章学习目标: 了解与设定PATH 了解与指定CLASSPATH 了解与指定SOURCEPATH 使用package与import管理类别 初步认识JDK与IDE的对应关系 一.第一个Java程序 工 ...

  7. 交换机安全学习笔记 第二章 MAC地址泛洪攻击

    本文为书中相关知识的摘要,由于书中以思科设备为配置依据,所以笔记中补充了华为.H3C设备的相关配置.华为设备配置参考华为S2352EI 产品版本:V100R005C01文档版本:02.  H3C配置参 ...

  8. 鸟哥linux私房菜学习笔记 第二章知识点

    2.1 linux一切皆文件 2.2 磁盘分区 磁盘即文件 2.2.1 磁盘连接的方式与设备文件名的关系 模糊 1.正常的实体机器大概使用的都是 /dev/sd[a-] 的磁盘文件名,至于虚拟机环境下 ...

  9. 《机器学习实战》学习笔记第二章 —— K-近邻算法

    主要内容: 一.算法概述 二.距离度量 三.k值的选择 四.分类决策规则 五.利用KNN对约会对象进行分类 六.利用KNN构建手写识别系统 七.KNN之线性扫描法的不足 八.KD树 一.算法概述 1. ...

随机推荐

  1. MySql查看表信息

    SELECT TABLE_NAME, TABLE_COMMENT -- 指定信息列 FROM `information_schema`.`tables` A WHERE A.`TABLE_SCHEMA ...

  2. C# 操作 AppSettings节点

    1.实例 //1.简单获取内容 string value = ConfigurationManager.AppSettings["one"] as string; Console. ...

  3. DataSet与DataAdapter的关系

    DataSet 作用:DataSet,DataAdapter读取数据. 问:什么是DataAdapter?答:DataAdapter对象在DataSet与数据之间起桥梁作用 string strCon ...

  4. 【android】android调用模拟器超时问题

    问题如下: 解决方案: 1)重启连接桥 C:\Users\hacket>adb kill-server C:\Users\hacket>adb start-server或者 adb log ...

  5. Nmap官网中众多文档如何查看

    打开Nmap(nmap.org)官网后,会看多个关于文档的链接,熟悉之后会发现有三类,Reference Guide,Books,Docs.通过熟悉知道Doc是文档的入口,且下面是对Doc页面的翻译, ...

  6. css 完美替换图片

    1.css替换简单图标的展示方法 ;display:inline-block;position:absolute;left:11px;top:10px;border-right:6px solid t ...

  7. CSS3----background:-webkit-gradient()渐变效果

    input[type="button"], input[type="button"]:visited { background: -webkit-gradien ...

  8. Keil C51处理可重入函数问题的探讨

    在程序设计中,变量具体可以分为四种类型:全局变量.静态全局变量.局部变量.静态局部变量.这几种变量类型对函数的可重入产生的重大的影响,因为不同的编译器采用不同的策略. 针对51的存储区有限,keil ...

  9. elasticsearch 性能测试

    最近花很大的经历来做性能测试,把结果整理到了ppt中,可能有个别地方不准,但是可以看看一个趋势. 主要分为两部分,一部分是写入elasticsearch性能,一部分是查询测试,elasticsearc ...

  10. Django学习笔记(精简版)

    dos:安装:python setup.py install 环境变量:D:\Python27;D:\Python27\Lib\site-packages\django\bin; 转到创建的目录:dj ...