[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. ...
随机推荐
- WebApi2官网学习记录---Media Formatters
Web API内建支持XML.JSON.BSON.和form-urlencoded的MiME type. 创建的自定义MIME类型要继承一下类中的一个: MediaTypeFormatter 这个类使 ...
- c# 取得扩展名
string KZM=files[0].FileName.Substring(files[0].FileName.LastIndexOf(".") + 1);
- oracle数据库连接
///宁采花 8:37:39 /// <summary> /// 获取数据链接 /// </summary> /// <returns></returns&g ...
- 创建存储过程和函数【weber出品必属精品】
一.什么是存储过程和函数 1. 是被命名的pl/sql块 2. 被称之为pl/sql子程序 3. 与匿名块类似,有块结构: 声明部分是可选的(没有declare关键字) 必须有执行部分 可选的异常处理 ...
- dispatch_async 与 dispatch_get_global_queue 的使用方法
GCD (Grand Central Dispatch) 是Apple公司开发的一种技术,它旨在优化多核环境中的并发操作并取代传统多线程的编程模式. 在Mac OS X 10.6和IOS 4.0之后开 ...
- poj3264 线段树
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 44121 Accepted: 20715 ...
- OpenCV——ANN神经网络
ANN-- Artificial Neural Networks 人工神经网络 //定义人工神经网络 CvANN_MLP bp; // Set up BPNetwork's parameters Cv ...
- (摘) MDI登陆问题
MDI编程中需要验证用户身份,那么登陆窗口就需要在验证密码后进行相关的隐藏处理. (1)隐藏登陆窗口(登陆窗体作为启动) 登陆按钮事件:this.Hide();//隐藏登陆窗口MDI_Name M = ...
- HDU 4009 Transfer water
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4009 题意:给出一个村庄(x,y,z).每个村庄可以挖井或者修建水渠从其他村庄得到水.挖井有一个代价, ...
- Linux下编译第三方库的问题
因为各个Linux发行版之间的差异还是挺大的,有一些预安装在系统上的基本库是不一样的(不仅仅是版本,有一些是有和无的区别). 那么问题来了: 编译第三方库./configure的时候一般我们不会定制那 ...