2

我在一个使用 Struts2 和 Struts1 的应用程序上工作。现在我想为不同的操作实现身份验证。我想用 aninterceptor检查namespaceanaction属于哪个。我用 Struts2 动作包装了所有 Struts1 动作。所以所有 strut1-action 都通过拦截器运行。

<action name="contactsList" class="com.opensymphony.xwork2.ActionSupport">
    <result name="success">contactsList.do</result>
</action>

问题是如果用户在浏览器中输入 struts1-action 拦截器将不会被调用。

我的问题:来自浏览器的操作调用和通过 Struts 配置调用的操作调用之间是否有区别。如果可能,是否可以禁止浏览器中的 Struts1 操作,但允许在 struts 中执行?

4

1 回答 1

1

你想错了方向。Struts2 中有一个Struts1 插件,它实际上包装了 Struts1 动作。所以,代码看起来像

<action name="contactsList" class="org.apache.struts2.s1.Struts1Action">
  <param name="className">com.mycompany.myapp.ContactsListAction</param>
  <result>contactsList.jsp</result>
</action>

对于您的问题,即使您的操作什么都不做,Struts2 返回的结果也会重定向或分派到 servlet。您可以对浏览器做任何事情,但 Struts 将接受请求,直到您将其映射到负责对浏览器请求作出反应的 url。

于 2013-04-11T11:30:52.950 回答