get和post的区别

来源:互联网 发布:图数据库之王 neo4j 编辑:程序博客网 时间:2024/04/28 00:37

这里写图片描述
地址栏里面呈现的结果,localhost:8080/test/LoginServlet?username=123&password=123。客户端如果像服务器端发出的请求格式都是这样的name=value,请求方式分为get和post,通过浏览器来访问服务器的方式都是get方式。表单默认的method方式就是get,如果使用post方式,会报错,因为没有重写dopost方式
这里写图片描述
重写dopost方法,使其实现和doget相同的方法。我们将两个方法相同的代码重构一个新的方法proess,在doget和dopost方法都调用process。

不能单纯的复制,粘贴,选择该代码,然后右键, 这是方法的重构,然后在doget和dopost方法中都调用此方法
这里写图片描述
这里写图片描述

package firstservlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class LoginServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException    {        System.out.println("doget invoked");        process(req, resp);    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {        System.out.println("dopost invaked");        process(req, resp);    }    private void process(HttpServletRequest req, HttpServletResponse resp)            throws IOException {        String username = req.getParameter("username");        String password = req.getParameter("password");        resp.setContentType("text/html");        PrintWriter out = resp.getWriter();        out.println("<html><head><title>Login result</title></head>");        out.println("<body>username:" + username + "<br>");        out.println("password:" + password + "</body></html>");        out.flush();    }}

然后使用get方法时,地址栏会显示输入的信息,使用post方式没有
这里写图片描述
这里写图片描述

get和post的区别

最本质的区别是http协议的不同
在get方法中,http协议的实现方式是GET/test/LoginServlet?username=hello&password=world HTTP/1.1

对于post,http协议的实现方式是
POST/test/LoginServlet HTTP/1.1
….(一系类常规的请求)
Connection:Keep-Alive
username=hello&password=world
这里写图片描述

1、浏览器地址栏呈现的结果不同(表象)
2、 真正的原因在于向服务器端发送请求时的形式是不同的
3、get的请求格式GET/test/LoginServlet?username=hello&password=world HTTP/1.1

查询字符串作为url的一部分发给服务器
4、post的请求格式
POST/test/LoginServlet HTTP/1.1
….(一系类常规的请求)
Connection:Keep-Alive
username=hello&password=world
查询字符串作为请求体发送给服务器

5、浏览器对于url的长度是有限制的,所以使用浏览器文件上传是必须用post方式,不能用get方式

6、通过浏览器地址栏输入网址的方式来访问服务器资源,全部都是使用get方法请求的

这里写图片描述

0 0
原创粉丝点击