5 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用HandlerInterceptor。編寫自己的攔截器或擴(kuò)展并使用現(xiàn)有的實(shí)現(xiàn)

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
HandlerInterceptor
您想要的是其他地方建議的實(shí)現(xiàn)。然而,從您對(duì)該答案的評(píng)論來看,您誤解了 API:
我已在您提供的文檔鏈接中閱讀了 preHandle 方法。但它返回布爾值。我可以使用此方法返回 JSON 輸出嗎?
正如 API 文檔所指出的,布爾值僅向框架發(fā)出信號(hào):是否應(yīng)繼續(xù)處理:
如果執(zhí)行鏈應(yīng)繼續(xù)執(zhí)行下一個(gè)攔截器或處理程序本身,則返回 true。否則,DispatcherServlet 假定該攔截器本身已經(jīng)處理了響應(yīng)。
所以要返回 JSON:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception{
if(someCondition){
return true; //continue processing
}else{
response.getOutputStream().write("{\"message\" : \"some text\"}");
response.setContentType("text/json");
response.setStatus(...); //some http error code?
response.getoutputStream().flush();
return false; //i have written some JSON to the response. Processing stops here
}
}

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
有很多方法可以實(shí)現(xiàn)它。
通過編寫老式的 servlet 過濾器。編寫您自己的過濾器來驗(yàn)證請(qǐng)求并處理請(qǐng)求。
通過編寫彈簧過濾器。
通過使用Spring AOP。(受到推崇的)
通過編寫您自己的注釋,它將驗(yàn)證請(qǐng)求,并在您想要驗(yàn)證的方法之上給出。(受到推崇的)
可能還有其他方法。

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
@Component
public class ServiceInterceptor implements HandlerInterceptor {
? ?@Override
? ?public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
? ? ? System.out.println("Pre Handle method is Calling");
? ? ? return true;
? ?}
? ?@Override
? ?public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
? ? ? System.out.println("Post Handle method is Calling");
? ?}
? ?@Override
? ?public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exception) throws Exception {
? ? ? System.out.println("Request and Response is completed");
? ?}
}
添加回答
舉報(bào)