- Servlet
- 是一个java应用程序,一个Servlet应用有一个或多个Servlet程序,JSP页面会被转换和编译成Servlet程序。
- Servlet应用无法独立运行,必须运行在Servlet容器中。Servlet容器将用户的请求传递给Servlet应用,并将结果返回给用户,由于大部分的Servlet应用都包含多个JSP页面,因此更准确滴说是“Servlet/JSP应用”。Apache Tomcat和Jetty是当前最流行的Servlet/JSP容器。
- Servlet、JSP只是Java企业版众多技术中的两个,其他的Java EE技术好友Java消息服务、企业Java对象、JavaServer Faces以及Java持久化等,要运行Java EE应用需要Java EE容器,例如GlassFish、JBoss等,当然可以讲Servlet应用部署到Java EE容器中,但是大题小作,Tomcat和Jetty更加轻量级。当然,Tomcat/Jetty无法运行EJB、JMS等Java EE中的其他技术。
- 通信协议
web服务器和web客户端通过HTTP协议通信 ,除HTTP协议外,url还可以采用其他类型的协议,如ftp://marketing@ftp.example.org
- HTTP URL的格式如下:
protocol://[host.]domain[:port][/context][/resource][?queryString]
协议://[主机名.]域名[:端口号][/应用][资源路径][参数]
或者
protocol://[host.]IP address[:port][/context][/resource][?queryString]
解释与示例:
a. http://yahoo.com(无host),http://mail.yahoo.com(有host),www是默认的主机名,通常http://www.domainName会被映射到http://domainName
b. 一台计算机可以托管不止一个域名,因此不同的域名可能指向同一个IP,example.com/example.org无法被注册,被保留作为各类文档手册举例使用。另外还可以用ping命令来获取域名对应的IP地址。
c. HTTP的默认端口号是80,因此采用80端口号的Web服务无需输入端口号(HTTPS的默认端口号是443,tomcat的默认端口号是8080)
d. URl中的context部分用来代表应用名称,一台web服务器可以配置多个山下文(应用),其中一个可以配置为默认上下文,访问默认上下文中的资源,可以省略context,一个context中有一个或多个默认资源,通常为index.html,index.htm,default.htm,一个没有带资源名称的url通常指向默认资源。
2. HTTP请求
一个HTTP请求包含三部分内容:
·方法-URI-协议/版本
·请求头信息
·请求正文
第一行即为:post方法-uri-协议/版本
HTTP 1.1规范中定义了请求方法包含七种:get、post、head、options、put、delete、trace
HTTP请求头包含客户端环境以及实体内容等信息,如浏览器所设置的语言实体内容长度等。每个请求头用回车/换行(即CRLF)分隔。
CRLF用于分隔请求头和请求体,最后一行即为请求体。
3. HTTP响应
·协议-状态码-描述
·响应头信息
·响应正文
第一行:协议/版本-状态码-描述
响应头
响应正文和响应头之间用CRLF分隔
状态码示例:访问未授权的资源401,使用被禁用的请求方法405。
1xx消息:这一类型的状态码,代表请求已被接受,需要继续处理;2xx成功;3xx重定向:这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的Location域中指明。; 4xx客户端错误;5xx服务器错误;其他非官方状态码420,444,450,494