【问题标题】:Struts2 url problemStruts2 url问题
【发布时间】:2011-04-20 19:00:15
【问题描述】:

我正在编写一个 struts2 应用程序并访问用户必须登录的系统。我的操作正常工作,系统工作正常,但在操作返回“成功”后,它转发到“welcome.jsp”页面,但 url 以“login.action”结尾。为了刷新页面,我需要 url 以“welcome.jsp”结尾。如何在不使用 javascript 手动更改 url 的情况下实现这一点?非常感谢。

这是我的 struts.xml 文件中的操作标记...

<action name="login" method="authenticate" class="LoginAction">     
         <result name="success">welcome.jsp</result>
    <result name="error">login.jsp</result>
</action>

【问题讨论】:

  • 我假设您正在向会话中添加一些内容以显示用户已登录?如果是这样,请“LoginAction”类检查是否设置了此会话属性,如果用户已登录,则返回“成功”。要做到这一点很容易让“LoginAction”实现 SessionAware,从那里它非常简单。 (尽管您应该弄清楚如何使用拦截器重构您的解决方案,但一步一步)。这不会按照您的要求更改网址,但它会使刷新问题消失,从而解决问题。

标签: jsp url struts2 action


【解决方案1】:

正确设计的基于动作的应用程序中的每个 URL 都应该指向调度 servlet/过滤器(即在您的情况下以 .action 结尾),而不是直接指向 JSP。这就是 Struts 等基于动作的框架的动作模式的意义所在。

做你想做的事,登录成功后不要转发到welcome.jsp。相反,您应该重定向到welcome.action 操作,然后该操作将转发到welcome.jsp。有关详细信息,请参阅http://struts.apache.org/2.0.14/docs/redirect-action-result.html。有关 Post/Redirect/Get 模式的说明,请参阅 http://en.wikipedia.org/wiki/Post/Redirect/Get

【讨论】:

  • +1 该要求表明对 Struts2(和 MVC)基础的误解。
  • 抱歉延迟回复。我认为对我想要达到的目标存在误解。在我正在制作(游戏)的系统中,有一个欢迎页面,其中有一些从数据库中查询的字段,例如剩余回合数和金钱等。我需要用户能够刷新页面以进行更新静态字段。我确实了解 MVC 的概念,并意识到我试图做的不是遵循标准程序。话虽如此,我想指出我的问题的解决方案是使静态字段动态化。谢谢
猜你喜欢
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多