- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究 Spring MVC Controller 项目。我正在尝试在两个 jsp 页面上添加安全性。这意味着我将拦截来自请求的 IP 地址并查看该 IP 地址是否是有效的 IP 地址。如果不是有效的 IP 地址,则显示错误 jsp 页面。
当我在两个 JSP 页面上添加此安全性时。所以我想为上述两个 jsp 调用显示不同的错误消息,以获取无效的 IP 地址调用。
一旦我在浏览器上点击以下网址,如果它是有效的 IP 地址调用,它将显示我的 testOperation
和 testProcess
JSP 页面 -
http://localhost:8080/testweb/testOperation
http://localhost:8080/testweb/testProcess
所以我为此实现了拦截器,然后也在 XML 中配置了 Spring 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>
这是否可以做到?现在,正如我上面提到的,我需要根据调用的页面来显示无效 ip 地址调用的不同错误 jsp 消息。最好的方法是什么?
如果可能的话,我根本不想重定向到其他 JSP 页面。我想在同一页面上,然后如果可能的话适本地显示错误消息?
最佳答案
我想,如果要这样做,我可能会使用 Spring Security,所以我会尝试使用它。如果您不想为这个小小的用例引入 Spring Security,我也能理解。
通过HandlerInterceptor
,您可以使用request.getRequestDispatcher(path)
来处理响应。如果我是你,我会调度到 Spring MVC 端点,以便 DispatcherServlet 为我处理内容协商和 View 解析(因此调度程序中的路径将映射到@Controller
或 @RestController
)。我可能也想使用 AOP 拦截器而不是 HanderInterceptor,但可能有一些不这样做的原因,只有在我尝试过之后才会清楚。
顺便说一句,如果您正确设置服务器(例如,在Tomcat 有一个 RemoteIpValve
可以做到这一点)。或者,如果您不控制容器,则可以将该逻辑提取到Filter
中。
关于java - 如何将@ExceptionHandler与Spring拦截器一起用于两个JSP页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23145961/
我知道 Exception 是所有异常的父级,但我认为当您为特定异常类设置 @ExceptionHandler 时,它应该处理该特定异常。 也许您可以指出我在以下代码中遗漏的内容,以便 MethodA
我开发了一个 Web 应用程序,其中表单验证异常应该由 @ExceptionHandler 处理(需要灵活),一般系统异常由 SimpleMappingExceptionResolver 处理(执行电
在我的应用程序中,我在 web.xml 中配置了一个错误页面。我需要根据条件覆盖特定 Controller 。在这里,当条件成立时,我需要重定向到特定的错误页面,否则应该呈现正常的错误页面。这是代码。
经过一段时间的研究和尝试不同的事情后,我仍然无法在 jUnit 集成测试中调用我的 @ExceptionHandler。请帮我理解为什么? @RequestMapping(value = "/some
我将在我的 Web 应用程序上引入全局处理程序: @ControllerAdvice public class GlobalControllerExceptionHandler { @Exce
我一直在兜圈子试图修复测试,但 SO 或其他在线资源都没有提供解决方案。我有这个@ControllerAdvice处理 MyException 的方法异常(exception)是: @Controll
这个问题在 Google 领域已被问过几次,但我似乎无法将这些解决方案应用于我的情况。我的 J2EE 应用程序使用 Spring,之前我使用 SimpleMappingExceptionResolve
我正在使用 springmvc 为客户端创建 restful api,我有一个用于检查 accesstoken 的拦截器。 public class AccessTokenInterceptor ex
我的 Controller 中有一个方法可以处理应用程序抛出的异常。所以我有一个这样的方法。 @Controller public class ExceptionController { @R
我使用 @ControllerAdvice 来处理我所有的应用程序异常: @ControllerAdvice public class ExceptionHandlingController {
我正在使用以下代码处理我的受控异常: @ExceptionHandler(MyException.class) @ResponseStatus(HttpStatus.NOT_FOUN
我构建了一个简单的 ExceptionHandler 类: class ExceptionHandler{ public function __construct(){ set
我不知道如何通过@ExceptionHandler 处理一种以上的异常。 我需要以编程方式处理这些异常,为此我需要一个共享引用。这是通过此引用“Exception ex”完成的吗?我不这么认为,因为没
我正在使用默认 AnnotationMethodHandlerAdapter,我认为它应该启用对@ExceptionHandler 的支持。不幸的是,如果调用如下所示的处理程序方法,则会抛出 Serv
我正在使用 spring 的 @ControllerAdvice 和 @ExceptionHandler 进行异常处理。任何方法都会从 Controller 中抛出自定义异常,并由相应的 @Excep
我有一个像 @RestController public class CustomerRestController { @Autowired private CustomerManag
在我的Micronaut应用程序中,我定义了ExceptionHandler,应该捕获WorkflowException并返回状态码为412且主体为HttpResponse的WorkflowExcep
我有这样的异常处理程序: @ControllerAdvice public classMyExceptionHandler extends ResponseEntityExceptionHandler
我在 spring RestController 中有这样的异常处理程序。 @ExceptionHandler(AuthException.class) public ResponseEntit
我遇到问题,然后我 try catch 异常。 这是我的类,它实现了 ResponseErrorHandler: public class ErrorGenerator implements
我是一名优秀的程序员,十分优秀!