Java Filter是Java Web應用程序中一個很有用的工具,能夠在請求到達目標servlet之前或響應返回客戶端之前,對HTTP請求和響應進行攔截和處理。我們可以通過在Web.xml配置文件中指定自己的filter,為請求和響應添加各種處理器,以便實現很多功能,如:登錄控制、IP限制、參數修正等等。
有時候,我們需要讓Filter直接返回JSON數據給前端。這時候,我們可以使用OutputStream,把JSON字符串輸出到response中,告訴瀏覽器直接渲染這個JSON。下面就是一個簡單的例子:
public class JSONFilter implements Filter{ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //假設需要傳回的JSON數據為{"id":1,"name":"Tom"} String jsonData = "{\"id\":1,\"name\":\"Tom\"}"; //設置Content-Type response.setContentType("application/json;charset=utf-8"); //使用OutputStream向客戶端輸出JSON數據 OutputStream out = response.getOutputStream(); out.write(jsonData.getBytes("UTF-8")); out.flush(); //結束Filter return; } public void init(FilterConfig filterConfig) throws ServletException { } public void destroy() { } }
在Web.xml配置文件中指定JSONFilter:
<filter> <filter-name>jsonFilter</filter-name> <filter-class>com.example.filter.JSONFilter</filter-class> </filter> <filter-mapping> <filter-name>jsonFilter</filter-name> <url-pattern>/json/*</url-pattern> </filter-mapping>
這樣,當用戶請求http://yourdomain.com/json/時,JSONFilter會被觸發,直接通過OutputStream返回JSON數據給前端。