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配置对外访问路径。
    在这里插入图片描述
  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的操作
    在这里插入图片描述4. Cookie的缺陷
    在这里插入图片描述

Session

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

转发和重定向

  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重定向。
  4. forward和redirect的区別
    ① forward浏览器的地址栏不变;redirect地址栏发生改变
    ② forward发送一个请求;redirect发送两次请求
    ③ forward共享请求中的数据;redirect不共享
    ④ forward不能跨域访问;redirect可以跨域访问
    ⑤ forward可以访问WEB/INF目录下的资源;redirect不可以

JSP

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

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

  3. JSP九大内置对象
    在这里插入图片描述

    1. JSP四大作用域
      在这里插入图片描述

EL表达式

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

过滤器

  1. 过滤器可以对所有的请求或者响应做拦截操作

  2. 过滤器在开发中的运用
    1)可以对请求中的字符做编码
    2)登录验证过滤器
    3)敏感字过滤
    4)做MVC框架中的前端控制器(处理所有请求共同的操作,再分发)

  3. Filter开发步骤
    在这里插入图片描述

  4. Filter的dispatcher:表示对哪些动作进行过滤
    在这里插入图片描述

  5. FilterChain(过滤器链):多个过滤器按照一定的顺序,排列起来。
    注意:配置多个过滤器的时候,过滤器的先后顺序由web.xml中配置的的先后顺序来决定。

  6. 请求编码过滤器:CharacterEncodingFilter
    在这里插入图片描述

  7. Filter和Servlet的区别
    ① servlet流程是短的,url传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面。它主要用来在业务处理之前进行控制.
    ② filter流程是线性的,url传来之后,检查之后,可保持原来的流程继续向下执行,被下一个filter, servlet接收等,而servlet处理之后,不会继续向下传递。filter功能可用来保持流程继续按照原来的方式进行下去,或者主导流程,而servlet的功能主要用来主导流程。
    filter主要用来进行字符编码的过滤,检测用户是否登陆的过滤,禁止页面缓存等

  8. Filter和Servlet的执行顺序
    Filter的调用顺序:
    1. 按照web.xml中的映射配置顺序,按照配置条件从后向前调用
    2. 层次调用doFilter()方法中FilterChain.doFilter()之前的内容(filter-mapping的name先调用doFilter方法,但是每个dofilter方法的内部存在chain.dofilter,会调用下一个filter-mapping,一直到不存在下一个filter后在返回,执行chain.dofilter()后面的代码)(相当于递归调用)
    3. 调用Servlet中的service()方法
    4. service方法执行完毕后,层次调用doFilter()中FilterChain.doFilter()之后的方法,顺序与之前的相反

    Servlet的调用顺序
    按照web.xml中的映射配置顺序按照配置条件从后向前调用第一个满足条件的Servlet,调用之前事先执行满足条件的Filter,不存在层次调用Servlet问题.

监听器(Listener)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值