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 {
request.setAttribute("username",username);
}
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 {
}
最好用上面在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 {
}
另外,HttpServlet处理客户端请求方式还有doPut、doDelete、doTrace、doHead、doOptions,但使用的比较少。