JAVA WEB基础理论

java WEB:服务器端编程

OSI参考模型(7层) -- TCP/IP协议(4层,应用程序层http协议FTP协议,传输协议tcp/udp,网络协议ip,数据链路层)

一、TCP/IP协议
应用层:应用程序位于应用层,应用程序和TCP/UDP打交道;【FTP、HTTP】
传输层:TCP/UDP协议
/* ACK=0为单方面发起,ACK=1双方建立连接,SYN=1代表已经发起了链接 */
网络层:IP层,
数据链路层+物理层:以太网,ATM,硬件的接口;
-------------------物理传输介质:WIFI、网线;------------------

二、TCP三次握手机制:
第一次请求,客户端主动发送链接|建立socket,发送ACK=0,SYN=1,SEQ:随机码|;
第二次响应:服务器端被动响应,建立sever Socket,回复(ACK=1,SYN=1,客户端随机码+1+服务器产生随机码)
第三次发送消息:将服务器端随机码+1;
【图示】
客户端(client) 服务器端(server被动打开)
1步创建socket()----------------------------->ACK=0,SYN=1,seq=X;
2步:server回应《--------------------------- SYN=1,ACK=1,ack=x+1,seq=y
3步:服务器监听端口-----------------------------》ACK=1,seq=x+1,ack=y+1; 服务器知道当前客户连接有效
ACK:表示响应; SYN:表示建立连接 ack:确认码 seq:顺序码
具体每部建立过程:
第一步:创建socket()
connect()连接指定的计算机端口(ip、端口)
send() 往socket()写入信息;
关闭socket();
第二步:server
server scoket();
bind(),绑定socket和端口号
listen()监听端口
accept()接受客户端传递过来内容
读取字符
关闭

三、B/S架构下如何实现网络通信:
B/S与C/S架构的区别:B/S没有socket,没有底层,只有浏览器;依照http协议提供的服务支持,将需要网址的地址传给 http协议,在host里面找,host找不到找DNS找到IP地址,通过IP找到唯一的服务器,再找到服务器的端口,找到请求的地址,并通过http将找到的地址内容在 消息体中传输回去;将拿回来消息体放在浏览器的客户端就被解析出来了;
HTTP:超文本传输协议(文本以外的音频,视频,图片);
1、是计算机网路通信中的一种规则,属于应用层的协议; 端口号:80; 【补充】:FTP:文件传输协议,端口号:21.
2、是 无状态的协议,客户机和服务器之间不需要建立持久的连接,通信完就断开;
3、 遵循请求响应模型,所有的通信都构造在请求响应模型中,客户端和服务器交换数据;
HTTP版本号:1.1 默认连接是一直保持的(keep-alive),访问一个url,发送多次请求,只依靠一个TCP连接就可以了;
HTTP的工作流程
1、客户端的服务器建立连接:new Socket()
2、客户端发送请求
拦截器(HTTP Analyzer):得到申请信息;所有的设备状态,登录状态;
包含:请求行,请求的方法(HTTP版本)
请求头,包含HTTP头传递的元信息。告诉服务器客户端的一些信息;
空行,发送回车符或者空格,区分请求头和消息体
消息体,存放用户传输的内容(用户名和密码),只针对POST请求;
【细节】:GET请求放在请求行;
3、服务器响应内容
包含:状态行:http版本和状态;
响应头:内容描述,长度,时间戳,服务器的信息
空 行:回车符或者空格;
消息体:响应的内容;
4、服务器关闭连接,客户端解析服务器发送回来的内容;

早期网页使用的服务器端,在服务器存储所有的静态页面,要用什么调什么;更改维护麻烦;

CGI程序:--实现动态网页
早期的的动态网页:将网页架构放在服务器,将内容放在数据库,动态将数据库的内容进行更新;
在申请网页中将url改为申请动态网页,将网页发给一个小程序 CGI程序,小程序将网站需要的动态数据从数据库提取出来,然后把这些数据传给登录html,实现网页的动态更改;
优点:各种语言都可以使用;
缺点:对服务器的内存消耗很大,每次访问都会创造一个进程( 多进程程序);限制了一个服务器可以支持的并发CGI用户数量;
【解决方案】:1、启动服务器进程一次,处理所有的应用请求 (WEB容器-Servlet)解决用户访问的并发量问题;
2、分布式服务器,成都2-3个服务器,广州用一些服务器,所有服务器相互联网;3个备用服务器,上百个服务器同时工作,需要维护的时候,关掉单个服务器;

Servlet:--实现高效率高并发的动态网页,创建健壮的环境;

javax.servlet.http.*;包
特点
1、servlet是常规的java代码,代码中用了一些新的API,不涉及新的语法
2、servlet代码中有我们不熟悉的重要语句;servlet不属于J2SE,有单独的规范;
3、servlet对标准类(Httpservlet)进行了扩展
4、servlet没有main 方法;是一个多线程程序;
--- web容器负责运行管理servlet;并提供以下支持和功能:
通信支持、生命周期支持、多线程支持、JSP(实现动态网页技术)支持、处理安全性;
servlet 主要任务:【处理动态网页内容】
读取客户端发送的显示和隐式数据
生成结果功能 完成网页生成
向客户端发送显示数据(文档),隐式数据(HTTP响应数据);
servlet总结:
1、运行web服务器或者应用服务器上面的一个java程序,主要用于生成动态内容
2、servlet是与平台无关的java程序
WEB容器总结:
1、servlet受控于另外一个java应用程序,称为web容器;
2、WEB容器给servlet、JSP提供运行环境,使得他们直接跟容器中的环境变量交互,就把注意力放在Servlet实现业务逻辑,不必关注其他系统问题;
3、web容器主要是web服务器实现的;【针对http为web服务器,针对Servlet为web容器】
4、web容器/web服务器分类:tomcat-WEB容器/IIS微软的、apache、jboss-Ejb容器、weblogic-分布式功能、;
tomcat
1、源于apahce基金会里面的一个项目,他是一个优秀的web容器;又是一个http服务器
2、开源并且稳定,高效,免费;

开发环境工具:Myeclipse 2014 + tomcat7+JDK1.7

tomcat目录介绍:
bin目录:开启 tomcat(startup)关闭 tomcat()的脚本文件;
conf目录: tomcat的各种配置文件;xml文件做的配置;
lib:服务器支持的架包;
logs:日志,方便报错排查;
temp:存放临时文件(临时产生的数据);
webapps:存放web的应用程序,外界都能访问的web应用程序;
work:存放工作文件。主要是jsp生成的代码;

Myeclipse目录:
SRC:存放代码;
WebRoot文件夹内容是要放在服务器上的
html
CSS
image文件夹
WEB-INF,这个下面是不能被访问客户访问的;
classes,放代码的编译文件;
lib包存放我们创建的工程;
web.xml是整个工程的配置文件;
将工程上传服务器

方法一:工程打包
export为WAR.file文件,将打包文件复制到tomcat、webapps中,启动加载startup.bat 【程序自动解压出来,解压的项目结构和webroot子目录一样;】
访问文件:http://localhost:8080/JAVAWeb02/html/test01
服务器是否能正常解析;
方法二:导入tomcat;
window--Preferences--Tomcat7.x/8.x
tomcat输入配置环境的路径;
--JDK--add目录;输入JDK环境路径
Manage Deployments 中添加Tomcat7.x ADD;
将工程放在服务器中解析,ADD(添加)、redeploy(重载)
然后在浏览器输入网址,查看效果;【细节:端口号变更、样式的链接///在html包外直接包名样式的程序名;html类../回到父文件夹///】
编码集:<meta charset="UTF-8">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值