2. 服务器处理POST与GET请求

1 什么是POST与GET请求

  1. 相同点:是向服务器上的某个url请求页面的两种方式,都可向这个url传递键值对参数,来获得不同的响应结果
  2. 不同点
    1. POST请求的键值对参数在HTTP包头的其他部分。例如向login页面以get方式提交用户名、密码信息不会再url中体现。图片.png
    2. GET请求的键值对参数在url后面。例如向login页面以get方式提交用户名、密码信息,会在url后面加上?开头,键值对之=分割,不同的键值对之间用&分割。合起来叫做查询字符串。图片.png
  3. 应用场景
    1. post场景
  1. //get场景:
  2. //form默认的提交方式
  3. //如果通过一个超链访问某个地址
  4. //如果在地址栏直接输入某个地址
  5. //ajax指定使用get方式的时候
  1. get场景
  1. //post场景:在form上显示设置 method="post"的时候、ajax指定post方式的时候

2 Servlet处理POST与GET请求

准备工作

  1. 新建Servlet子类图片.png
  1. public class LoginServlet extends HttpServlet {
  2. }
  1. web.xml指定url映射
  1. <!-- login登陆界面 -->
  2. <servlet>
  3. <servlet-name>LoginServlet</servlet-name>
  4. <servlet-class>LoginServlet</servlet-class>
  5. </servlet>
  6. <servlet-mapping>
  7. <servlet-name>LoginServlet</servlet-name>
  8. <url-pattern>/login</url-pattern>
  9. </servlet-mapping>
  1. web目录下创建静态页面向login这个url发送post/get请求图片.png
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>登录页面</title>
  6. </head>
  7. <body>
  8. <form action="login" method="post">
  9. 账号: <input type="text" name="name"> <br>
  10. 密码: <input type="password" name="password"> <br>
  11. <input type="submit" value="登录">
  12. </form>
  13. </body>
  14. </html>
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>登录页面</title>
  6. </head>
  7. <body>
  8. <form action="login" method="get">
  9. 账号: <input type="text" name="name"> <br>
  10. 密码: <input type="password" name="password"> <br>
  11. <input type="submit" value="登录">
  12. </form>
  13. </body>
  14. </html>

可以通过System.out.println在tomcat控制台观察控制台输出

2.1 登陆页面的POST请求

  1. 在LoginServlet类中重写doPost方法表示向该url提出post请求时调用这个方法
  2. 获得提交的参数,并且判断
  3. 在返回的页面上写上内容
  1. //post获取表单数据
  2. String name = request.getParameter("name");
  3. String password = request.getParameter("password");
  4. System.out.println("name:" + name);
  5. System.out.println("password:" + password);
  6. //在response对象上响应
  7. //在页面上显示的html文本
  8. String html = null;
  9. if ("admin".equals(name) && "123456".equals(password))
  10. html = "<div style='color:green'>success</div>";
  11. else
  12. html = "<div style='color:red'>fail</div>";
  13. PrintWriter pw = response.getWriter();
  14. pw.println(html);

2.2 登陆页面的GET请求

  1. 在LoginServlet类中重写doPost方法表示向该url提出post请求时调用这个方法
  2. 获得提交的参数,并且判断
  3. 在返回的页面上写上内容
  1. String name = request.getParameter("name");
  2. String password = request.getParameter("password");
  3. System.out.println("name:" + name);
  4. System.out.println("password:" + password);
  5. //在response对象上响应
  6. //在页面上显示的html文本
  7. String html = null;
  8. if ("admin".equals(name) && "123456".equals(password))
  9. html = "<div style='color:green'>success</div>";
  10. else
  11. html = "<div style='color:red'>fail</div>";
  12. PrintWriter pw = response.getWriter();
  13. pw.println(html);

3 基本调用流程

  1. get请求

2. 服务器处理POST与GET请求 - 图5

  1. post请求同理