zoukankan      html  css  js  c++  java
  • servlet三大组件

    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

  • 相关阅读:
    LeetCode对撞指针汇总
    167. Two Sum II
    215. Kth Largest Element in an Array
    2018Action Recognition from Skeleton Data via Analogical Generalization over Qualitative Representations
    题解 Educational Codeforces Round 84 (Rated for Div. 2) (CF1327)
    题解 JZPKIL
    题解 八省联考2018 / 九省联考2018
    题解 六省联考2017
    题解 Codeforces Round #621 (Div. 1 + Div. 2) (CF1307)
    题解Codeforces Round #620 (Div. 2)
  • 原文地址:https://www.cnblogs.com/PoetryAndYou/p/11622184.html
Copyright © 2011-2022 走看看