我正在開發Spring MVC控制器項目。我試圖在兩個jsp頁面上添加安全性。這意味着我將攔截來自該請求的IP地址並查看該IP地址是否是有效的IP地址。如果它不是有效的IP地址,則顯示錯誤的jsp頁面。如何對兩個JSP頁面使用@ExceptionHandler和Spring Interceptor?
因爲我在兩個JSP頁面上添加了這個安全性。所以我想爲上面的兩個jsp調用顯示不同的錯誤消息來調用無效的IP地址。
只要我打以下網址瀏覽器,它會顯示我的testOperation
和testProcess
JSP頁面,如果它是一個有效的IP地址呼叫 -
http://localhost:8080/testweb/testOperation
http://localhost:8080/testweb/testProcess
所以我實現了攔截該再配置的Spring XML中的MVC攔截器也是如此。現在我用下面的代碼檢查有效的IP地址大小寫。
@Component
public class IpCheckingInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String requestURI = request.getRequestURI();
System.out.println(requestURI);
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
if (!isValid(ipAddress) && requestURI.equalsIgnoreCase("/testweb/testOperation")) {
// need to show a proper error message on the jsp
return false;
} else if (!isValid(ipAddress) && requestURI.equalsIgnoreCase("/testweb/testProcess")) {
// need to show a below JSON response as an error on the browser
// {"response":"You are not authorized to make a call.","error":"AUTHORIZATION_ERROR","status":"ERROR"}
return false;
}
return true;
}
}
在我的context.xml文件 -
<mvc:interceptors>
<bean class="com.testing.interceptor.IpCheckingInterceptor" />
</mvc:interceptors>
這是可以做到的,無論如何?現在,正如我上面提到的,我需要顯示不同的錯誤jsp消息,以獲取無效的ip地址調用,具體取決於調用哪個頁面。做這個的最好方式是什麼?
如果可能的話,我不想重定向到其他JSP頁面。我想要在同一頁面上,然後適當地顯示錯誤信息,如果可能的話?