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

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: localhost
Connection: keep-alive
Content-Length: 24
Cache-Control: max-age=0
Origin: http://localhost
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://localhost/day14_tomcat/login.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8
Cookie: _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.36

Cookie                --代表的缓存  --Cookie Session
Connection: Keep-Alive     --链接状态

响应部分

HTTP/1.1 200 OK     //响应行
Server: Apache-Coyote/1.1     //响应头
Accept-Ranges: bytes
ETag: W/"177-1497947263889"
Last-Modified: Tue, 20 Jun 2017 08:27:43 GMT
Content-Type: text/html
Content-Length: 177
Date: 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     --跳转的连接地址, 结合请求重定向来处理  302
Content-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            --缓存     Cookie
Expires: -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),且最重要。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值