我正在与现有的servlet集成,该servlet从HTTP标头中提取一些属性。基本上,我实现的接口无法访问实际请求,它只能访问HTTP标头的k->
v映射。
我需要传递一个请求参数。计划是使用servlet过滤器从参数到标头值,但是HttpServletRequest对象当然没有addHeader()方法。
有任何想法吗?
Extend
HttpServletRequestWrapper
,覆盖标头吸气剂以返回参数:
public class AddParamsToHeader extends HttpServletRequestWrapper {
public AddParamsToHeader(HttpServletRequest request) {
super(request);
}
public String getHeader(String name) {
String header = super.getHeader(name);
return (header != null) ? header : super.getParameter(name); // Note: you can't use getParameterValues() here.
}
public Enumeration getHeaderNames() {
List<String> names = Collections.list(super.getHeaderNames());
names.addAll(Collections.list(super.getParameterNames()));
return Collections.enumeration(names);
}
}
..并用它包装原始请求:
chain.doFilter(new AddParamsToHeader((HttpServletRequest) request), response);
也就是说,我个人认为这是个坏主意。而是给它直接访问参数或将参数传递给它的权限。
我创建了一个基于wsdl文件的客户机。 这可能是因为web服务是用C#编写的,而且最有可能的是,它需要oasis头,在其中存储用户名和密码值。 我现在能创造的新环境是: 所需的enevelope如下:
我有一个扩展类的类,它看起来像: 问题是,我可以向添加自定义吗?我浏览了和中可用的所有方法,但没有找到任何方法。但是在模式下,我发现在中有的列表。如何在此添加自定义?
我在两台主机上部署了一个Java web应用程序,前面有一个servlet过滤器。我向一台主机上的应用程序发送了一个POST请求,该请求被过滤器拦截并重定向到另一台主机: 在第二台机器上,请求通过过滤器并由资源类中的REST API处理。 对象作为POST请求正文的一部分发送。重定向之后,请求正文不会发送过来,为空。如何在重定向之后保留请求正文(或至少保留请求正文的这一部分)? 谢了。
问题内容: 我想让ETag支持。为此,需要做所有工作。我如何在不声明的情况下添加它(实际上不存在,因为到目前为止我已经不知何故了)? PS我使用Spring Boot 1.1.4 PPS这是一个完整的解决方案 问题答案: When using Spring Boot 如参考文档中所述,唯一的步骤是在配置类中将该过滤器声明为Bean,就这样! When using Spring MVC 你可能已经扩
我想要ETag支持。为此,有一个来完成所有工作。我如何添加它而不在我的中声明它(它实际上并不存在,因为我到目前为止不知怎的没有它)?
问题内容: 我正在尝试找到一种方法,可将请求从过滤器重定向到登录页面,但我不知道如何从servlet重定向。我搜索了,但发现的是方法。我在过滤器的响应对象上找不到此方法。是什么原因 我该如何解决? 问题答案: 在Filter中,响应是而不是。因此将强制转换为。 如果使用上下文路径: 也不要忘记在最后打电话。