HTTP请求的结构
请求示例
Servlet
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/requset")
public class RequestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().append("Served at :").append(req.getMethod());
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
Get请求
html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action = "/request" method = "get">
<input name = "username" type = "text"/>
<input name = "password" type = "password"/>
<input type = "submit"/>
</form>
</body>
</html>
点击提交
此时按F12
,打开点击Netword
可以看到请求的参数
主要参数:
辅助参数:
请求数据参数:
Post请求
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action = "/RequestServlet/request" method = "post">
<input name = "username" type = "text"/>
<input name = "password" type = "password"/>
<input type = "submit"/>
</form>
</body>
</html>
辅助参数完全相同
Get与Post的数据存放位置不同
- Get存放在URL中
- Post存放在请求体中
巧用请求头开发多端应用
打开京东可以发现,京东有PC端,同时也有移动端,那么他是如何判定客户端是哪种类型的呢
此时可以参看请求参数,当PC端时,读取到的User-Agent
,可以读取到当前是windows环境
当切换移动端的时候,读取到的User-Agent
,读取到当前是iphone环境或者Android环境
操作示例
创建Servlet,eclipse提供了直接创建Servlet的方法
点击Next,进入下一步
点击Next,进入下一步
package com.jachie.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ura")
public class UserAgentServlet extends HttpServlet {
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求头中的User-Agent
String userAgent = request.getHeader("User-Agent");
response.setContentType("text/html;charset = utf-8");
response.getWriter().print(userAgent);
}
}
去地址栏请求:http://localhost:8080/RequestServlet/ura
升级示例:
package com.jachie.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ura")
public class UserAgentServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求头中的User-Agent
String userAgent = request.getHeader("User-Agent");
response.setContentType("text/html;charset = utf-8");
String output = "";
if(userAgent.indexOf("Windows NT") != -1) {
output = "<h1>这是PC端首页</h1>";
}
else if(userAgent.indexOf("iphone") != -1 || userAgent.indexOf("Android") != -1) {
output = "<h1>这是移动端首页</h1>";
}
response.getWriter().print(output);
}
}