Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一个webapp如何转发到另一个webapp?_Java_Redirect_Web Applications_Jetty_War - Fatal编程技术网

Java 一个webapp如何转发到另一个webapp?

Java 一个webapp如何转发到另一个webapp?,java,redirect,web-applications,jetty,war,Java,Redirect,Web Applications,Jetty,War,我有两个静态war,其中包含Jetty服务器和根上下文war提供的帮助文件 help.war-英文帮助文件 帮助\u CS.war-捷克帮助文件 根源战争 根据请求的区域设置,我希望将用户转移到与他们相关的语言。i、 e.用户请求/help/index.htm,当他们从捷克地区请求时,会得到/help\u CS/index.htm。其想法是,可以根据需要添加语言包,而无需太多麻烦 添加Jetty.xml中提到的自定义,该自定义从获取区域设置,并在handle()上转发或重定向。两人都抱怨,因为

我有两个静态war,其中包含Jetty服务器和根上下文war提供的帮助文件

  • help.war-英文帮助文件
  • 帮助\u CS.war-捷克帮助文件
  • 根源战争

    根据请求的区域设置,我希望将用户转移到与他们相关的语言。i、 e.用户请求/help/index.htm,当他们从捷克地区请求时,会得到/help\u CS/index.htm。其想法是,可以根据需要添加语言包,而无需太多麻烦

    添加Jetty.xml中提到的自定义,该自定义从获取区域设置,并在handle()上转发或重定向。两人都抱怨,因为响应代码已经被发送到这里…不知怎么的

    我在ROOT.war的web.xml中尝试了一个定制,但无论我尝试了什么样的url模式,都无法匹配*/help/**

    然后,我在我的help.war中添加了一个与上次尝试的WEB-INF/WEB.xml相同的引用,该引用将匹配,并且可以生成URL,但此时我无法重写URL,因为它总是以/help/开头,所以用help\CS替换的带有help的URL最终会成为domain/help/help\CS/index.htm

    所以我的问题是。这应该怎么做


  • 所以!经过几天的胡闹,我发现这感觉有点不舒服,但它的工作

    我使用我的自定义设置,然后将它放在WEB\u INF/WEB.xml中,用于每个help\u XX.war,每个war文件都有一个单独的servlet映射(但在其他方面是相同的)

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/help_CS</url-pattern>
    </servlet-mapping>
    

    使用javascript。如果(isCS){window.location.href=hostname/help\u CS},其中是isCS布尔变量。计划不错,但我不能。帮助文件是由一些第三方软件动态生成的,这些软件几乎不允许定制。这意味着,如果有一天我们有50种语言,每次生成帮助时,JavaScript都需要手工输入50*n(n是语言的数量)。你是对的。将帮助文件存储在主web应用程序的子目录中。我认为这是正确的。另一个我无法接受的好主意。我们在战争中分发,重新构建我们所有帮助的构建和部署方式不是一个选项:(将
    /../../
    隐藏到重写的URL中如何?
      @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
                                    throws IOException, ServletException
      {
        HttpServletRequest request = (HttpServletRequest) req;
        String requestAddress = request.getRequestURI();
        String country_code = req.getLocale().getCountry();
    
        if (requestAddress.contains("/help/")) 
        {
            ServletContext forwardContext = config.getServletContext().getContext("/help_" + country_code);
    
            forwardContext.getRequestDispatcher(requestAddress.replace("/help", "")).forward(req, res);
        } 
        else 
        {
            chain.doFilter(req, res);
        }
      }