HttpServletRequest类主要是用来获取请求的各方面的信息, 尤其是前端传来的自定义数据.
通过 request string 格式获取数据
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/parameter")
public class getParameter extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
if (username == null) {
System.out.println("username 为空");
}
String password = req.getParameter("password");
if (password == null) {
System.out.println("password 为空");
}
System.out.println("username = " + username + ", password = " + password);
System.out.println("=====================");
resp.getWriter().write("ok");
}
}
用 postman 发送 GET 请求, 如图所示
运行结果:
使用 req 的getParameter方法 可以获取到指定参数的 key 对应的 value.
postbody(form) 通过form表单的形式获取body中的数据
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/parameter")
public class getParameter extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf8");
String username = req.getParameter("username");
if (username == null) {
System.out.println("username 为空");
}
String password = req.getParameter("password");
if (password == null) {
System.out.println("password 为空");
}
System.out.println("username = " + username + ", password = " + password);
System.out.println("=====================");
resp.getWriter().write("ok");
}
}
通过 form 表单的格式发送POST请求
运行结果:
postbody(json) 通过json格式获取body中的数据
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
class User {
public String username;
public String password;
}
@WebServlet("/json")
public class jsonServlet extends HttpServlet {
public ObjectMapper objectMapper = new ObjectMapper();
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
User user = objectMapper.readValue(req.getInputStream(), User.class);
System.out.println("username: " + user.username + ", password: " + user.password);
resp.getWriter().write("ok");
}
}
使用 postman 向本地服务器发送一个 post 请求, 将 body 的内容以 json 格式构造
服务器端结果为
创建ObjectMapper类的对象, 调用该对象的 readValue 方法, 其中第一个参数为 数据源, 第二个参数为 一个类对象. 该方法的作用是解析 requset 请求, 将 body 中的内容解析为 key: value 的格式, 再从 类对象中找到 public 的属性, 遍历刚刚解析的数据, 如果 key 的值和 public 属性的变量名相同, 则把 key 对应的 value 赋值给该属性.