gpt4 book ai didi

java - 如何在Java EE中根据DB记录重写URL

转载 作者:行者123 更新时间:2023-12-02 12:18:23 27 4
gpt4 key购买 nike

我正在开发一个 JAX-RS 多域应用程序。该应用程序应该由不同的域名寻址,并且应以不同的方式处理这些域。每个域名都是DB中的一条记录,并将域名映射到UUID。所有域名的记录都设置为同一个服务器IP。 UUID 在内部用作路径参数(例如:https://{IP}/{uuid})。

我想达到以下状态:
https://domain1.com/{someResource} --> https://{serverIP}/domain/123e4567-e89b-12d3-a456-426655440000/{someResouce}

插画案例:用户访问 URL https://my-domain.com/rest/v1/details 上的资源,服务器提供有关当前域的详细信息(在其他请求中也类似)。

我的想法是实现一个 ContainerRequestFilter,它将添加有关请求的 URL(和主机名)的信息,就像在身份验证过滤器中一样。第二种方法是使用 Ocpsoft Rewrite 库,但我设置失败,并且该主题的文档不是很丰富。

最佳答案

您好,通过使用 javax.servlet.Filter 实现的

检查一下:

@ApplicationScoped
@WebFilter(filterName = "MyAwesomeFilter", urlPatterns = {"/*"})
public class MyAwesomeFilter implements Filter {

@Override
public void init(FilterConfig filterConfig) throws ServletException {
}

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
final String s = request.getRequestURI() + "/addedSomething"
request.getRequestDispatcher(s).forward(request, servletResponse);
}

@Override
public void destroy() {
}
}

关于java - 如何在Java EE中根据DB记录重写URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45984440/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com