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