JavaWeb重点知识

Tomcat结构

  • img

     

    Container是容器的父接口,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。

    Context 容器 Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,理论上只要有 Context 就能运行 Servlet 了。

    Wrapper 容器 Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器

    狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。是用Java编写的服务器端程序。

    Servlet工作原理

    方法:

    • init()

    • destroy()

    • service()

    Tomcat才是与客户端直接打交道的家伙,他监听了端口,请求过来后,根据url等信息,确定要将请求交给哪个servlet去处理,然后调用那个servlet的service方法,service方法返回一个response对象,Tomcat再把这个response返回给客户端。

    img

    工作模式:

    客户端发出HTTP请求;服务器加载 Servlet 类到内存;实例化并调用init()方法初始化该 Servlet;同时服务器会创建一个请求对象和一个响应对象。服务器会调用Servlet的service() 方法(根据请求方法不同调用doGet() 或者 doPost()),传递请求和响应对象作为参数;service() 方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息;service() 方法使用响应对象的方法,将响应传回服务器,最终到达客户端。

    doget dopost 区别

    doget(): get方法会把名值对追加在请求的url后面,因为url对字符数目有限制,进而限制了用在客户端请求的参数值得数目,并且请求中的参数值是可见的,因此敏感信息不能用这种方式传递 dopost(): post方法通过把请求参数值放在请求体重来克服get方法的限制,因此,可以发送的参数的数目是没有限制的,最后,通过post请求传递的敏感信息对外部客户端是不可见的 get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 建议: 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

    ServletContext

    ServletContext对象: 特点:上下文环境对象:对应整个web应用的。一个web应用只能有一个ServletContext对象:

    ServletContext的生命周期:

    诞生:web部署到服务器。启动服务器,此时上下文环境对象创建。只要 是tomcat服务器不关闭,上下文环境对象一直存在。

    销毁:关闭服务器或者是从web服务器上卸载该程序的时候,该对象销毁。

    获取方式

    this.getServletConfig().getServletContext(); this.getServletContext(); request.getServletContext();

    作用

    1.存取数据。

    • 存数据的方法:setAttribute(key,value); 向域对象当中存放的键值对作为域的一个属性而存在。

    • 取出来:getAttribute(key); 通过给定的key获得key对应的值。

    2.获得应用级别的初始化参数:context.getInitParameter

    3.能够获得资源的真实路径 .getRealPath(“path” )和获得指定目录下的所有的资源 .getResourcePaths(“path”);

    HttpServletResponse

    • 设置响应头信息

    • 发送状态码

    • 设置响应正文

    • 重定向:重定向是服务器通知浏览器去访问另一个地址,即再发出另一个请求。响应码为200表示响应成功,而响应码为302表示重定向。response.sendRedirect()

      重定向和转发的区别:

      相同点:页面跳转

      不同点:

      • 请求转发是一个请求,而重定向是两个请求

      • 请求转发,url不会发生变化 307

      • 重定向:url发生变化 302

    HttpServletRequest

    • 封装了请求头数据

    • 封装了请求正文数据,如果是GET请求,那么就没有正文

    • request是一个域对象,可以把它当成Map来添加获取数据

    • request提供了请求转发和请求包含功能 request.getRequestDispatcher () .forward .include

posted @ 2020-04-09 18:36  零度以外的风景  阅读(221)  评论(0)    收藏  举报