1. 程式人生 > 實用技巧 >springmvc利用攔截器進行許可權校驗Jackson資料傳輸

springmvc利用攔截器進行許可權校驗Jackson資料傳輸

需要了解攔截器
自定義一個類 實現HandlerInterceptor 或 繼承HandlerInterceptorAdapter
重寫下面三個方法 順序依次如下
//在 handler執行之前執行 返回值為ture才會執行 攔截器或handler
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
response.setContentType("application/json;charset=utf-8");//設定響應編碼
User user = (User) request.getSession().getAttribute("user");
if (user==null){
PrintWriter out = response.getWriter();
ObjectMapper objectMapper = new ObjectMapper();//需要匯入jackson依賴
String result = objectMapper.writeValueAsString(new Result(false, "未登入!"));//將物件轉換為json字串
out.write(result);//響應給使用者
return false;
}
return true;
}
//在 handler執行之後執行
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
}
//在 響應前執行
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
}
攔的執行需要在spring-mvc.xml中配置攔截器[因具體情況配置響應編碼]

<mvc:interceptors>
    <mvc:interceptor>
        <!-- 攔截所有請求 -->
        <mvc:mapping path="/**"/><!-- Spring MVC 攔截路徑 -->
        <!-- 使用bean定義一個Interceptor -->
        <bean class="自定義類的許可權定類名" />
    </mvc:interceptor>
</mvc:interceptors>
<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <constructor-arg value="UTF-8"/>
        </bean>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
                <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                    <property name="failOnEmptyBeans" value="false"/>
                </bean>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>