2. 服务器处理POST与GET请求
1 什么是POST与GET请求
- 相同点:是向服务器上的某个url请求页面的两种方式,都可向这个url传递键值对参数,来获得不同的响应结果
- 不同点
- POST请求的键值对参数在HTTP包头的其他部分。例如向login页面以get方式提交用户名、密码信息不会再url中体现。
- GET请求的键值对参数在url后面。例如向login页面以get方式提交用户名、密码信息,会在url后面加上?开头,键值对之=分割,不同的键值对之间用&分割。合起来叫做查询字符串。
- 应用场景
- post场景
//get场景:
//form默认的提交方式
//如果通过一个超链访问某个地址
//如果在地址栏直接输入某个地址
//ajax指定使用get方式的时候
- get场景
//post场景:在form上显示设置 method="post"的时候、ajax指定post方式的时候
2 Servlet处理POST与GET请求
准备工作
- 新建Servlet子类
public class LoginServlet extends HttpServlet {
}
- web.xml指定url映射
<!-- login登陆界面 -->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
- web目录下创建静态页面向login这个url发送post/get请求
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<form action="login" method="post">
账号: <input type="text" name="name"> <br>
密码: <input type="password" name="password"> <br>
<input type="submit" value="登录">
</form>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<form action="login" method="get">
账号: <input type="text" name="name"> <br>
密码: <input type="password" name="password"> <br>
<input type="submit" value="登录">
</form>
</body>
</html>
可以通过System.out.println在tomcat控制台观察控制台输出
2.1 登陆页面的POST请求
- 在LoginServlet类中重写doPost方法表示向该url提出post请求时调用这个方法
- 获得提交的参数,并且判断
- 在返回的页面上写上内容
//post获取表单数据
String name = request.getParameter("name");
String password = request.getParameter("password");
System.out.println("name:" + name);
System.out.println("password:" + password);
//在response对象上响应
//在页面上显示的html文本
String html = null;
if ("admin".equals(name) && "123456".equals(password))
html = "<div style='color:green'>success</div>";
else
html = "<div style='color:red'>fail</div>";
PrintWriter pw = response.getWriter();
pw.println(html);
2.2 登陆页面的GET请求
- 在LoginServlet类中重写doPost方法表示向该url提出post请求时调用这个方法
- 获得提交的参数,并且判断
- 在返回的页面上写上内容
String name = request.getParameter("name");
String password = request.getParameter("password");
System.out.println("name:" + name);
System.out.println("password:" + password);
//在response对象上响应
//在页面上显示的html文本
String html = null;
if ("admin".equals(name) && "123456".equals(password))
html = "<div style='color:green'>success</div>";
else
html = "<div style='color:red'>fail</div>";
PrintWriter pw = response.getWriter();
pw.println(html);
3 基本调用流程
- get请求
- post请求同理