springboot过滤器传递数据到controller
时间: 2023-07-02 20:03:50 浏览: 146
可以通过使用`HttpServletRequest`的`setAttribute()`方法在过滤器中设置属性,然后在controller中使用`HttpServletRequest`的`getAttribute()`方法获取该属性。
下面是一个示例:
```java
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 初始化代码
}
@Override
public void destroy() {
// 销毁代码
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
httpRequest.setAttribute("myAttribute", "Hello from filter!");
chain.doFilter(request, response);
}
}
```
在上面的代码中,我们在过滤器中设置了一个名为`myAttribute`的属性,并将其值设置为`Hello from filter!`。
接下来,在controller中使用以下代码获取该属性:
```java
@RestController
public class MyController {
@GetMapping("/hello")
public String hello(HttpServletRequest request) {
String myAttribute = (String) request.getAttribute("myAttribute");
return myAttribute;
}
}
```
在上面的代码中,我们使用`HttpServletRequest`的`getAttribute()`方法获取名为`myAttribute`的属性,并将其值返回给客户端。
注意,如果你使用的是`@RequestMapping`注解而不是`@GetMapping`注解,你也可以将`HttpServletRequest`对象作为方法参数,然后使用`getAttribute()`方法获取属性。
阅读全文