浏览器在页面重新加载时要求重新发送数据

browser asks to resend data when page is reloaded

我正在使用 struts2 编写应用程序。我在登录部分遇到问题。当执行登录时,它会重定向到 index.jsp page.Now 问题就出现了。问题是登录后 index.jsp 被重新加载,浏览器要求我重新发送数据。我不知道为什么会这样? 这是我的 struts.xml 验证操作代码:-

<action name="authenticate" class="com.action.LoginAction">  
    <result name="success">index.jsp</result>
    <result name="failure">loginerror.jsp</result> 
</action>

这是登录操作的代码 class:-

public String execute() {
    if(sessionMap.containsKey("project_user")){
        return "success";
    }

    Project_User project_User=Login.checkCredentials(email_id,password);

    if(project_User!=null) {
        sessionMap.put("project_user", project_User);
        return "success";
    } else
        return "failure";
}

同样当index.jsp出现时,浏览器的url区域保持不变,浏览器url区域中的link仍然显示动作名称,如:- localhost:8084/Tek-Hub/authenticate/ 如果有人知道它请帮助我。 谢谢xx

您需要使用名为 PRG (Post / Redirect / Get) 的模式。

这样,在执行第一个操作结果时会执行第二个请求(因为重定向),并且登陆页面的刷新(例如按 F5)会触发第二个操作(GET 操作) ,而不是登录操作(POST 一个)。

改变这个:

<action name="authenticate" class="com.action.LoginAction">  
    <result name="success">index.jsp</result>
    <result name="failure">loginerror.jsp</result> 
</action>

对此:

<action name="authenticate" class="com.action.LoginAction">  
    <result name="success" type="redirectAction">index.action</result>
    <result name="failure">loginerror.jsp</result> 
</action>

<action name="index" class="com.action.IndexAction">  
    <result name="success">index.jsp</result>
</action>