Servlet下POST数据获取,以及数据处理

luckyFang 2020年05月11日 216次浏览

前言

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

创建一个Servlet

新建一个类,并继承 HttpServlet

public class HelloServlet extends HttpServlet{

}

重写doPost方法


public class HelloServlet extends HttpServlet{

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


    }
}

获取POST数据

如果你是表达提交来的数据,那么问题不大。
我们直接使用
req.getParameter()就可以获取,但是问题来了。
如果我不是表单提交的呢。
通常在前后分离项目中,都是通过 JSON 传递参数。

所以就需要我们自己进行读取解析

  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取数据
        BufferedReader reader = req.getReader();
        String line;
        StringBuilder buffer = new StringBuilder();
        while ((line = reader.readLine())!=null)
        {
            buffer.append(line);
        }
	System.out.println(buffer);
    }

这样我们就拿到POST请求的数据了

{"username":"admin",	"password":"root"}

解析POST数据

现在拿到了数据我们対其进行解析:这里需要引用一个阿里的json解析包fastjson
下载地址


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取数据
        BufferedReader reader = req.getReader();
        String line;
        StringBuilder buffer = new StringBuilder();
        while ((line = reader.readLine())!=null)
        {
            buffer.append(line);
        }

        // 解析json
        JSONObject json= JSON.parseObject(buffer.toString());
        String username = json.getString("username");
        String password = json.getString("password");
        System.out.println(buffer);
        System.out.println(username);
        System.out.println(password);


    }
admin
root

完整代码

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import jdk.nashorn.internal.parser.JSONParser;

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.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/login")
public class HelloServlet extends HttpServlet{
    public HelloServlet() {
        super();
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        out.write("<html>");
        out.write("<head>");
        out.write("</head>");
        out.write("<body>");
        out.write("<h1>");
        out.write("你好,世界!");
        out.write("</h1>");
        out.write("</body>");
        out.write("</html>");

    }


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取数据
        BufferedReader reader = req.getReader();
        String line;
        StringBuilder buffer = new StringBuilder();
        while ((line = reader.readLine())!=null)
        {
            buffer.append(line);
        }

        // 解析json
        JSONObject json= JSON.parseObject(buffer.toString());
        String username = json.getString("username");
        String password = json.getString("password");
        System.out.println(buffer);
        System.out.println(username);
        System.out.println(password);


    }
}