[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. ...
随机推荐
- 安装mysql时提示The host 'xxx' could not be looked up with resolveip的解决办法
1.首先用cat查看/etc/hosts文件,会显示以下内容: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.loca ...
- Angular单页应用&AngularJS内部实现原理
回顾 自定义指令 登录后获取登录信息session 首先在登录验证的时候保存一个user 在学生管理页面中运用ajax调用获取到登录的用户信息 对注销按钮添加点击事件:调用ajax在表现层给user赋 ...
- nginx和apache的特点优点和使用场景
Apache Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. Apache源于 ...
- 【6】Laravel5.1的migration数据库迁移
查看Laravel5.1的目录 当你配置好数据库后,在命令行执行下边的操作 php artisan migrate 打开数据库会发现,我们的数据库多了四个表,神奇吧! 打开任意一个migration查 ...
- 如何向java后台的对象中传数组
1.后台对象的参数需要是是list对象 /* * copyright : GLOBALROAM Ptd Ltd * VmCreateInfo.java * Author: * zhangpengyan ...
- php中对象的串行化
我们大家有知道PHP串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据.文章这里就PHP串行化为大家详细的介绍.你在 ...
- DataTable 导出Excel 下载 (NPOI)
public class ExcelHelper { public void DownLoadExcelNew(System.Data.DataTable data, Hashtable h, ...
- ecstore使用paypal支付显示不支持此支付
问题描述: ecstore使用paypal支付,下单结算时显示不支持此支付. 问题和代码分析: 1.首先必须要保证默认货币是paypal支持的货币,paypal目前支付 ["supportC ...
- 文成小盆友python-num2 数据类型、列表、字典
一.先聊下python的运行过程 计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程.这个过程分成两类,第一种是 ...
- 安装python3.4
1.http://www.python.org下载适合自己机型的镜像文件 2.一路“next”到底,安装python到C盘上 3.计算机-属性-高级系统设置-环境变量,将刚刚安装的python路径添加 ...