[HeadFirst-JSPServlet学习笔记][第二章:高层概述]
第二章:高层体系结构
容器
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学习笔记][第二章:高层概述]的更多相关文章
- 《DOM Scripting》学习笔记-——第二章 js语法
<Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...
- The Road to learn React书籍学习笔记(第二章)
The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...
- [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”
[HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...
- c#高级编程第七版 学习笔记 第二章 核心c#
第二章 核心C# 本章内容: 声明变量 变量的初始化和作用域 C#的预定义数据类型 在c#程序中使用条件语句.循环和跳转语句执行流 枚举 名称空间 Main()方法 基本的命令行c#编译器选项 使用S ...
- 《Python基础教程(第二版)》学习笔记 -> 第二章 列表和元组
本章将引入一个新的概念:数据结构. 数据结构是通过某种方式阻止在一起的数据元素的集合,这些数据元素可以是数字或者字符,设置可以是其他数据结构. Python中,最基本的数据结构是序列(Sequence ...
- Java 学习笔记 ------第二章 从JDK到IDE
本章学习目标: 了解与设定PATH 了解与指定CLASSPATH 了解与指定SOURCEPATH 使用package与import管理类别 初步认识JDK与IDE的对应关系 一.第一个Java程序 工 ...
- 交换机安全学习笔记 第二章 MAC地址泛洪攻击
本文为书中相关知识的摘要,由于书中以思科设备为配置依据,所以笔记中补充了华为.H3C设备的相关配置.华为设备配置参考华为S2352EI 产品版本:V100R005C01文档版本:02. H3C配置参 ...
- 鸟哥linux私房菜学习笔记 第二章知识点
2.1 linux一切皆文件 2.2 磁盘分区 磁盘即文件 2.2.1 磁盘连接的方式与设备文件名的关系 模糊 1.正常的实体机器大概使用的都是 /dev/sd[a-] 的磁盘文件名,至于虚拟机环境下 ...
- 《机器学习实战》学习笔记第二章 —— K-近邻算法
主要内容: 一.算法概述 二.距离度量 三.k值的选择 四.分类决策规则 五.利用KNN对约会对象进行分类 六.利用KNN构建手写识别系统 七.KNN之线性扫描法的不足 八.KD树 一.算法概述 1. ...
随机推荐
- telnet IP不通/sybase central工具无法连接到数据库
问题描述:客户端sybase central工具无法连接到数据库 服务端操作系统:RHEL5.8_x64,安装sybase-ASE15.7,端口号4112 IP:192.168.1.220 hos ...
- EF加载实体的方式
原文:Loading Related Entities EF加载数据的方式: 预加载 eager loading 延迟加载 lazy loading 显示加载 explicit loading 预先加 ...
- BootStrap-validator 使用记录(JAVA SpringMVC实现)
BootStrap 是一个强大的前面框架,它用优雅的方式解决了网页问题.最近正在使用其开发网站的表单验证,一点体会记录如下: 注:本文中借鉴了博客Franson 的文章<使用bootstrapv ...
- android Log.isLoggable步骤的使用
原文地址: http://www.cnblogs.com/maxinliang/p/4024442.html android Log.isLoggable方法的使用 android 动态控制logca ...
- Python爬虫——抓取贴吧帖子
抓取百度贴吧帖子 按照这个学习教程,一步一步写出来,中间遇到很多的问题,一一列举 首先, 获得 标题 和 贴子总数 # -*- coding:utf-8 -*- #!/user/bin/python ...
- DOM之节点|属性
1.查询文档的一个或多个元素有如下方法 a. 用指定的id属性:(若一个文档中有两个相同的id,只会选择第一个;在低于IE8的IE中,getElementById()对匹配元素的ID不区分大小写,而且 ...
- Python Set集合,函数,深入拷贝,浅入拷贝,文件处理
1.Set基本数据类型 a.set集合,是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set o ...
- 文件系统:介绍一个高大上的东西 - 零基础入门学习Python030
文件系统:介绍一个高大上的东西 让编程改变世界 Change the world by program 接下来我们会介绍跟Python的文件相关的一些十分有用的模块.模块是什么?不知大家对以下代码还有 ...
- js拖拽进度条
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4.aspx. ...
- CSS3----background:-webkit-gradient()渐变效果
input[type="button"], input[type="button"]:visited { background: -webkit-gradien ...