dontide
dontide
2009-09-02 15:17

Ext+truts2 登陆

已采纳

我现在想用Ext+struts2做一个用户登陆,我的需求是从界面上面提交到Action,Action得到相应的用户数据后保存到Session里面,最后返回到Ext界面,界面的JS文件是导入到html网面里面的,我怎么才能在JS文件里面得到Session里面的数据,而且js代码不能写在html里面,因为多个页面用到该Session,界面代码如下
[code="java"]
var loginform = new Ext.FormPanel({
labelAlign : 'right',
title : '城市管理与监测平台',
buttonAlign : 'right',
width : 260,
frame : true,
plain : true,
defaultType : 'textfield',
labelWidth : 50,
labelSeparator : ':',
bodyStyle : 'padding:5px 5px 0',

    items : [{
        fieldLabel : '用户名',
        name : 'name',
        width : 125,
        allowBlank : false
    }, {
        fieldLabel : '密码',
        name : 'password',
        inputType : 'password',
        width : 125,
        allowBlank : false
    }, fradio],
    buttons : [{
        text : '登陆',
        handler : function() {
            if (loginform.form.isValid()) {
                loginform.getForm().submit({
                    url : 'member/login_loginUser.action',
                    waitMsg : '正在验证登陆信息,请稍后......',
                    failure : function() {
                        alert("sadf");
                        Ext.Dtg.session = '<%(User)session.get("login")%>';
                        alert("进来了,数据为:"+d);
                        d = '<%(User)session.get("login")%>';
                        alert("执行后得到数据" + d);
                        Ext.MessageBox.alert('信息', '登陆失败,请与管理员联系!');

                    }
                });
            }
        }
    }, {
        text : '重置',
        handler : function() {
            loginform.getForm().reset();
        }
    }]
})

[/code]

后台代码如下:
[code="java"]
public String loginUser(){
String menu = "[";
System.out.println(user);
user = memberService.getLoginUser(this.getName(), this.getPassword());
System.out.println(user);
if(user != null){
System.out.println(user.getMemberNo() + " " + user.getType());
List list = memberService.getMemberRightsByMemberId(user.getId());
for(MemberRight mr : list){
menu += "['"+mr.getResource().getName()+"', '"+mr.getResource().getResourceURL()+"'],";
System.out.println("菜单:" + mr.getResource().getName() + " URL地址:" + mr.getResource().getResourceURL());
}
menu = menu.substring(0, menu.lastIndexOf(","));
menu += "]";
System.out.println(menu);
Map session = ActionContext.getContext().getSession();
session.put("login", user);
} else {

    }
    return SUCCESS;
}

[/code]
类loginUser里面得到的数据很正常。
这个问题困扰我很久了,希望大家能帮帮我,先谢谢了!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • iteye_10013 iteye_10013 12年前

    不建议你把jsp的写在js里面...

    应该在jsp中写:
    [code="html"]

    //这段js要在你另一个js的前面 var login= '<%=(User)session.get("login")%>';

    [/code]

    然后在你的js里面就可以调用这个变量了
    Ext.Dtg.session = login;

    点赞 评论 复制链接分享
  • jpdan jpdan 12年前

    必须换成jsp,用<%%>去获取session
    HTML中是无法实现的

    点赞 评论 复制链接分享
  • iteye_10013 iteye_10013 12年前

    [quote]2 分钟前 DonTide 发给 我 的消息
    标题: Ext+Struts2 登陆
    正文:
    我的页面全都是html,没有JSP页面的,呵呵。[/quote]

    js无法操作session.

    点赞 评论 复制链接分享
  • iteye_15225 iteye_15225 12年前

    我建议LZ把User Json化了,然后传递到Ext中。

    当然要把User中的关键信息搞掉,比如密码这些信息。

    在jsp尽量不要有用户名这些信息,否则查看源代码就什么都看到了。

    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 12年前

    要这么写

    [color=red]<%=(User)session.get("login") %>[/color]

    点赞 评论 复制链接分享
  • johnlovely johnlovely 12年前

    为什么不用JSP而用HTML呢?JSP里面可以用request取session的啊

    点赞 评论 复制链接分享

相关推荐