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结构:客户端与服务器端一次双向通信
(2) B/S结构:浏览器与服务器
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:请求的服务器路径
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 连接都被构造成一套请求与应答。
(4)HTTP 客户端和服务器分别由不同的软件开发商提供,它们都可以用任意的编程语言编写,如用.NET 编写的客户程序 与用Java编写的服务器程序顺利通信,就必须遵守HTTP协议,这样才能彼此都懂对方发送的消息,HTTP 协议严格规 定了 HTTP 请求和 HTTP 响应的数据格式。
3.3HTTP 请求格式
(1) 请求方式、URI(统一资源定位符)、HTTP 协议/版本
(2) 请求头 Request Header
请求头包含许多有关客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。
(3) 请求正文 Requet Content (只有在 post 方式才有)请求头和请求正文之间必须有符号行(回车符或行结束符),
请求正文与请求头分开。这个行非常重要,它表示请求头已结束,接 下来的是请求正文。通常 post 方式的数据存放于此,请求正文中可以包含客户提交的查询字符串等信息。在实际应用中,HTTP 请求正文可以包含更多的内容
3.4HTTP 响应格式
(1) HTTP协议版本、状态代码、描述
(2) 响应头(Response Head)
(3) 响应正文(Respose Content)
4.Tomcat 服务器的快速使用
4.1Tomcat 简介
Tomcat 是在 SUN 公司的 JSWDK(JavaServer WebDevelopmentKit ,是 SUN 公司推出的小型 Servlet/JSP 调试工 具)的基础上发展起来的一个优秀的 Servlet 容器,Tomcat本身完全用 Java 语言编写。
4.2Tomcat 使用
(1) 配置 Tomcat
a) JAVA_HOME Java JDK 的根目录
b) CATALINA_HOME Tomcat根目录
(2) 启动和关闭 Tomcat
启动 Tomcat 服务器:startup.bat
关闭 Tomcat 服务器:shutdown.bat
(3) 部署项目到服务器
在 webapps 目录下新建目录存放.html 面页
访问页面
4.3Tomcat目录简介
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的一个容器。
6.预备_http 工具查看网络交互过程
6.1 下载并安装
6.2HttpWatch 的使用
1) IE浏览器-》查看-》浏览器栏-》HttpWatch Professional
7.手写服务器
当我们知道了Tomcat服务器及其运行原理后,我们尝试着自己手写一个服务器。
7.1 搭建项目框架
-
Request:请求
-
Response:响应
-
Server:用于服务器的启动和关闭。
-
WebApp:
-
IOUtils:用于关闭所有流。
-
Servlet:是所有的servlet(用于请求),的父类。
-
web.xml:配置文件。
7.2 编写 XML 文档
7.3 编写 IOCloseUtil 类
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