0

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

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

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

       http://appname:port/login.jsp   

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

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

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

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

4

2 回答 2

2

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

(尽管 S2.0 现在已经很老了;这是当前的操作标签文档)。

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

IMO 这有点笨拙(我不是这个action标签的忠实粉丝)。我宁愿 JSP 页面立即重定向到一个操作,该操作要么呈现 JSP 页面,要么呈现不同的 JSP 页面(如果业务逻辑要求)。

可以想象你所说的,让 S2通过使用属性设置为扩展来实际处理.jsp请求(有关详细信息,请参阅默认文件文档。但是你需要为它创建一个操作,并且可能确保S2 等没有处理其他请求。可能不值得。jspstruts.action.extensionstruts.properties.jsp

于 2011-10-17T03:59:01.333 回答
1

如果您可以显示您的 login.jsp,请添加s:action标记以调用可以处理您的业务逻辑的 Struts 操作。要显示视图,请使用executeResult="true"。有关 s:action 的更多信息,请参阅以下链接:

http://struts.apache.org/2.0.14/docs/action.html

于 2011-10-16T06:49:13.117 回答