WEB概述

HTTP

  1. web浏览器与web服务器之间的一问一答的交互过程,必须遵循一定的规则,就是HTTP协议。HTTP是hypertext transfer protocol(超文本传输协议)的简写,他是TCP/IP协议之上的一个应用层协议,用于定义web浏览器和web服务器之间交换数据的过程以及数据本身的格式。
  2. HTTP协议到底约束了什么
    1)约束了浏览器以何种格式向服务端发送数据
    2)约束了服务器应该以何种格式来接收客户端发送的数据
    3)约束了服务器应该以何种格式来反馈数据给浏览器
    4)约束了浏览器应该以何种格式来接收服务器反馈的数据。
  3. HTTP1.0规范
    每次请求都要新建连接,响应结束后断开连接,连接不会复用效率较低。
    HTTP1.1规范
    在一次请求结束后会保持连接一段时间,下次再次请求时可以复用连接,提高了效率。
  4. 请求信息
    1)请求行(位于第一行)
    2)请求头
    3)请求实体:从第一个空行开始,后面的都是正文(可以没有)。只有POST请求才有请求实体。
  5. 响应信息
    1)状态行(位于第一行)
    200 表示成功处理完成请求
    302 表示请求重定向
    304 表示通知浏览器使用缓存中的资源
    307 表示通知浏览器使用缓存中的资源
    404 找不到资源
    500 服务器端错误
    2)响应头
    3)响应正文:从第一个空行开始,后面的都是正文。

GET请求和POST请求

  1. GET的请求数据在浏览器的地址栏(不安全),而POST不会。POST比GET更安全
  2. GET的请求信息存放于请求行中,而POST的请求信息存放于请求实体中。
  3. GET方式请求的数据不能超过2k,而POST没有上限(比如文件上传是,必须使用POST方式)
  4. GET可以缓存,而POST没有缓存。
    注意:查询的时候使用GET,其他时候使用POST。(表单全部使用POST提交)

WEB服务器

  1. Servlet容器
    能够运行Servlet/JSP(动态资源开发技术)的环境就叫做Servlet容器。
  2. web容器
    能够运行web应用的环境叫做web容器。
  3. web服务器
    1)web容器/Servlet容器具体来说就是web服务器。
    2)常见的web服务器有:Tomcat、WebSphere、WebLogic等。
  4. 虚拟主机
    tomcat中可以配置管理多个网站,外界在访问这些网站时,并不知道这些网站是运行在同一个tomcat中的,感觉起来就像他们各自运行在各自的虚拟出来的主机中一样,所以将一个网站交给tomcat去管理的过程称为为tomcat配置一台虚拟主机。
  5. web应用
    web资源按照一定的规则整合起来组成能够被web访问的应用程序就叫做web应用

Servlet

  1. Servlet是sun公司提供的一门用于开发动态web资源的技术。按照这套规范写出来的Servlet可以放置到web应用中在Servlet容器中运行。
  2. 开发一个Servlet只需要两个步骤:
    1)写一个类实现javax.servlet接口。
    2)在web.xml中为servlet配置对外访问路径。
    WEB概述
  3. Servlet的生命周期
    1)Servlet第一次被访问时,创建对象,创建出来后会立即执行init()方法进行初始化的操作。
    2)从此以后该对象一直驻留在内存中,为后续的对本Servlet的请求进行服务,调用service()方法。
    3)直到服务器关闭或web应用被移出容器时,随着web应用的销毁Servlet对象也会被销毁,但在销毁之前会调用destroy()方法执行一些善后的工作。
  4. Servlet的请求流程
    1)在浏览器输入地址,浏览器先去查找hosts文件,将主机名翻译为ip地址,如果找不到就再去查询dns服务器将主机名翻译成ip地址。
    2)浏览器根据ip地址和端口号访问服务器,组织http请求信息发送给服务器。
    3)服务器收到请求后首先根据Host请求头判断当前访问的是哪台虚拟主机。
    4)服务器根据http请求头中的请求URI判断当前访问的是哪个web应用。
    5)服务器根据http请求头中的请求URL判断当前访问的是web应用中的哪个web资源。
    6)检查web应用的web.xml文件,如果根据路径找到具体的servlet处理类的全路径名交给该servlet处理,如果找不到就交给缺省servlet处理。
  5. Servlet线程安全问题
    1)造成的根本原因:Servlet是单例的,Servlet中的非static的成员变量只有一份,多个客户端好比是多个线程,都访问的是同一个空间。
    2)解决方案:
    ① 让当前的Servlet实现javax.servlet.SingleThreadModel接口。包装只有一个线程放Servlet,如果有多个线程就排队。如此的话,性能超低(已过时)
    ② 在Servlet中,不要使用成员变量,使用局部变量。每一个用户,每一个请求都会调用service方法,而局部变量在service方法中,每一次都是新的空间。

Cookie

  1. 解决的问题:HTTP的无状态连接,使得在一次会话中,多个请求之间无法共享数据,无法跟踪用户的会话信息。
  2. Cookie是客户端技术。程序吧每个用户的数据以cookie的形式写给用户各自的浏览器,当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。、
  3. Cookie的操作
    WEB概述4. Cookie的缺陷
    WEB概述

Session

  1. Session是服务器端的技术。利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于sessin为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其他web资源时,其他web资源再从用户各自的session中取出数据为用户服务。
  2. Session的操作
    WEB概述
  3. Session的细节
    WEB概述

转发和重定向

  1. 请求转发的特点
    1)浏览器地址栏不发生改变
    2)请求转发只发送一个请求
    3)共享同一个请求中的数据
    4)最终响应给浏览器的由转发后的Servlet来决定
    5)请求转发不能跨域访问,只能跳转到当前应用中的资源
    6)请求转发可以访问WEB/INF目录下的资源
  2. URL重定向的特点
    1)浏览器的地址栏发生改变
    2)URL重定向发送了两次请求
    3)不共享请求中的数据
    4)最终响应给浏览器的由Servlet2来决定(把目标地址拷贝到浏览器地址栏,敲回车)
    5)URL重定向能跨域访问,可以访问其他应用中的资源
    6)URL重定向不能访问WEB/INF目录下的资源
  3. 如何选择
    1)必须使用请求转发(forword)
    ① 如果需要共享请求中的数据
    ② 如果需要访问WEB/INF中的资源
    2)如果需要跨域访问,避免表单的重复提交,只能使用URL重定向。

JSP

  1. Servlet是JavaWeb提供的动态资源开发技术,是以java的程序的形式进行开发,在java中书写HTML标签是一件十分头疼的事情,所以人们开发出了JSP,看起来像是HTML一样,但可以在其中写java代码,本质上是动态web资源,Jsp会在第一次访问时被容器翻译为Servlet。

  2. JSP的三大指令
    1)page:表示jsp页面相关的配置信息
    WEB概述
    2)include:引入其他页面的内容
    WEB概述
    3)taglib:用来引入标签库

  3. JSP九大内置对象
    WEB概述

    1. JSP四大作用域
      WEB概述

EL表达式

  1. 目的:从作用域中获取指定属性名的共享数据。
  2. 语法:${msg}
  3. EL从作用域中查询指定属性名的共享数据,是按顺序查找的:page、request、session、application

过滤器

  1. 过滤器可以对所有的请求或者响应做拦截操作
  2. 过滤器在开发中的运用
    1)可以对请求中的字符做编码
    2)登录验证过滤器
    3)敏感字过滤
    4)做MVC框架中的前端控制器(处理所有请求共同的操作,再分发)
  3. Filter开发步骤
    WEB概述
  4. Filter的dispatcher:表示对哪些动作进行过滤
    WEB概述
  5. FilterChain(过滤器链):多个过滤器按照一定的顺序,排列起来。
    注意:配置多个过滤器的时候,过滤器的先后顺序由web.xml中配置的的先后顺序来决定。
  6. 请求编码过滤器:CharacterEncodingFilter
    WEB概述

监听器(Listener)

  1. 主要用于监听作用域对象的创建,监听作用域对象属性的添加/删除/替换;
    1)监听作用域对象的创建和销毁
    ServletRequestListener:监听请求对象的创建和销毁
    HttpSessionListener:监听会话对象(session)的创建和销毁
    ServletContextListener:监听应用的创建和销毁
    2)监听作用域对象的属性的添加/删除/替换
    ServletRequestAttributeListener:监听request作用域中属性的添加/删除/替换
    HttpSessionAttributeListener:监听session作用域中属性的添加/删除/替换
  2. Web中的监听器组件,没有初始化参数,如果要解决监听器中的硬编码,只能使用全局的初始化参数。