• Servlet   doPost doGet 区别


    没什么区别,就是html表单提交的method是post的调doPost、get的调doGet。
    而一般情况下,无论哪种method提交的表单,处理都一样,所以只要写一个,在另一个里调这个就行了。
    public void doGet(HttpSrevletRequest request, HttpServletResponse response)
    { 逻辑实现}
    public void doPost(HttpSrevletRequest request, HttpServletResponse response)
    {
     doGet(request, response);
    }
    一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全。而且doGet方法只能提交256个字符。
    通常我们使用的都是doPost方法,你只要在servlet中让这两个方法互相调用就行了,例如在doGet方法中这样写
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    doPost(request,response);

    }

    再把业务逻辑直接写在doPost方法中。
    servlet碰到doGet方法调用直接就会去调用doPost因为他们的参数都一样。而且doGet方法处理中文问题很困难,要写过滤器之类的

    Get只有一个流,参数附加在url后,地址行显示要传送的信息,大小个数有严格限制且只能是字符串。 

    post的参数是通过另外的流传递的, 不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。 

    1、安全 

    GET调用在URL里显示正传送给SERVLET的数据,这在系统的安全方面可能带来问题,例如用户名和密码等 POST就可以在一定程度上解决此类问题

    2、服务器接收方式 

    服务器随机接受GET方法的数据,一旦断电等原因,服务器也不知道信息是否发送完毕 

    POST方法,服务器先接受数据信息的长度,然后再接受数据

    3form运行方式 

    form框里面的methodget时,执行doGet方法 form框里面的methodpost时,执行doPost方法

    4、容量限制 

    GET方法后面的信息量字节大小不要超过1.3K,而Post则没有限制 最后说明的是: 

    你可以用service()来实现,它包含了dogetdopost service方法是接口中的

    方法,servlet容器把所有请求发送到该方法,该方法默认行为是转发http请求到doXXX方法中,如果你重载了该方法,默认操作被覆盖,不再进行转发操作! 

    service()是在javax.servlet.Servlet接口中定义的     javax.servlet.GenericServlet    中实现了这个接口,doGet/doPost则是在javax.servlet.http.HttpServlet中实现 javax.servlet.http.HttpServletjavax.servlet.GenericServlet的子类        

      所有可以这样理解  其实所有的请求均首先由   service()进行处理,而在 javax.servlet.http.HttpServletservice() 方法中,主要做的事情就是判断请求类型是  Get 还是Post,   然后调用对应的doGet/doPost执行


    servlet.init() 方法

    在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的。 可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet。 无论有多少客户机访问 Servlet,都不会重复执行 init() 。

    缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法来覆盖它,典型的是管理服务器端资源。 例如,可能编写一个定制 init() 来只用于一次装入 GIF 图像,改进 Servlet 返回 GIF 图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置, 因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用 service() 方法之前,应确保已完成了 init() 方法。
  • 相关阅读:
    二级评论
    AFN上传数组
    简单播放音频
    好久不见~~ iOS开发动画(Animation)总结
    iOS开发中的单元测试(一)
    在 Xcode 中进行自动化测试 (2/2)
    在 Xcode 中进行自动化测试 (1/2)
    iOS中Bitcode的介绍及配置
    大牛博客
    关于iOS Push Notification的响应问题
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254519.html
Copyright © 2020-2023  润新知