Spring MVC4会话管理

时间:2016-01-29 14:44:18

标签: spring jsp session

我正在开发一个小型弹簧项目,其中登录页面有两种类型的用户admin和staff。登录尝试我想使用spring MVC4应用会话,并且还想根据用户角色(管理员或员工)打开jsp。 会话有四个/五个字段,如name,id,role,SessionId。我希望这些信息通过jsp页面传播。但我不想使用url参数传递来做到这一点。

我不知道该怎么做,因为我是春天的新人,这是我的第一个项目。请帮帮我。 如果有人可以提供示例代码并指导我,那么这将非常有帮助。

// Login.jsp代码

var MobileNo=$('#mobno').val();
            var StaffPwd=$('#pwd').val();
            $.ajax
            (
                    {
                    url: "http://localhost:8080/OnlineStore/kmsg/grocery/Login",
                    type: "POST",
                    data: {MobileNo: MobileNo,StaffPwd: StaffPwd},
                    success: function(data)
                    {
                        var vUserRole = data["UserRole"];
                        var vUserName = data["UserName"];

                        if(data==="")
                            {
                            alert("Login Failed");
                            }
                        else
                            {
                            if(vUserRole == "Admin")
                                {
                                   alert("Login Success: " + vUserName);
                                   window.location.href = "http://localhost:8080/OnlineStore/JspPages/City.jsp";
                                }
                            if(vUserRole == "CityAdmin")
                                {
                                    alert("Login Success: " + vUserName);
                                     window.location.href = "http://localhost:8080/OnlineStore/JspPages/Locality.jsp";
                                }
                            if(vUserRole == "Staff")
                                {
                                    alert("Login Success: " + vUserName);
                                    window.location.href = "http://localhost:8080/OnlineStore/JspPages/CustomerOrder.jsp";
                                }                           
                            }
                    },
                    error: function(e)
                    {
                    alert('Error:' +e)
                    }
                    }
            );

//这是控制器代码

 @RequestMapping("/Login") 
public @ResponseBody UserServiceModel selectStaff(@RequestParam Map<String,String> requestParams) throws Exception 
{ 
String MobileNo = requestParams.get("MobileNo"); 
String StaffPwd = requestParams.get("StaffPwd"); 
return staffAdapter.login(MobileNo, StaffPwd); 
}

--------------

1 个答案:

答案 0 :(得分:0)

只需将数据存储在某个可序列化的对象中。例如:

public class SessionData implements Serializable {
    private String name;
    private String id;
    private String role;

    //etc..

}

然后在用户首次登录时将此对象设置为会话属性:

session.setAttribute("sessionData", new SessionData(name, id, role, etc...))

要在JSP页面中访问此对象,您可以使用:${sessionScope['sessionData']}来访问特定字段:

${sessionScope['sessionData'].id}
${sessionScope['sessionData'].name}
${sessionScope['sessionData'].role}

要在JavaScript文件中访问这些属性,只需在JSP页面中定义一些页面数据,例如:

<script type="text/javascript">
    pageData = {
        id: "${sessionScope['sessionData'].id}",
        name: "${sessionScope['sessionData'].name}",
        role: "${sessionScope['sessionData'].role}"
    }
</script>

并在js文件中通过以下方式引用它们:

pageData.id
pageData.name
pageData.role

我可以看到您尝试创建基于角色的应用程序。您已经在使用Spring MVC了,为什么不使用Spring Security呢?我强烈建议这样做,因为它会让你的生活更轻松。