package com.xxx.core.filter;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
public class JsonFilter extends HttpServlet {
private static final long serialVersionUID = 8713394123750996128L;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String requestJSON = "";
// 获取前台JSON参数串
requestJSON = this.getRequestJSONStr(req);
// 获取接口参数
String action = this.getRequestParams(requestJSON, "action");
req.setAttribute("action", action);
RequestDispatcher dispatcher = req.getRequestDispatcher("/index.html");
dispatcher.forward(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置返回的数据MIME类型
resp.setContentType("text/json; charset=utf-8");
PrintWriter out = resp.getWriter();
JSONObject resultJSON = new JSONObject();
resultJSON.put("status", "失败,请使用 POST 方法");
String jsonResultStr = JSONObject.valueToString(resultJSON);
out.println(jsonResultStr);
out.flush();
out.close();
}
/**
* 读取request的JSON串
*
* @param req
* @return
*/
public String getRequestJSONStr(HttpServletRequest req) {
BufferedReader sis;
StringBuffer sb = new StringBuffer();
try {
sis = req.getReader();
char[] buf = new char[req.getContentLength()];
int len = 0;
while ((len = sis.read(buf)) != -1) {
sb.append(buf, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
String requestJson = sb.toString();
return requestJson;
}
/**
* 根据参数名称获取参数值
*
* @param req
* @param key
* @return
*/
public String getRequestParams(String requestJson, String key) {
String paramValue = "";
try {
JSONObject jobj = new JSONObject(requestJson);
// 根据 JSON 键获取值
paramValue = jobj.getString(key);
} catch (Exception e) {
e.printStackTrace();
}
return paramValue;
}
}
<servlet>
<servlet-name>jsonFilter</servlet-name>
<servlet-class>com.xxx.core.filter.JsonFilter</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jsonFilter</servlet-name>
<url-pattern>/json/*</url-pattern>
</servlet-mapping>