JSONServlet 过滤器

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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值