Day14-HTTP协议 & web开发概述 & servlet快速入门

来源:互联网 发布:上知教育一个月多少钱 编辑:程序博客网 时间:2024/05/17 13:10

HTTP:HyperText Transfer Protocol
超文本传输协议

用于定义web浏览器和web服务器之间交换数据的过程
这里写图片描述
特点:
基于请求/响应模型的协议。请求和相应必须成对出现,现有请求后有响应。
HTTP协议的默认端口是80;

组成:
HTTP请求协议和HTTP响应协议;(成对出现)
HTTP请求协议包含:请求行、请求头、请求体;
HTTP响应协议包含:响应行、响应头、响应体;

请求部分

//请求行GET http://localhost/day14_tomcat/test.html?username=zs&password=123 HTTP/1.1 //请求头Host: localhostConnection: keep-aliveContent-Length: 24Cache-Control: max-age=0Origin: http://localhostUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36Content-Type: application/x-www-form-urlencodedAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Referer: http://localhost/day14_tomcat/login.htmlAccept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.8Cookie: _ga=GA1.1.874373530.1497766826//请求体username=zs&password=123

请求部分:
//请求行:

    GET http://localhost/day14_tomcat/test.html?username=zs&password=123 HTTP/1.1
格式: 请求的方式   请求的资源地址  协议/版本    请求方式(8种):        get :             1.提交的参数在地址栏            2.携带的数据有限制            3.不安全        post:            1.提交的参数在请求体中            2.提交的数据没有大小限制            3.相对来说安全     HTTP/1.1 协议版本和HTTP/1.0协议版本的区别:        HTTP/1.0: 发送一次请求,响应回来之后就断开        HTTP/1.1: 发送一次请求,响应回来之后,仍然保持连接//请求头:    格式: key:value (value可能有多个值)Accept: text/html,image/*,text/css, text/javascript,image/jpeg, image/gif 大类型/小类型 mime类型    --浏览器可以支持数据类型Accept-Charset: ISO-8859-1(不支持中文)    --字符集Accept-Encoding: gzip        --支持压缩Accept-Language:zh-cn         --语言环境Host: www.itcast.cn:80        --访问主机If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT      --缓存文件的最后修改时间 ,问服务器这个文件这个时间之后是否有修改过Referer: http://www.itcast.com/index.jsp     --来自哪个页面、防盗链User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)  --代表的是用户所使用的浏览器的版本    ,文件下载 不同的浏览器文件名称编码               Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36            火狐/网景 :Mozilla/5.0  Gecko            微软 :   IE : Windows NT 10.0; Win64; x64            微软:   Mozilla/5.0  (Windows NT 10.0; Win64; x64) Gecko            Linux: Mozilla/5.0  (Windows NT 10.0; Win64; x64) (KHTML , like Gecko) Safari/537.36            APPLE : Mozilla/5.0  (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML , like Gecko) Safari/537.36            CHROME : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36Cookie                --代表的缓存  --Cookie SessionConnection: Keep-Alive     --链接状态

响应部分

HTTP/1.1 200 OK     //响应行Server: Apache-Coyote/1.1     //响应头Accept-Ranges: bytesETag: W/"177-1497947263889"Last-Modified: Tue, 20 Jun 2017 08:27:43 GMTContent-Type: text/htmlContent-Length: 177Date: Tue, 20 Jun 2017 08:42:56 GMT<!DOCTYPE html>     //响应体<html><head><meta charset="UTF-8"><title>Insert title here</title></head><body>    <h3>hello from eclipse123</h3>    <div>    </div></body></html>

//响应部分:
响应行: HTTP/1.1 200 OK
格式: 协议/版本 状态码 状态码的说明

    状态码:        1xx:  基本上看不到, 服务器已经接收到了请求        2xx:  服务器已经成功处理了请求            200 请求成功        3xx:   服务器已经处理了请求,但是需要浏览器进一步操作            302 : 请求重定向:  请求我已接收,但是处理不了, 需要浏览器再去请求其它资源            304: 告诉浏览器使用本地缓存        4xx:    客户端请求的资源有问题            404 : 找不到对应的资源,        5xx:  服务器发生了错误            500:错误, 服务器程序发生了异常响应头:Location: http://www.it315.org/index.jsp     --跳转的连接地址, 结合请求重定向来处理  302Content-Type: text/html; charset=GB2312         --响应的数据类型 , 响应内容所使用编码格式: 告诉浏览器以什么样的编码去解析Refresh: 1;url=http://www.it315.org        --定时刷新 秒数;url="连接地址"Content-Disposition: attachment; filename=aaa.zip    --下载 下载文件的时候必须指定一个头Server:apache tomcat                --服务器型号Content-Encoding: gzip                 --数据压缩Content-Length: 80             --数据长度Content-Language: zh-cn         --语言环境Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT    --最后修改时间Set-Cookie:SS=Q0=5Lb_nQ; path=/search            --缓存     CookieExpires: -1                    --缓存Cache-Control: no-cache              --缓存Pragma: no-cache                   --缓存Connection: Keep-Alive               --保持连接连接响应体: 页面上要显示的内容<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body>    <form action="test.html" method="post">        <div>用户名:<input type="text" name="username"/></div>        <div>用户名:<input type="password" name="password"/></div>        <div><input type="submit" value="登录"/></div>    </form></body></html>

web开发概述:

软件架构:

 C/S架构:      Client/Server客户端/服务器端;要求客户端电脑安装一个客户端程序      优点:           1)用户体验好,效果炫           2)对信息安全的控制较强           3)应用服务器运行数据负荷较轻,部分计算功能在客户端完成      缺点:           1)占用硬盘空间           2)维护麻烦           3)安装使用依赖于其他条件。 B/S架构      Browse/Server 浏览器/服务器,通过浏览器和服务器交互,不需要安装其他程序;           优点:                1)维护和升级简单,无缝升级;                2)不用安装程序,操作系统内置了浏览器;           缺点:                1)动画效果受浏览器限制                2)对信息安全控制较差;                3)应用服务器运行数据负荷较中,大部分计算机都在服务器端,增加服务器的压力。

web服务器:
(JavaEE企业级开发规范,也叫J2EE,在Java中,规范就是接口。)
常见的 web服务器:
1)Tomcat;Apache组织提供的一个免费的小型的服务器。
2)WebLogic:Bea公司一个收费的大型服务器软件,后被Oracle收购。
3)WebSphere:IBM公司的一个收费的大型服务器软件


Servlet快速入门

现在src下面下class文件,实现Servlet接口

package com.itheima.servlet;import java.io.IOException;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletResponse;//单例设计模式,每次调用的时候都是调用同一个对象public class HelloServlet implements Servlet {      @Override      public void init(ServletConfig arg0) throws ServletException {           // TODO Auto-generated method stub      }      @Override  //每次访问的时候都执行,每个请求到达的时候,tomcat都会创建一个新的线程,在线程中调用service方法。      public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {           // 专门向客户端提供相应的方法。           HttpServletResponse response = (HttpServletResponse) arg1;           response.getWriter().write("this is my first servlet!!!");      }      //-----------------------------------------------------------------------      @Override      public void destroy() {           // TODO Auto-generated method stub      }      @Override      public ServletConfig getServletConfig() {           // TODO Auto-generated method stub           return null;      }      @Override      public String getServletInfo() {           // TODO Auto-generated method stub           return null;      }}

然后再在web.xml核心配置文件里面进行配置:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  <display-name>Day14_0618_01</display-name>  <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list>  <!--声明一个servlet路径-->  <servlet>      <servlet-name>HelloServlet</servlet-name>      <servlet-class>com.itheima.servlet.HelloServlet</servlet-class>  </servlet>     <!--配置映射路径-->  <servlet-mapping>      <servlet-name>HelloServlet</servlet-name>      <url-pattern>/abc</url-pattern>  </servlet-mapping></web-app>

什么是Servlet:
Servlet是运行在服务端的java小程序,是sun公司提供的一套规范,用来处理客户端请求、相应给浏览器的动态资源。
servlet 是运行在 Web 服务器中的小型 Java 程序。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。
要实现此接口,可以编写一个扩展 javax.servlet.GenericServlet 的一般 servlet,或者编写一个扩展 javax.servlet.http.HttpServlet 的 HTTP servlet。
此接口定义了初始化 servlet 的方法、为请求提供服务的方法和从服务器移除 servlet 的方法。这些方法称为生命周期方法,它们是按以下顺序调用的:
- 构造 servlet,然后使用 init 方法将其初始化。
- 处理来自客户端的对 service 方法的所有调用。
- 从服务中取出 servlet,然后使用 destroy 方法销毁它,最后进行垃圾回收并终止它。
除了生命周期方法之外,此接口还提供了 getServletConfig 方法和 getServletInfo 方法,servlet 可使用前一种方法获得任何启动信息,而后一种方法允许 servlet 返回有关其自身的基本信息,比如作者、版本和版权。
Servlet是JavaWeb三大组件之一(Servlet、Filter、Listener),且最重要。

作用:
用来处理从客户端发送过来的请求,并对该请求做出响应 。

原创粉丝点击