mom*_*omo 16 java servlets spring-mvc
我在Spring MVC 3.06 Web应用程序中有一个普通的Java类.
在这个类中,我想HttpServletRequest
在方法中注入或获取对象.
我知道我可以通过这个,但我想知道如何在不将其传递给方法的情况下获取请求.也许使用注释或类似?
此外,以这种方式获取请求的"真实"问题是什么,除了一些人认为它是丑陋的编码.我的意思是,以这种方式访问它是否不稳定?
优选地,非应用服务器依赖方式
我见过
(HttpServletRequest) RequestContextHolder.getRequestContext().getExternalContext().getNativeRequest()
Run Code Online (Sandbox Code Playgroud)
但这似乎不适用于Spring MVC 3.06.RequestContextHolder
没有方法getRequestContext()
.
ska*_*man 30
使用
((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
Run Code Online (Sandbox Code Playgroud)
我不确定你到底在哪里RequestContextHolder.getRequestContext()
,这是完全错误的.
以这种方式访问它是不稳定的?
不,它足够稳定,假设您始终将代码作为HttpServlet
请求线程的一部分运行.主要问题是,它是丑陋的,它使您的代码难以测试.这是足够的理由不使用它.
如果必须使用它,请将其与代码分离,例如
public void doSomething() {
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
doSomething(request);
}
void doSomething(HttpServletRequest request) {
// put your business logic here, and test this method
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48748 次 |
最近记录: |