【发布时间】:2011-03-23 05:01:31
【问题描述】:
我想修改一个已经用 JacksonMapper 填充的对象,并自动将 IP 和 Referrer URL 添加到它,但请求始终为空,因为在属性数组中找不到它。我是不是做错了什么?
ApiController.java
@RequestMapping(value="/member/follow")
public @ResponseBody IHttpResponse follow(@RequestBody FollowRequest request) {
return request.getHttpResponse();
}
ApiRequestWrapper.js
public class ApiRequestWrapper extends HttpServletRequestWrapper
{
public ApiRequestWrapper(HttpServletRequest request) {
super(request);
if(this.getAttribute("request") instanceof IHttpRequest)
{
IHttpRequest httpRequest = (IHttpRequest) this.getAttribute("request");
if(httpRequest != null)
{
httpRequest.setIp(request.getRemoteAddr());
httpRequest.setReferrer(request.getLocalName());
}
}
}
}
Web.xml
<filter>
<filter-name>apiFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>apiFilter</filter-name>
<url-pattern>/api/*</url-pattern>
</filter-mapping>
【问题讨论】:
-
过滤器在哪里被实例化?当您说您无法获取属性时,您是指在客户端吗?
-
我想在请求过滤器中修改 @RequestBody FollowRequest 请求,然后再将其发送到控制器,以便我可以在该对象中拥有 IP 和引用者。过滤器在我上面添加的 web.xml 中实例化。
-
可以修改请求正文,看这里:stackoverflow.com/questions/50932518/…
标签: spring-mvc filter controller