JavaWeb(一)
来源:互联网 发布:花生壳域名建站 编辑:程序博客网 时间:2024/05/16 11:42
JavaWeb
- 工厂模式
将对象的创建和对象的使用分开进行。其目的是解藕。 - HTTP
超文本传输协议。
http遵循请求/响应模式
http协议是一种无状态的协议:当客户端喝服务器之间完成了数据交互之后,连接会断开,以释放服务器的内存资源。这样服务器就无法保存客户端的状态。会认为每次请求的用户都是新用户。
http协议的端口为80 - http处理流程
客户端和web服务器建立连接
客户端发送HTTP请求
服务器端接收客户的HTTP请求,生成HTTP响应回发
服务器端关闭连接。客户端解析回发响应,恢复页面。 - http请求信息组成:
请求头:以键值对方式描述客户端的状态
请求行:描述请求方式、请求的URL、http协议的版本
空行:标识请求头的结束和消息体的开始
消息体(只针对post):描述客户端发送给服务器的表单数据。 - MIME类型
用于描述客户端喝服务器之间交互内容的类型。客户端可以根据MIME类型,来决定以什么应用程序来打开和执行。
text/html:网页格式数据
image/jpeg:图片格式数据
text/xml:xml格式数据 http响应信息的组成
状态行:描述http协议版本、状态码、状态描述
响应头:以键值对方式描述服务器相关的状态
空行:标识响应头的结束和消息体的开始
消息题:描述服务器发送给客户端的内容传统的WEB服务器产生响应时,只能产生静态的html信息,极大影响响应信息的灵活性。解决方案是,在web服务器之后加上辅助应用。辅助应用可以将请求信息处理后,以数据库为媒介保存处理结果,然后动态产生响应信息。
- CGI技术
称为通用网关接口,它是辅助应用的一种解决方案。可以用多种语言编写。当客户端向服务器发送请求后,会开启外部程序来处理该请求。由于每个外部程序是进程,每次开启都会占用独立内存空间。所以,会极大的耗费服务器的内存资源,也不能接收太多的请求。 - Java实现方式
java是利用web容器加servlet方式实现辅助应用。由web容器做一些底层操作,比如,流的解析,线程的控制,数据的封装等。同时,预留Servlet接口,交给开发者书写业务逻辑。这样开发者就可以将主要精力放在业务实现上,而不用为底层操作编写代码。同时,web容器利用多线程解决多任务,可以同时接收更多请求。 - web容器
web容器负责管理和运行Servlet。web容器主要是用于容器中的应用程序组建(servlet、jsp)提供一个环境,使servlet、jsp直接跟容器中的环境变量交互。这样,我们就可以把注意力放在用servlet实现业务逻辑上,而不必关注其他系统问题。 - 容器对Servlet的支持包括
- 通信支持(将请求信息和响应信息封装成请求对象和响应对象)
- Servlet生命周期管理(产生Servlet和销毁Servlet,并调用Servlet相关的方法)
- 多线程支持(线程创建、线程启动、线程运行、线程同步)
- JSP支持(jsp引擎编写)
- 处理安全性
- Servlet规范
规范只定义了一个容器必须实现的标准功能 Servlet容器由很多不同的实现
Tomcat
Jboss
WebLogic
WebSphere
Oracle9i AS
WEB应用程序
WEB—INF目录中的内容是不能被客户端直接访问的,存放一些比较隐秘的信息- classes:开发者书写业务类编译生成的class文件
- lib:用于存放web应用程序中所使用的jar文件
- web.xml:用于web组件的注册
*.html
*.jpg
*.css
*.js
tomcat的目录结构
bin:用于存放tomcat中的可执行文件。其中startup.bat把用于启动tomcat。shutdown.bat用于关闭tomcat。
web服务器、web容器和web应用服务器的区别
- web服务器:主要作用于开启服务器,监听端口,请求接收、产生响应,只是只能产生静态html响应信息,极大影响响应信息灵活性。
- web容器:是一种辅助应用的一种解决方案。允许将请求信息处理完成后,动态产生响应信息
- web服务器+web容器,合称web应用服务器。
Servlet请求路径问题
在form的action属性中,直接写Servlet的url路径。默认是在当前目录下查找。一旦网页在字目录中,那么会在提交路径中加上字目录的名称。可以通过../回到上一级目录。
如果目录比较深,频繁用../很繁琐,而且移植性不好。可以在url路径中,以/开始,表示会到webapps跟目录,再加上部署名。再书写- servlet请求路径。
servlet的URL路径书写方式:
1.精确映射/abc 表示职能以/abc路径查找servlet
2.扩展路径 *.action 表示凡事以.action结尾的请求,都能访问servlet
3.路径映射 /abc/* 表示凡事以/abc/路径下的请求都能访问servletservlet生命周期
- 启动tomcat,读取conf/server.xml文件,以确定启动端口和web应用程序的部署目录。
- 读取部署名录中所有的web应用程序中的web.xml,并解析。所以一旦有一个web应用程序中的web.xml书写错误,那么解析失败,从而抛出解析异常。正确解析web.xml,可以确定部署的web组件信息。
- 加载并实例化servlet。加上标签。如果该标签的值为0或正数,表示web容器一启动就实例化。如果该标签不写或为负数,表示第一次访问再实例化。
- 调用init()方法完成初始化。
- 当请求到达后,调用service()完成业务。
- 销毁阶段,调用destory()完成清理工作。
在整个生命周期中,1、2、3、4、6都只执行一次。只有5才是每次请求都会执行。而且servlet对象只有一个,是单实例多线程的类。
- 在注册servlet时,可以加入
aaa
111
进行servlet初始化信息的描述。可以通过servletConfig配置对象中的getInitParameter()根据参数名称,得到参数值。但该出实话参数职能在当前servlet中使用,不能在别的servlet使用。
0 0
- JavaWeb(一)
- javaweb笔记一
- javaWeb 复习系列(一)
- javaWeb笔记(一) 反射
- (一)JavaWeb基础知识
- JavaWeb总结一
- JavaWeb概述(一)
- JavaWeb开发入门(一)
- JavaWeb---过滤器Filter---(一)
- JavaWeb基础笔记(一)
- JavaWeb学习一
- javaweb 登录功能(一)
- javaWeb核心技术一
- JavaWeb学习总结(一)
- JavaWeb总结一、入门
- javaWeb学习一
- javaweb学习日志一
- JavaWeb学习(一)
- 周志华《机器学习》笔记:第2章 模型评估与选择
- GeekBand第九周笔记
- Android事件分发机制
- 安装Hadoop 2.x时主机名不能包含下划线
- Android ShapeDrawable学习
- JavaWeb(一)
- 1039. Course List for Student (25)
- MongoDB的C语言编程实例
- 欧拉路径
- 嵌入式系统 Boot Loader 技术内幕(2)
- 战争论 —— 蓝田之战
- 嵌入式系统的动态电源管理架构
- Find K Pairs with Smallest Sums
- 流媒体技术基础-流式传输基本概念(二)