22.Server Project
Posted ericshen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了22.Server Project相关的知识,希望对你有一定的参考价值。
1.预备知识_Socket 知识回顾2.预备知识_html 简单入门3.预备知识_HTTP 协议入门4.Tomcat 服务器的快速使用
1.预备知识_Socket 知识回顾
1.1 编写服务器用到的知识点
1) Socket编程 2) HTML 3) HTTP协议 4) 反射 5) XML解析6) 服务器编写 1.2 复习 Socket 编程 (1) C/S结构:客户端与服务器端一次双向通信
![技术图片](https://pic3.zhimg.com/v2-5defcb1d344830540cf664d83500eaee_b.png)
![技术图片](https://pic4.zhimg.com/v2-277d34a1e5036701c56957ec424e42af_b.png)
(2) B/S结构:浏览器与服务器
![技术图片](https://pic4.zhimg.com/v2-66b6853a092e9fbf651203114cef607f_b.png)
![技术图片](https://pic1.zhimg.com/v2-6ab138cbd45a0dcd44ebc341d5d147d8_b.png)
Attention:只要在一个形参的“类型”与“参数名”之间加上三个连续的“.”(即“...”,英文里的句中省略号),就可以让它和不确定个实参相匹配。而一个带有这样的形参的方法,就是一个实参个数可变的方法。
2.预备知识_HTML 简单入门
2.1HTML HTML: HyperText Markup Language 超文本标记语言,用于描述网页文档的一种标记语言
2.2 第一个 HTML 文档
<html>
<head>
<title>第一个 HTML</title>
</head> <body>
<h1>hello world</h1> </body>
</html>
2.3 表单form
(1) form作用:与用户之间进行交互
(2)action作用:请求的服务器路径(你的数据提交到哪里去?)
(3)method作用:请求方式 get/post get 数据量小,安全性低,默认方式 post 数据量大,安全性高action:请求的服务器路径
![技术图片](https://pic2.zhimg.com/v2-ae88f8458b33e318758337c35546db49_b.png)
id : (用户的的浏览器在文档里区分唯一性)前端区分唯一 性,js 中
name:名称,后端(服务器)区分唯一性,获取值,只要提交数据 给后台(服务器)必须存在 name
3.预备知识_HTTP 协议入门
3.1 协议
-
(1) 应用层:HTTP、FTP、TELNET、SNMP、DNS
-
(2) 传输层:TCP、UDP
-
(3) 网络层:IP
3.2HTTP 协议简介
(1)HTTP:Hypertext Transfer Protocol 超文本传输协议,是网络应用层的协议,建立在 TCP/IP 协议基础上,HTTP 使用可 靠的 TCP 连接,默认端口为 80。
(2)用户打开 Web 浏览器(常见的 HTTP 客户端),输入 URL地址,就能接收到远程 HTTP 服务器端发送过来的网页,即HTTP 遵循请求(Request)/应答(Response)模型。
(3)Web 浏览器 向 Web 服务器发送请求,Web 服务器处理请求并返回适当 的应答,所有 HTTP 连接都被构造成一套请求与应答。
![技术图片](https://pic2.zhimg.com/v2-0ca689a878f53c2b6678bd55c554a00d_b.png)
(4)HTTP 客户端和服务器分别由不同的软件开发商提供,它们都可以用任意的编程语言编写,如用.NET 编写的客户程序 与用Java编写的服务器程序顺利通信,就必须遵守HTTP协议,这样才能彼此都懂对方发送的消息,HTTP 协议严格规 定了 HTTP 请求和 HTTP 响应的数据格式。
3.3HTTP 请求格式
(1) 请求方式、URI(统一资源定位符)、HTTP 协议/版本
(2) 请求头 Request Header
请求头包含许多有关客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。
(3) 请求正文 Requet Content (只有在 post 方式才有)请求头和请求正文之间必须有符号行(回车符或行结束符),
请求正文与请求头分开。这个行非常重要,它表示请求头已结束,接 下来的是请求正文。通常 post 方式的数据存放于此,请求正文中可以包含客户提交的查询字符串等信息。在实际应用中,HTTP 请求正文可以包含更多的内容
![技术图片](https://pic1.zhimg.com/v2-5ce9fad272411b1207c798d22c5b2504_b.png)
3.4HTTP 响应格式
(1) HTTP协议版本、状态代码、描述
(2) 响应头(Response Head)
(3) 响应正文(Respose Content)
![技术图片](https://pic2.zhimg.com/v2-e1ae0ba29b265e1aacf5247eee3ecbd5_b.png)
4.Tomcat 服务器的快速使用
4.1Tomcat 简介
Tomcat 是在 SUN 公司的 JSWDK(JavaServer WebDevelopmentKit ,是 SUN 公司推出的小型 Servlet/JSP 调试工 具)的基础上发展起来的一个优秀的 Servlet 容器,Tomcat本身完全用 Java 语言编写。
4.2Tomcat 使用
(1) 配置 Tomcat
a) JAVA_HOME Java JDK 的根目录
![技术图片](https://pic1.zhimg.com/v2-ee379f277336d6c59aaf21d1d610b350_b.png)
b) CATALINA_HOME Tomcat根目录
![技术图片](https://pic2.zhimg.com/v2-936d737deb6548594066e01496f68c19_b.png)
(2) 启动和关闭 Tomcat
启动 Tomcat 服务器:startup.bat
关闭 Tomcat 服务器:shutdown.bat
(3) 部署项目到服务器
在 webapps 目录下新建目录存放.html 面页
访问页面
4.3Tomcat目录简介
![技术图片](https://pic1.zhimg.com/v2-818faea8fa947f6798b5dc237657ddb4_b.png)
bin目录:存放了Tomcat执行的脚本目录,存放运行tomcat服务器相关的命令。 conf目录:存放tomcat服务器相关的配置文件 例如:在tomcat服务器启动的时候,会绑定一些端口号,这些端口号就可以在配置文件server.xml文件中进行修改。 lib目录:存放tomcat服务器自带的jar包,我们也可以把其他的一些jar 包也存放到这里在tomcat中同时可以部署多个项目,这个多个项目可共享lib目录中 的jar包。 logs目录:存放tomcat服务器在运行过程中,所产生的日志文件。 temp目录:存放tomcat服务器在运行过程中,所产生的临时文件。 webapps目录:存放部署到tomcat服务器中的web项目,把项目部署服务器里面, 其实就是放到这个目录下。 work目录:这个目录和是jsp页面相关的。
5.Tomcat 服务器运行原理
5.1Tomcat 的运行原理
客户浏览器发出要求访问特定的 Servlet 的请求。
-
(1) Tomcat服务器接收到客户请求并解析。
-
(2) Tomcat服务器创建一个 ServletRequest对象,在ServletRequest 对象中包含了客户请求信息及其他关于客 户的信息,如请求头,请求正文,以及客户机的 IP 地址 等。
-
(3) Tomcat服务器创建一个ServletResponse对象
-
(4) Tomcat服务器调用客户所请求的Servlet的service服务方 法,并且把 ServletRequst 对象和 ServletResponse 对象做为参数传给该服务方法。
-
(5) Servlet从ServletRequest对象中可获取客户的请求信息。
-
(6) Servlet利用ServletResponse对象来生成响应结果。
-
(7) Tomcat服务器把Servlet生成的响应结果发送给客户。
Tomcat服务器是servlet的一个容器。
![技术图片](https://pic2.zhimg.com/v2-9fddf637d2e09006093e95469b0d300d_b.png)
6.预备_http 工具查看网络交互过程
6.1 下载并安装
6.2HttpWatch 的使用
1) IE浏览器-》查看-》浏览器栏-》HttpWatch Professional
![技术图片](https://pic2.zhimg.com/v2-d83949e2092e992c3b6b2f793a3af8ed_b.png)
7.手写服务器
当我们知道了Tomcat服务器及其运行原理后,我们尝试着自己手写一个服务器。
7.1 搭建项目框架
-
Request:请求
-
Response:响应
-
Server:用于服务器的启动和关闭。
-
WebApp:
-
IOUtils:用于关闭所有流。
-
Servlet:是所有的servlet(用于请求),的父类。
-
web.xml:配置文件。
7.2 编写 XML 文档
![技术图片](https://pic2.zhimg.com/v2-56072ca0c8530a94d6b6efa3f22d4c21_b.png)
7.3 编写 IOCloseUtil 类
![技术图片](https://pic4.zhimg.com/v2-c0bcd88bb5161c596a328e687f3eb30b_b.png)
8.DOM4J 解析 XML 配置文件
8.1Entity 实体类的编写
8.2Mapping 实体类的编写
8.3 解析 XML 文件
public class WebDom4j //用于解析XML
private List<Entity> entityList;//用于存储是N多Entity,而每一个Entity都是servlet-name与servlet-class
private List<Mapping> mappingList;//用于存储N多Mapping,而每一个Mapping都是一个servlet-name与N多个url-pattern
public List<Entity> getEntityList()
return entityList;
public void setEntityList(List<Entity> entityList)
this.entityList = entityList;
public List<Mapping> getMappingList()
return mappingList;
public void setMappingList(List<Mapping> mappingList)
this.mappingList = mappingList;
//构造方法
public WebDom4j()
entityList=new ArrayList<Entity>();
mappingList=new ArrayList<Mapping>();
//获取Document对象的方法
private Document getDocument()
try
//(1)创建SAXReader对象
SAXReader reader=new SAXReader();
//(2)调用read方法
return reader.read(new File("src/WEB_INFO/web.xml"));
catch (DocumentException e)
// TODO Auto-generated catch block
e.printStackTrace();
return null;
//-------------------------------------------------------------------
public void parse(Document doc)
//(1)获取根元素
Element root