前言
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);
}
}