Spring 弹簧休息(MVC)。如何在控制器中处理之前修改http请求
我想问一下。在SpringREST(MVC)控制器中处理之前,如何修改http请求 据我所知,我可以通过过滤器和定制请求包装器使用servlet。那么,有人知道如何在春季实现这一点吗(例如,通过拦截器) 我的目标是向请求添加新的请求参数,以便在控制器中使用它Spring 弹簧休息(MVC)。如何在控制器中处理之前修改http请求,spring,rest,spring-mvc,Spring,Rest,Spring Mvc,我想问一下。在SpringREST(MVC)控制器中处理之前,如何修改http请求 据我所知,我可以通过过滤器和定制请求包装器使用servlet。那么,有人知道如何在春季实现这一点吗(例如,通过拦截器) 我的目标是向请求添加新的请求参数,以便在控制器中使用它 Thx预先您可以使用过滤器修改httprequestparameter值。注意执行: Web.xml <filter> <description>check request for service token
Thx预先您可以使用过滤器修改httprequestparameter值。注意执行: Web.xml
<filter>
<description>check request for service token</description>
<filter-name>CustomFilter</filter-name>
<filter-class>com.filters.CustomFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CustomFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
创建CustomFilterRapper,在其中重写getParameter方法以修改某些请求参数。在我的例子中,如果请求参数是maverick,我会更改值
public class CustomFilterWrapper extends HttpServletRequestWrapper {
public CustomFilterWrapper(HttpServletRequest request) {
super(request);
}
@Override
public String getParameter(String name) {
String[] vals = getParameterMap().get(name);
if (name.equalsIgnoreCase("maverick")) {
return "modify value";
} else if (vals != null && vals.length > 0) {
return vals[0];
} else {
return null;
}
}
}
这听起来像是个XY问题。你到底想达到什么目的?在请求中添加一个参数对我来说是一个非常糟糕的主意,而且可能有更好的方法来解决您试图解决的问题。@b3lowster,您尝试了什么?在这里输入一些代码。让我解释一下我想要实现的目标。在控制器中,我有几个端点,其中几个端点需要一个非强制参数(假设参数名为“type”)。所以当参数值为null(但不是通过默认值)时,我想用AOP样式填充这个参数。我知道它是如何工作的。这对我来说根本不是问题。这样,我就无法添加新参数或请求中存在的更改
public class CustomFilterWrapper extends HttpServletRequestWrapper {
public CustomFilterWrapper(HttpServletRequest request) {
super(request);
}
@Override
public String getParameter(String name) {
String[] vals = getParameterMap().get(name);
if (name.equalsIgnoreCase("maverick")) {
return "modify value";
} else if (vals != null && vals.length > 0) {
return vals[0];
} else {
return null;
}
}
}