doGet和doPost的区别

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" name=”form1” method="get">
………
<input type="text" name="username">
………
</form>
servlet代码:
public class doGet_servlet extends HttpServlet {
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
      request.setCaracterEncoding(“UTF-8”);//汉字转码
      String username = request.getParameter("username");

request.setAttribute("username",username);

request.getRequestDispatcher("/out.jsp").forward(request, response);//跳转到out.jsp页面

}
}

out.jsp页面

<html>

``````

<%=request.getAttribute("username")%>//在页面上输出username的信息

</html>
这样提交表单后,参数会自动添加到浏览器地址栏中,带来安全性问题。

2.doPost
它用于客户端把数据传送到服务器端,也会有副作用。但好处是可以隐藏传送给服务器的任何数据。Post适合发送大量的数据。
例:
jsp页代码:
<form action="/doPostt_servlet" name=”form2” method="post">
………
<textarea name="name2" 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(“UTF-8”);//汉字转码
      PrintWriter out = response.getWriter();
      out.println("The Parameter are :"+request.getParameter("name2"));
  }
}
最好用上面在doGet中提到的输出方式进行输出
3.可以把方法写在doGet()方法中,在doPost()方法中调用执行,这样,无论你提交的是post还是get方法都可以执行
例如:
jsp页代码:
<form action="/servlet" name=”form” method="post">
………
<input type="text" name="name1">
………
</form>
servlet代码:
public class servlet extends HttpServlet {
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
      request.setCaracterEncoding(“UTF-8”);//汉字转码
      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,但使用的比较少。

转载于:https://www.cnblogs.com/lechance/p/4373312.html

android doGet和doPost相关推荐

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

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

  2. Service 和 doGet 和 doPost 方法的区别

    Service 和 doGet 和 doPost 方法的区别 新建一个JSP文件: get方式 post方式 service方法.doGet方法和doPost方法的区别: 在上面的步骤中,把下图中的m ...

  3. HttpServlet的doGet()和doPost()方法

    由于,大多数客户端的请求方式都是GET和POST 因此,HttpServlet中提供了doGet()和doPost()方法 示例程序 在目录D:\cn\itcast\firstapp\servlet中 ...

  4. Myeclipse中快速插入HttpServlet子类中doGet和doPost方法

    Myeclipse中快速插入HttpServlet子类中doGet和doPost方法 鼠标右键-source-Override/Implment Methods 参考自:https://blog.cs ...

  5. 对doget和dopost区别的理解

    doget与dopost的区别 GET方法用于获取固定资源,一般并不用于传参数,但是实际开发过程中很多都是在用GET方法来传递参数. get直接访问:http://write.blog.csdn.ne ...

  6. JavaWeb第二讲 重定向与转发 doGet()与doPost()

    (一)重定向与转发 转发**(服务器行为)** request.getRequestDispatcher("url").forward(request, response); 重定 ...

  7. 【Servlet】什么情况下调用doGet和doPost

    ⭐什么情况下调用doGet()和doPost()? 默认情况是调用doGet()方法,JSP页面中的Form表单的method属性设置为post的时候,调用的为doPost()方法:为get的时候,调 ...

  8. doGet或doPost请求

    一.HTTP实现doGet或doPost请求原理介绍 1.浏览器发送请求到HttpSevr类调用HttpServ的service(servletRequest, servletReponse)方法 2 ...

  9. okHttp拦截器放在doGet和doPost请求中

    public class OkHttp3Util { /**      * 懒汉 安全 加同步      * 私有的静态成员变量 只声明不创建      * 私有的构造方法      * 提供返回实例 ...

最新文章

  1. c语言输入字符串的格式不正确的是,关于c#:输入字符串的格式不正确
  2. php yanzhengm,ThinkPHP 在使用M方法(不创建模型类)时实现自动验证与自动填充
  3. 【Qt】Qt中QJsonDocument 类
  4. 卓越管理的实践技巧(1)如何进行有效的指导 Guidelines for Effective Coaching
  5. 算法导论读书笔记(8)
  6. 系统优化-----sysctl.conf文件内核设置参数详解
  7. 奔跑吧Linux内核初识
  8. linux命令:ssh scp ssh-keygen -t rsa用法
  9. 《正则表达式经典实例(第2版)》——2.18 向正则表达式中添加注释
  10. elementUI 下拉框隐藏时触发相关事件(下拉框下拉显示时不触发)
  11. php mysql 拖拉 报表_php+mysql 生成统计报表
  12. java面试常考_java面试常考题
  13. c语言i=5.6a=(int)i,(PSIM仿真)从零开始设计BOOST数字控制器
  14. 服务号idbase64_微信 unionid 获取 解密数据
  15. 基于STM32单片机设计的红外测温仪(带人脸检测)
  16. Kjava林林工具箱源代码(jbuilder工程)
  17. cloudreve 开源私有网盘(带离线下载)
  18. 记一次eduSRC挖掘
  19. 原生js监听滚动条_原生JS实现滚动条监听
  20. 【数据结构】用堆排序解决TOPK问题

热门文章

  1. RocksDB 的Put操作和WriteBatch操作
  2. Reids报错解决:Job for redis-server.service failed because the control process exited with error code.
  3. 德国虚拟主机 linux,细说Linux虚拟主机的搭建及配置
  4. OpenFeign的9个坑,每个都能让你的系统奔溃 OpenFeign
  5. 使用命名空间:别名/导入
  6. python函数结构图_Python数据结构与算法之图结构(Graph)实例分析
  7. 雨滴桌面时间插件_如何设置极简桌面?学会了看电脑都赏心悦目
  8. 4行代码,让app自动化框架支持 webview 混合应用操作
  9. 引号快捷键_干货收藏|excel2016常用快捷键
  10. 苹果6怎么截屏_蓝苹果多肉怎么养,掌握这6种养殖方法