servlet大致可以分为三个:``简单servlet过滤servlet监听servlet`

servlet:

servlet的创建

  1. 创建一个类并实现Servlet接口。
  2. 重写service方法。
  3. 在服务器中注册Servlet

协议

  1. 一定是双方或多方签订的。
  2. 浏览器和服务器之间的通信是基于请求(request)和响应(reponse)的。
  3. HTTP协议就是规定浏览器和服务器之间的通信报文格式。(报文首部分为首行和头,统称为首部。)

get、post请求

1). get请求:请求参数在地址栏,长度有限制。

四种设置方法:

  1. 直接在URL中设置填写。
  2. 超链接。
  3. 在method属性中设置。
  4. method属性中不填写时,默认为get

2). post请求:请求参数在请求报文的请求主题中,长度无限制。

设置方法:

通过method属性修改(较安全)

在使用表单提交数据到服务器的时候有两张方式可共选择,一个是post一个是get。可在中的method属性中指定提交的方式。如:<form action="inputForm"method="get">,如果不指定method属性,则会默认该属性为”get”方式。

3). Get和post都能够提交数据,那么他们有什么不同呢?

不同点一:

通过get方式提交的数据有大小的限制,通常在1024字节左右。也就是说如果提交的数据很大,用get方法就可需要小心;而post方式没有数据大小的限制,理论上传送多少数据都可以。

不同点二:

通过get传递数据,实际上是将传递的数据按照”key,value”的方式跟在URL的后面来达到传送的目的的;而post传递数据是通过http请求的附件进行的,在URL中并没有明文显示。

不同点三:

通过Get方式提交的数据安全性不高,而Post方式的更加安全~

Servlet容器

Servlet是运行在服务器中的,运行Servlet的东西,我们称之为Servlet容器。

servlet作用

我们现在写的页面,并没有实质性的作用,也并不能处理用户名和密码,实际上,应该是点击登陆后,将请求提交给Servlet,然后再处理用户名和密码是否正确。

  1. 接受请求获取用户信息。

  2. 处理,检查是否正确。

  3. 如果正确返回一个页面,如果不正确,根据处理结果响应。

也就是:接受请求,处理请求,根据处理结果响应。

servlet声明周期:

指的是Servlet对象从创建到销毁的过程。

  1. 构造器:public login(){}

    当service第一次处理请求时被调用,用来创建service对象,只会调用一次。

  2. Init();

    在构造器调用之后马上被调用,用来初始化Servlet对象,只会调用一次。

  3. service();

    用户再次发送请求,service都会被调用,调用多次,用来处理用户请求。

  4. destroy();

    Servlet对象销毁前被调用,用来执行一些收尾工作,只会执行一次。

HttpServlet

间接实现了Servlet接口,通过继承HttpServlet实现了一个Servlet时,我们只需要根据处理请求的类型(method的值)来重写不同方法,处理get请求,重写doGet请求;处理post请求,重写doPost请求。

转发和重定向

转发:

转发时浏览器地址栏不会发生改变。

转发时浏览器发送了一次请求。

转发时发生在服务器的内部,浏览器不知道转发的发生。

 String con= request.getContextPath();//获取效应器

 RequestDispatcherrd = request.getRequestDispather(“Tomcat”);//获取派发器

 rd.forword(request,reponse);//发起转发

重定向:

重定向时地址栏发生改变。

重定向浏览器发送了两次请求。

重定向时发生在浏览器端的,浏览器知道重定向的发生。

Reponse.sendRedireat(“Test.html”);

过滤servlet,也就是我们常说的filter

什么是过滤器?

在客户端到服务器的过程中,当发送请求时,如果有不符合的信息将会被filter进行拦截,如果符合则会进行放行,在服务器给客户端响应时也会进行判断 如果有不符合的信息将会被filter进行拦截,如果符合则会进行放行。

什么是oop?(拓展)

面向对象编程,java是面向对象变成,封装、继承、多台、抽象。

什么是aop?(拓展)

面向切面编程。用来过滤请求。在请求到达servlet之前,对其进行过滤。

它是sun公司srvlet2.3版本之后推出的新功能,在2.3之前的版本没有该功能,定义一个过滤器需要实现(implement)Filter接口,这里实现的是javax.servlet.Filter。

过滤器的生命周期:

在项目开始启动的时候,过滤器开始初始化,当有请求来的时候开始自动去执行doFilter方法,随着项目的关闭过滤器开始停止。

ChainFilter链:

它可以指向下一个资源,如果还有过滤器,则继续进行下一次的过滤,如果没有过滤器,则会指向资源(servlet)。

chain.doFilter(req,resp);//放行

filter应用场景:

(1) 设置跨域问题(为所有的Servelt)

(2) 解决跨域问题

(3) 解决所有的防盗链问题

使用过滤器的时候需要配置地址:

(1)固定地址 (2)通配符/* (3)指定目录

监听器:(listener)(了解)

监听器:相当于之前所学的事件

源:监听的是谁

动作:触发的条件

响应:当条件满足时会执行的函数

ServletContext对象:

声明周期:随着项目的启动而创建,随着项目的关闭而销毁。

生命周期可以理解为:监听器>过滤器>servlet

八种监听器:

原文链接:https://blog.csdn.net/csdn19970806/article/details/80695485

servlet三大组件的更多相关文章

  1. SpringBoot 注册Servlet三大组件【Servlet、Filter、Listener】-原生代码+@Bean+效果展示

    由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件. 注册三大组件,class MyServlet()/clas ...

  2. Spring Boot之注册servlet三大组件

    由于Spring Boot默认是以jar包的形式启动嵌入式的Servlet容器来启动Spring Boot的web应用是,没有web.xml配置文件 注册三大组件用以下方式 ServletRegist ...

  3. 0017SpringBoot注册Servlet三大组件(Servlet、Filter、Listener)

    由于SpringBoot默认是以jar包的形式启动嵌入式servlet容器来启动SpringBoot的web应用,所以没有web.xml文件,那么如何配置Servlet.Filter.Listener ...

  4. 18. Spring Boot 、注册Servlet三大组件Servlet、Filter、Listener

    由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件 public class MyServlet extends ...

  5. JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)

    JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference

  6. JavaWeb三大组件(Servlet、Filter、Listener)

    JavaWeb三大组件指的是:Servlet.Filter.Listener,这三个组件在JavaWeb开发中分别提供不同的功能,然而很多人可能只用过其中一个或者两个(Servlet.Filter,比 ...

  7. JavaEE--JavaWeb三大组件Servlet、Filter、Listener

    Servlet.Filter.Listener是JavaEE Web服务规定的服务器动态组件,由开发者编写由Web容器创建,并保证单例以及线程安全性,其中加载顺序为Linstener -> Fl ...

  8. JavaWeb笔记——三大组件之过滤器

    过滤器JavaWeb三大组件之一,它与Servlet很相似!不它过滤器是用来拦截请求的,而不是处理请求的.  当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如果Filter“ ...

  9. 学习笔记_过滤器概述(过滤器JavaWeb三大组件之一)

    过滤器Filter Filter和Lister是Servlet规范里的两个高级特性.不同于Servlet,它们不用于处理客户端请求,只用于对request.response进行修改或者对context ...

随机推荐

  1. 因果推理的春天-实用HTE(Heterogeneous Treatment Effects)论文github收藏

    一直以来机器学习希望解决的一个问题就是'what if',也就是决策指导: 如果我给用户发优惠券用户会留下来么? 如果患者服了这个药血压会降低么? 如果APP增加这个功能会增加用户的使用时长么? 如果 ...

  2. java架构之路-(Redis专题)Redis的高性能和持久化

    上次我们简单的说了一下我们的redis的安装和使用,这次我们来说说redis为什么那么快和持久化数据 在我们现有的redis中(5.0.*之前的版本),Redis都是单线程的,那么单线程的Redis为 ...

  3. [Mathematics][MIT 18.02]Detailed discussions about 2-D and 3-D integral and their connections

    Since it is just a sort of discussion, I will just give the formula and condition without proving th ...

  4. VPS虚拟专用服务器

    目录   0x00 VPS服务器概述 0x01 VPS工作原理 0x02 VPS用途 0x03 VPS优势 0x04 VPS特点 0x00 VPS服务器概述 VPS服务器(虚拟专用服务器)(" ...

  5. Rancher 2.1平台搭建及使用

    一.概述 1.1.什么是Rancher Rancher是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器. Rancher可以轻松地管理各种环境的Kubernetes,满足IT需求 ...

  6. 下载linux历史版本

    http://blog.csdn.net/u012453843/article/details/52819756

  7. The All-in-One Note

    基础 操作系统 I/O 模型 阻塞式 I/O 模型(blocking I/O) 描述:在阻塞式 I/O 模型中,应用程序在从调用 recvfrom 开始到它返回有数据报准备好这段时间是阻塞的,recv ...

  8. 后缀数组(SA)

    学习了LRJ神犇的代码.orz. 首先真心建议了解下基数排序!!且要有一定的c++程序经验,否则程序很难看懂. 然后对着下面的程序调试(假装你已经会了算法思想) 弄个一个礼拜一下午就能学会了. 该算法 ...

  9. typescript 入门教程一

    ##### 从今天开始,持续更新typescript入门教程系列.... 目前ts越来越火,主流的前端框架,好比*angular,vue 3*均是采用ts来编写,所有很多公司的项目都是用**ts**来 ...

  10. Java描述设计模式(16):代理模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 在电商高速发展的今天,快递的数量十分庞大,甚至出现了快递代理行业,简单的说就是快递的主人没有时间收快递,会指定一个 ...