HttpServletRequest获取自定义数据

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 赋值给该属性.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值