gpt4 book ai didi

java - Struts 2 中的重定向

转载 作者:行者123 更新时间:2023-12-02 00:36:07 25 4
gpt4 key购买 nike

我在我的 Web 应用程序中使用 Struts 2。

通常,我的应用程序中的 struts 过滤器会在 URL 模式中查找 *.do。

现在有一个额外的要求;当应用程序输入

       http://appname:port/login.jsp   

,是否显示login.jsp是根据业务规则决定的。

所以我应该理想地过滤这个 URL 模式并通过 struts 操作发送它(我们称之为 LoginDecideAction)。

第 1 步是将 URL 模式添加到 web.xml 中的过滤器 URL 模式中。现在我该如何说 struts 这个 URL 模式 '*login.jsp' 映射到 LoginDecideAction ?

我是 Struts 2 的新手。感谢您的帮助。

最佳答案

有几种方法可以解决这个问题;我将首先对詹姆斯的回答进行一些扩展。

(虽然 S2.0 现在已经很老了;这里是 current action tag docs )。

曝光login.jsp文件(即不要将其放在 WEB-INF 下)并使用 <s:action>里面的标签来运行 LoginDecideAction 。尽管使用executeResult="true",但操作内部的逻辑决定了接下来会发生什么。技术意味着无论发生什么都将在 login.jsp 中URL,除非它有 JavaScript 来设置窗口位置。

IMO 这有点笨重(而且我不太喜欢 action 标签)。我宁愿 JSP 页面立即重定向到一个操作,该操作要么呈现 JSP 页面,要么呈现不同的 JSP 页面(如果业务逻辑认为应该这样做)。

可以按照您所说的进行操作,并让 S2 实际处理 .jsp通过设置 jsp 请求使用 struts.action.extension 作为扩展属性(请参阅 default struts.properties file docs for details 。但是您需要为其创建一个操作,并且可能确保 S2 等没有处理其他 .jsp 请求。可能不值得。

关于java - Struts 2 中的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7782021/

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