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

标签 java jsp design-patterns struts2 post-redirect-get

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

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

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

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字段中的链接仍然显示 Action 名称,如:- localhost:8084/Tek-Hub/authenticate/ 如果有人知道它请帮助我。 谢谢

最佳答案

您需要使用名为 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>

enter image description here

关于java - 浏览器在页面重新加载时要求重新发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35603320/

相关文章:

java - 两个 JVM 上的单例

java - 如何在 Parcel 中使用 writeStringArray() 和 readStringArray()

java - JAXP00010004 和 java.lang.OutOfMemoryError : GC overhead limit exceeded

java - 自动从一个 JSP 页面重定向到另一个

javascript - onClick 启用表单

c++ - 这是什么设计模式?

java - 刷新通用图像加载器缓存

java - 如何在 spring DriverManagerDataSource 上设置超时

java - 如何从选择菜单中获取特定值并在 mysql 查询中使用她?

design-patterns - 使用依赖注入(inject)有哪些缺点?