• 006_Servlet_JSP——为什么使用inint()而不是直接采用构造方法创建Servlet?


    Servlet的创建是使用的new关键字,还是使用了反射,还是序列号?

    init()与destroy()内部是什么样子呢? 

    ghttpServelt只是对init()方法做了空实现,但是inint()有两个,一个是有参构造,一个是无参构造。

    init(***)调用了init().

    这两个方法有什么区别呢?

    init()是sun公司用来给开发者使用的。

    destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。

    但是我这个destroy()方法我从来没有掉用过啊?这个是由Tomcat服务器调用的,当服务器关闭的时候,就会调用这个方法,销毁Servlet。

    另外httpSerlvet的父类GServlert对init(),与destroy()方法全是空实现,init()是空,服务器又是怎么创建了Servlet对象呢?

    后来我们就只写doGet()与doPost()方法,我们写的Servlet,是怎么从Service()跳转到了doGet()与doPost()呢?

    当浏览器发送请求到Servlet时,会直接调用走service(),但是我们可以在service(),方法中判断请求方法类型是get还是post,

    然后我们就可以从service(),跳转到doGet(),与doPost().而这些重复的代码,我们写了一个父类 GenericServlet进行了囊括。这样就不用再写init(),service(),destroy(),

    只专心写doGe(),与doPost()请求就行了。

    但是为什么当初Servlet接口要定义一个service()方法,直接定义两个doGet(),与doPost()方法不就行了吗?

    因为get常用于查询数据,post常用语提交数据。之所以定义一个Service()方法,可能是为了向上进行了抽取,为了方便服务器厂商定义方法。

    没想到事到如今,只剩下了get与post两种请求方法,事与愿违了。

    浏览器接受post相应与get相应的数据,处理的方式一样吗?

    应该是不一样,get请求的静态资源会缓存,但是post不会缓存。

    所以get常用来查询数据,post常用来提交数据。

  • 相关阅读:
    渲染机制
    CSS渲染速度改善的十个方法与建议
    HTML你应该知道的三大基本元素
    链接属性rel=’external’、rel=’nofollow’、rel=’external nofollow’三种写法的区别
    rel=nofollow
    CSS3 圆形时钟式网页进度条
    @media screen解决移动web开发的多分辨率问题
    meta 标签属性(网站兼容与优化需要)
    如何解决谷歌浏览器下jquery无法获取图片的尺寸
    CSS设计之页面滚动条出现时防止页面跳动的方法
  • 原文地址:https://www.cnblogs.com/pogusanqian/p/12380442.html
Copyright © 2020-2023  润新知