Servlets 使浏览器搜索/提交相对于实际服务页面而不是原始请求页面的资源?

Servlets 使浏览器搜索/提交相对于实际服务页面而不是原始请求页面的资源?,servlets,browser,struts2,Servlets,Browser,Struts2,我有一个场景,需要将请求从struts 2 action转发到不是struts 2的遗留action类 JSP(从客户名称空间下的struts 2操作中服务器)--->Action1(客户名称空间下的struts 2操作)--->Action2(非struts 2操作)--->ResultJSP。 下面是我的结果注释,它实际上将请求转发给遗留操作 @Result(name=“displaycuster”,location=“legacyAction.do”,type=“dispatcher”)

我有一个场景,需要将请求从struts 2 action转发到不是struts 2的遗留action类

JSP(从客户名称空间下的struts 2操作中服务器)--->Action1(客户名称空间下的struts 2操作)--->Action2(非struts 2操作)--->ResultJSP。
下面是我的结果注释,它实际上将请求转发给遗留操作

@Result(name=“displaycuster”,location=“legacyAction.do”,type=“dispatcher”)
我可以正确地看到我的结果JSP。但问题是,浏览器正在查找类似jsp的图像、javascript文件中包含的所有资源 在名称空间下,即customer(这是第一个操作名称空间,也是触发请求的JSP页面的名称空间)。 浏览器的默认行为是在收到请求的路径下查找页面资源(并提交表单)吗 已触发(如果路径是相对的)

是否有一种方法可以让浏览器查找相对于实际页面路径的资源,而不是 原始请求路径


也许这个问题并不十分清楚,但我尽了最大努力用文字表达出来,我将尝试总结我们在评论中讨论的内容。首先,确保了解在客户端和服务器端执行的操作。对于文档相对链接,浏览器会根据您在地址栏中看到的内容进行查找。下面是一个示例,描述了在jsp中创建链接的各种方法。第二,有一些方法可以指示浏览器更改位置,例如发送重定向。然而,对于重定向(
302
http状态码),浏览器将发出GET请求。这对你不好,因为你正在写文章,希望参数也被重定向。但是可以使用
307
状态代码代替
302
状态代码。这是一个棘手的链接,虽然关于.net(只是谷歌搜索重定向时弹出的第一个链接),但它更详细地描述了这些状态代码,还提到了不使用302或307进行重定向的解决方案。这可以通过一些客户端javascript来完成。基本上,您不需要转发到第二个操作,而是返回一个带有表单和javascript的虚拟jsp,它会在页面加载时立即将此表单提交给第二个操作


说到这里,js/image文件使用的是与servlet路径相关的链接,这对我来说似乎相当奇怪。我会使这些相对于你的网站根。你可以把它们放在那里。如果您无法更改的某些旧操作正在使用其他位置,您可以使用类似于
UrlRewriteFilter

的方法,浏览器对服务器端转发一无所知。要使浏览器知道您的新请求路径,可能需要发送重定向。但这将迫使浏览器提出新的请求。这就是你要找的吗?我不能使用重定向,因为我先做表单提交,然后转发请求。如果采用重定向,则需要在重定向url中再次手动传递每个表单参数。对吗?有没有一种方法可以重新重定向完整的请求,将我从原始请求中获得的所有参数都重定向到原始请求(前提是我不必从所有原始请求参数中再次在java中生成查询字符串,然后再重定向)?这可能会很棘手,例如:如何更改遗留操作中的代码以使用绝对路径?或者向当前请求的路径添加一些内容,以重定向到旧请求?我认为一定有某种方式可以让浏览器知道查找资源的路径,就像转发请求一样(可能在HTTPservletRequest或响应中有一些字段),但不确定?