Spring-截获请求并在域不同时进行不同的处理
我有多域应用程序。 这意味着: 1.带有主域的主应用程序用于向世界展示它,并供客户管理其数据。。 2.客户通过指向主应用程序的自己的域向世界展示他们的数据 我需要能够拦截请求,并以我自己的方式处理它,如果它是为每一个主域以外的其他域来。Spring-截获请求并在域不同时进行不同的处理,spring,spring-boot,Spring,Spring Boot,我有多域应用程序。 这意味着: 1.带有主域的主应用程序用于向世界展示它,并供客户管理其数据。。 2.客户通过指向主应用程序的自己的域向世界展示他们的数据 我需要能够拦截请求,并以我自己的方式处理它,如果它是为每一个主域以外的其他域来。 我该怎么做?有没有完整的请求拦截解决方案和此类控制器的好例子?您可以使用过滤器来实现这一点 下面是一个简单的例子: @SpringBootApplication public class So44844042Application { public s
我该怎么做?有没有完整的请求拦截解决方案和此类控制器的好例子?您可以使用
过滤器来实现这一点
下面是一个简单的例子:
@SpringBootApplication
public class So44844042Application {
public static void main(String[] args) {
SpringApplication.run(So44844042Application.class, args);
}
@Component
public static class DomainFilter extends GenericFilterBean {
private final Map<String, String> redirect = new HashMap<>();
public DomainFilter() {
redirect.put("localhost", "http://www.google.com");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
final String domain = request.getServerName();
if (redirect.containsKey(domain)) {
((HttpServletResponse) response).sendRedirect(redirect.get(domain));
} else {
chain.doFilter(request, response);
}
}
}
@RestController
public static class HomeController {
@GetMapping
public String home() {
return "Welcome";
}
}
}
@springboot应用程序
公共类SO44844042应用程序{
公共静态void main(字符串[]args){
run(So44844042Application.class,args);
}
@组成部分
公共静态类DomainFilter扩展了GenericFilterBean{
私有最终映射重定向=新建HashMap();
公共域筛选器(){
redirect.put(“localhost”http://www.google.com");
}
@凌驾
public void doFilter(ServletRequest请求、ServletResponse响应、FilterChain链)抛出IOException、ServletException{
最后一个字符串domain=request.getServerName();
if(重定向.containsKey(域)){
((HttpServletResponse)response.sendRedirect(redirect.get(domain));
}否则{
链式过滤器(请求、响应);
}
}
}
@RestController
公共静态类HomeController{
@GetMapping
公共字符串home(){
返回“欢迎”;
}
}
}
运行它并尝试打开http://localhost:8080
它会将您重定向到www.google.com
但是http://127.0.0.1:8080
仍然可以访问。您可以使用spring侦听器侦听所有请求。它截取请求,执行逻辑,并可以重定向到最合适的控制器它是如何注入到过滤器链的?@组件使它对spring可见,spring依次执行过滤器注册的所有工作