我的项目使用spring框架来处理http请求和响应。我请求用redis或数据库中的值替换一些参数,这些值取决于其中一个参数。
我调查的大多数相关案例都是使用过滤器来达到目的的。
例如,api有两个参数CusterName: abc, isNickName: true。我尝试实现一个类,它扩展了如下所示的OncePerrecestFilter类。
@Component("myFilter")
public class ConvertNickNameToRealNameFilter extends OncePerRequestFilter{
@AutoWired
private CustomerDao customerDao;
@AutoWired
private CustomerRepository customerRepository;
protected abstract void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
...
If (isNickName){
customerName = getRealName(customerName);
}
chain.doFilter(request, response);
...
}
// repo = repository = redis
// dao = database
public String getRealName(String nickName){
String realName = customerRepository.getRealName(nickName);
if(realName == null) {
Customer c = customerDao.findByNickName(nickName);
if(c != null){
customerRepository.set(nickName, c.getRealName());
return (c == null) ? "" : c.getRealName();
}
}else{
return realName;
}
}
}
在网上。xml
<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我尝试使用@AutoWired annotation注入dao和repo,但失败了。如何处理dao和repo为空?任何提示都是受欢迎的,并且有示例代码将是完美的。
谢谢你的帮助。
最后,我找到了一种方法,在filter类中使用DelegatingFilterProxy,而不是类本身。
可以看到上面的代码,这是主块。
其为空的原因可能有很多。我将检查以下内容:
>
有可能这个类没有放在一个包中,而这个包不是由spring的“组件扫描过程”处理的——这样spring就不会加载它,代码是否会进入它?
如果所有内容都由spring管理,请确保存储库和过滤器没有在不同的应用程序上下文中处理
总之,我建议使用Spring mvc拦截器,而不是普通过滤器。它们与Spring MVC集成。请参阅此链接以了解它们之间的差异
当我尝试使用jersy api连接jaserper服务器时,抛出异常java.lang.NoSuchMethodError:org.glassfish.hk2.utilities.AbstractActiveDescriptor 下面是代码 我得到的确切异常如下 线程“main”Java . lang . nosuchmethoderror:org . glassfish . hk2 . util
我开发了一个RestEasy Hello World示例,用于自我评估,但当我尝试使用JBOSS7运行此项目时。0我看到下面提到的错误的打印堆栈跟踪:请向我建议可能的解决方案,或者如果我在上述xml和java文件中编码错误,请告诉我。 下面是我写的程序 马文- 网状物xml 信息驱动。JAVA
问题内容: 这是我的第一个android程序,它是一个修改过的hello世界。我在MAC上的仿真器上运行它。我尝试与.NET Web服务进行通信,但在处给出了异常。我可以从模拟器访问该站点。任何帮助表示赞赏:) 问题答案: 尝试在您的AndroidManifest.xml中添加“互联网”权限:
问题内容: 我有以下活动: 我得到一个NPE,当我尝试调用的,我猜这是因为是一个独立的片段,我有作为之内: 但是,我不确定如何解决此问题,以便可以找到loginButton ID。我以前没有使用过片段,所以我意识到我可能正在使用它们/错误地实现了它们。包含在几个按钮,并没有什么,但一个。 问题答案: 从片段编写代码以初始化按钮,因为您的按钮进入片段布局而不是活动布局。 而从删除登录按钮相关的代码的
Googleapi版本:libs-sources/google-api-services-drive-v2-rev168-1.20.0-sources.jar java版本:“1.7.0_79”java(TM)SE运行时环境(build 1.7.0_79-B15)java HotSpot(TM)64位服务器VM(build 24.79-B02,混合模式) 还将下载的p12文件加载到\jdk1.7.
问题内容: 我收到一个错误,指示缺少in 。这是我的网络服务代码: 这是我的: 添加应用程序类无效: 我仍然收到此错误: UPDATE2: 现在我从浏览器执行GET请求时收到此错误 问题答案: 用(或其他字符串)注释您的班级。