一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全。而且doGet方法只能提交256个字符(1024字节),而doPost没有限制,因为get方式数据的传输载体是URL(提交方式能form,也能任意的URL链接),而POST是HTTP头键值对(只能以form方式提交)。通常我们使用的都是doPost方法,你只要在servlet中让这两个方法互相调用就行了,例如在doGet方法中这样写
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request,response);
}

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

以上from 百度知道 @權寶兒

在网上搜集了一些资料,把两方法的区别整理如下:
get和post是http协议的两种方法,另外还有head, delete等 
这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串。post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。 
在servlet开发中,以doGet()和doPost()分别处理get和post方法。 
首先判断请求时是get还是post,如果是get就调用doGet(), 如果是post就调用doPost()。都会执行这个方法。 
1.doGet
GET调用用于获取服务器信息,并将其做为响应返回给客户端。当经由Web浏览器或通过HTML、JSP直接访问Servlet的URL时,一般用GET调用。GET调用在URL里显示正传送给SERVLET的数据,这在系统的安全方面可能带来一些问题,比如用户登录,表单里的用户名和密码需要发送到服务器端,若使用Get调用,就会在浏览器的URL中显示用户名和密码。
例:
jsp页代码:
<form action="/doGet_servlet" method="get">
………
<input type="text" >
………
</form>
servlet代码:
public class doGet_servlet extends HttpServlet {
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
      request.setCaracterEncoding(“gb2312”);//汉字转码
      PrintWriter out = response.getWriter();
      out.println("The Parameter are :"+request.getParameter("name1"));
  }
}
这样提交表单后,参数会自动添加到浏览器地址栏中,带来安全性问题。

2.doPost
它用于客户端把数据传送到服务器端,也会有副作用。但好处是可以隐藏传送给服务器的任何数据。Post适合发送大量的数据。
例:
jsp页代码:
<form action="/doPostt_servlet" method="post">
………
<textarea cols="50" rows="10"></textarea>
………
</form>
servlet代码:
public class doPostt_servlet extends HttpServlet {
  public void doPost(HttpServletRequest request,HttpServletResponse esponse) throws IOException,ServletException {
      request.setCaracterEncoding(“gb2312”);//汉字转码
      PrintWriter out = response.getWriter();
      out.println("The Parameter are :"+request.getParameter("name2"));
  }
}

3.可以把方法写在doGet()方法中,在doPost()方法中调用执行,这样,无论你提交的是post还是get方法都可以执行
例如:
jsp页代码:
<form action="/servlet" method="post">
………
<input type="text" >
………
</form>
servlet代码:
public class servlet extends HttpServlet {
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
      request.setCaracterEncoding(“gb2312”);//汉字转码
      PrintWriter out = response.getWriter();
      out.println("The Parameter are :"+request.getParameter("name1"));
  }

public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
      this.goGet(request,response);//调用doGet()方法
  }
}
另外,HttpServlet处理客户端请求方式还有doPut、doDelete、doTrace、doHead、doOptions,但使用的比较少。

servlet中doPost()和doGet()相关推荐

  1. servlet的doPost 和doGet和web文件结构

    doPost和doGet分别由 tomcat自己来决定调用post 还是get 方式查询 get:url有少量的参数信息,一般用到查询那里 (像百度.. post一般用来提交大文件数据(二进制数据 d ...

  2. java中的doget_java servlet中doGet()和doPost()方法的用法和区别

    一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全.而且doGet方法只能提交256个字符(1024字节),而doPost没有限制,因为get方 ...

  3. servlet中为什么doGet方法没有被调用的一种可能(笔记)

    创建了一个servlet,然后在doGet()方法内写一些简单的测试语句,但是在实际运行中发现并没有调用到doGet()方法,后来发现自己在创建servlet是将service()方法也勾选上去了,而 ...

  4. servlet单实例多线程 ---线程安全问题是由实例变量造成的,只要在Servlet里面的任何方法里面都不使用实例变量,那么该Servlet就是线程安全的。(所有建议不要在servlet中定义成员变

    Servlet 单例多线程 Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servl ...

  5. 利用抽象工厂创建DAO、利用依赖注入去除客户端对工厂的直接依赖、将有关Article的各种Servlet封装到一个Servlet中(通过BaseServlet进行

    利用抽象工厂创建DAO.利用依赖注入去除客户端对工厂的直接依赖.将有关Article的各种Servlet全部封装到一个Servlet中(通过BaseServlet来进行ArticleServlet方法 ...

  6. 将数据库的操作代码从servlet中剥离,封装到DAO中

    工厂设计模式是所有设计模式中最简单的设计模式!!!(就是通过工厂来创建一些对象) 工厂模式的典型应用场景:创建对象(当我们感觉到创建对象是件很痛苦的事,会用工厂模式) 工厂模式:简单工厂,工厂方法,抽 ...

  7. 在Servlet中向客户端写Cookie信息

    应用Servlet API中提供的Cookie类,用户把表单信息提交给Servlet后,在Servlet中获取用户请求的信息并添加到Cookie对象中,再通过HttpServletResponse对象 ...

  8. 在Servlet中处理表单提交的数据

    Servlet的主要功能是处理客户端的表单请求数据,在Servlet中首先对这些数据进行验证,可能会封装到JavaBean,接下来调用数据库的业务逻辑方法将数据保存或者进行其他操作,最后Servlet ...

  9. 在Servlet中实现页面转发

    在Servlet中实现页面转发,使用的是RequestDispatcher对象的forward()方法,可以在Servlet中通过forward()方法将当前的请求转发到其他Web组件 index.j ...

最新文章

  1. 编写python程序输出图形_python 图形化编程---文本输入框
  2. boost::gil模块数字扩展中的 resize_view() 示例
  3. linux命令wget多个参数,wget 命令参数使用方法
  4. C#调用ORACLE存储过程返回结果集及函数
  5. 通信之道从微积分到5gpdf_保送清华成博士,华为12年搞通信,他为何如此看待 5G ?| 人物志...
  6. Mezzanine基于 Django 的CMS系统框架搭建
  7. Kinect for Windows SDK开发入门(五):景深数据处理 下
  8. ROS节点运行管理launch文件
  9. [翻译]《Programming - Principles and Practice Using C++, Second Edition》- Chapter 1
  10. 一篇文章讲清什么是NVMe
  11. 【C++】CGAL学习笔记
  12. 学生成绩管理系统-C语言(附源码)
  13. 2021年新规下申请测绘资质甲级、乙级需要满足的条件有哪些?
  14. 熊猫烧香超级搞笑广告版本
  15. 非极大值抑制算法(NMS)
  16. Matlab中Web的用法
  17. 思博伦OpenFlow性能测试白皮书(上)
  18. 计算机归属应用软件的有,2017大学计算机应用基础试题附答案
  19. mysql分表技巧_MySQL分表操作的方法分析
  20. POCO库的下载和编译

热门文章

  1. CSS中定义多个链接样式,在CSS中定义【导航栏】超链接样式
  2. python自定义配置文件读取_python读取和自定义配置文件的方法
  3. Unity变量命名的6个重要提示
  4. Unity的Animator中Transition有延迟的问题
  5. C#中的深度学习:预处理硬币检测数据集
  6. c# -- 图片缩放方法总结
  7. php webp decode.h,HCTF两道web题目
  8. python 帮助 autocad_python 使用pyautocad操作AutoCAD
  9. java xms xmx 默认值_JVM启动参数-Xmx的默认值是多少?
  10. python正则表达式怎么看_python如何使用正则表达式