代码:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.cache.CacheUtil; /** * 类名: ValidateInterceptor * 描述: 校验拦截器 */ public class ValidateInterceptor implements HandlerInterceptor { private static UnLogger logger = UnLogger.getLogger(ValidateInterceptor.class); @Autowired CacheUtil cacheUtil; @Override public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception { boolean checkResult=true; //指定允许其他域名访问 response.addHeader("Access-Control-Allow-Origin", "*"); //响应类型 响应方法 response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); response.setHeader("Access-Control-Allow-Headers", "Content-Type"); response.addHeader("Access-Control-Max-Age", "30"); //省略 String token = request.getParameter("token"); //位置1 //校验 if(StringUtils.isNotEmpty(token)){ try{ if(StringUtils.isNotEmpty(cacheUtil.get(token))){ //报错,空指针异常 cacheUtil.expire(token, Constant.TOKEN_EFFECTIVE_TIME); checkResult = true; } }catch(Exception e){ logger.error("redis异常!"); e.printStackTrace(); sessionVerify(request, response, checkResult); } }else{ sessionVerify(request, response, checkResult); } return checkResult; } //省略 }
解决办法,在位置1加上下面的代码就可以了:
//注入失败 if(cacheClusterUtil == null){ WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); cacheUtil = wac.getBean(CacheUtil.class); } 引入: import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils;
相关推荐
IP拦截器是实现这一策略的工具,黑名单用于阻止特定IP的访问,而白名单则是允许指定IP的访问。在实际应用中,通常结合使用这两种策略,以提供更灵活的安全控制。 综上所述,这个Java示例提供了实现IP黑白名单拦截...
4. **添加拦截器**:CXF允许我们定义拦截器,以便在服务调用前后执行自定义逻辑。这可以通过在Spring配置文件中声明拦截器并将其绑定到Bus或Endpoint来实现。 ```xml ``` 5. **测试客户端**:`...
Struts2、Spring和iBatis是Java Web开发中三个重要的框架,...拦截器和日志记录是提高系统稳定性和安全性的重要工具,对于开发和运维具有重要意义。理解并掌握这些技术,能帮助开发者更好地应对复杂的企业级项目需求。
获取 IP,打印日志 TODO 后续优化为统一工具类 String ip = IpUtils.getIpAddress(httpServletRequest); // 3.从请求头获取 Token String token = httpServletRequest.getHeader("token"); // 4.Token 为空...
在本教程中,我们将深入探讨如何使用SpringBoot构建RESTful Web服务,并结合拦截器实现更高效、可控的服务。首先,让我们理解REST(Representational State Transfer)的核心概念,它是一种架构风格,用于设计网络...
为了使自定义拦截器生效,我们需要在配置类中将其添加到拦截器链中: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Autowired private CustomInterceptor customInterceptor;...
在Spring Boot应用中,拦截器(Interceptor)是一个强大的工具,它可以让我们在请求处理前后执行自定义逻辑,例如权限校验、日志记录等。这里我们将深入探讨如何在Spring Boot中设置和使用拦截器。 首先,我们需要...
本篇将详细讲解如何在SpringMVC中实现动态数据源的DataSource工具类。 首先,我们来看`MultiDataSource.java`这个文件。它通常会定义一个`DataSource`的工厂类,用于根据不同的需求动态地返回不同的数据源。在...
例如,使用`@Autowired`注解可以自动找到匹配类型的bean进行注入,而`@Qualifier`则可以指定特定的bean。此外,`@Resource`注解也可以用于字段或setter方法的注入,主要用于JSR-250规范的支持。 六、最佳实践 1. ...
在 Java 中,注解(Annotation)是用来对类、方法、变量等元素添加信息的metadata,它可以被编译器、IDE、框架等工具所读取和使用。在 SpringBoot 框架中,自定义注解可以用来实现对象自动注入操作。例如,在上面的...
- 可能还有其他如log4j.jar、commons-lang3.jar等辅助库,用于日志管理和通用工具类。 总之,这个“struts2+spring连接webservice jar包”是为了在Struts2和Spring框架基础上,方便开发者调用Webservice服务而准备...
它基于拦截器模型,提供了一系列可插拔的拦截器,可以方便地扩展和定制行为。Struts2与Spring结合,可以通过Spring插件实现Action的依赖注入,从而简化代码和提高可测试性。 **Hibernate框架** 是Java领域中著名的...
4. **AOP(面向切面编程)支持**:today-context可能支持类似于AspectJ的切面编程,允许开发者定义拦截器、通知等,实现非业务逻辑代码的分离。 5. **事件传播(Event Propagation)**:框架内可能有事件发布和订阅...
4. **Action类和业务服务**:Action类通常被声明为Spring的Bean,这样它们可以在Spring容器中被管理,同时可以通过@Autowired注解注入业务服务。业务服务则负责调用JPA进行数据操作。 5. **拦截器集成**:Struts2...
Struts2作为MVC框架处理前端请求和业务逻辑展示,Spring提供了依赖注入(DI)和面向切面编程(AOP),以及服务层管理,而Hibernate则是一个强大的对象关系映射(ORM)工具,负责数据库操作。 Struts2整合Spring主要...
创建Controller类并使用注解如@RequestMapping来定义路由,以及@Service和@Autowired注解来注入服务和依赖。 然后是Dubbo的核心部分。Dubbo是一个高性能、轻量级的服务治理框架,主要用于实现微服务间的远程调用。...
2. **配置Struts2**:配置struts.xml,声明Action类,这些Action类通常会由Spring管理,通过@Autowired注解注入需要的服务或DAO。 3. **配置Hibernate**:配置hibernate.cfg.xml,设置数据库连接信息,创建...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是一种...以上就是SSH框架的一些核心知识点,涵盖了Struts2的标签、配置、拦截器,Spring的依赖注入,以及Hibernate的对象关系映射,还有MVC设计模式的基本概念。
配置Struts2拦截器栈,以便使用Spring进行依赖注入。 3. **配置Spring**:创建spring.xml文件,定义Bean的配置,包括Action类、Service类、DAO类以及数据源、SqlSessionFactory等。开启AOP事务管理。 4. **配置...
5. **拦截器问题**:Struts2的拦截器可能会影响登录逻辑,比如没有正确配置或拦截器顺序错误,可能会导致登录失败。 针对以上问题,可以采取以下解决策略: 1. **调试和日志**:使用IDE的调试工具,结合日志输出,...