struts2结合ajax实现无刷新登录

1、

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!-- 必须加入struts2-dojo-plugin-相应版本.jar 才能使用ajax-->
<%@taglib prefix="sx" uri="/struts-dojo-tags"%>
<html>
<!-- 必须加入struts2-dojo-plugin-相应版本.jar 才能使用ajax-->
<s:head theme="xhtml" />
<sx:head parseContent="true" debug="true" />
<title>惠生活管理系统</title>
<body>
    <a href="action.jsp">客户端API</a>
    <br>

    <div id="loginDiv">
        <div id="errorDiv"></div>
        <s:form name="divLoginForm" id="divLoginForm" action="login_admin"
            theme="xhtml">
            <s:label label="请输入用户名密码"></s:label>
            <s:textfield name="admin.name" label="账号" value="admin" />
            <s:password name="admin.password" label="密码" value="admin" />
            <!-- sx executeScripts-->
            <sx:submit value=" 登 录  " formId="divLoginForm"
                targets="loginSuccessDiv" executeScripts="true" />
        </s:form>
    </div>
    <div id="loginSuccessDiv" class="div" style="display: none;"></div>

</body>
</html>

2‘提交action之后赋相应值session、request

public String login() {
        if(iAdminService.validate(admin.getName(), admin.getPassword())!=0){
            getRequest().getSession(true).setAttribute("name", admin.getName());
            getRequest().setAttribute("status", "success");
        }else {
            getRequest().setAttribute("status", "failed");
        }
        return "script";
    }

3、scipt.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<s:bean id="date" name="java.util.Date"/>
<s:if test="%{#request.status=='success'}">
欢迎您,<s:property value="#session.name"/>. 登录时间:<s:date name="%{#date}"/>
<s:url action="logout_admin" id="divLogoutUrl"></s:url>
<s:a href="%{#divLogoutUrl}" theme="xhtml" >注销</s:a>
<script>
//将error置空
document.getElementById('errorDiv').innerHTML='';
//将登陆框隐藏
document.getElementById('loginDiv').style.display='none';
//显示成功信息
document.getElementById('loginSuccessDiv').style.display='';
</script>
</s:if>
<s:elseif test="%{#request.status=='failed'}">
<script>
document.getElementById('errorDiv').innerHTML="您输入的密码和账户名不匹配,请重新输入。";
</script>
</s:elseif>
<s:else>
<script>
//将成功信息置空
document.getElementById('loginSuccessDiv').innerHTML='';
//将登陆框显示
document.getElementById('loginDiv').innerHTML='';
//隐藏成功信息
document.getElementById('loginSuccessDiv').style.display='none';
</script>
</s:else>

Done

原文地址:https://www.cnblogs.com/xingyyy/p/3850485.html