doGet和doPost的区别

dogetdopost的区别


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

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处理客户端请求方式还有doPutdoDeletedoTracedoHeaddoOptions,但使用的比较少。 



原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值