我正在开发一个使用Struts2和Struts1的应用程序。现在,我想为不同的操作实现身份验证。我想使用interceptor来检查某个action属于哪个namespace。我用Struts2操作包装了所有的Struts1操作。所以所有的strut1-action都通过拦截器运行。
<action name="contactsList" class="com.opensymphony.xwork2.ActionSupport">
<result name="success">contactsList.do</result>
</action>问题是,如果用户在浏览器中输入struts1-action,拦截器将不会被调用。
我的问题是:来自浏览器的操作调用和通过Struts配置调用的操作调用之间有区别吗?如果可能,是否可以禁止浏览器中的Struts1操作,但允许在struts中执行?
发布于 2013-04-11 19:30:53
你想错了方向。在Struts2中有一个Struts1 plugin,它实际上包装了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,它负责对浏览器请求做出反应。
https://stackoverflow.com/questions/15943191
复制相似问题