struts2 登陆拦截器的问题~~

我在UserAction中这样写的
public String execute() throws Exception {

    if (userService.isLogin(user)) {
        ActionContext context = ActionContext.getContext();
        Map<String, User> session = context.getSession();

        session.put("user", user);
        System.out.println("判断ACTION已经执行");
        return this.SUCCESS;
    }
    else
       return this.LOGIN;

}

在拦截器中
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
System.out.println("ssssssssssssssssssssss");
// 对LoginAction不做该项拦截
Object action = invocation.getAction();
if (action instanceof UserAction) {
System.out.println("exit check login, because this is login action.");
return invocation.invoke();
}
// 确认Session中是否存在LOGIN
Map session = invocation.getInvocationContext().getSession();
String user = (String) session.get("user");
if(user!=null&&user.length()>0){
// 存在的情况下进行后续操作。
System.out.println("already login!");

        return invocation.invoke(); 

    }else{
         // 否则终止后续操作,返回LOGIN 
        System.out.println("no login, forward login page!"); 
        return  Action.LOGIN;
    }

配置也已经完善好了,但是在进行登录的时候String user = (String) session.get("user");在这行 报错~我在Action中将从数据库中获取username和password内容 放在了 user中了~为什么 会报错?

4个回答

UserAction这样改:

[code="java"]public String execute() throws Exception {

if (userService.isLogin(user)) {
ActionContext context = ActionContext.getContext();
// -->改这里
Map session = context.getSession(); [/code]

拦截器:
[code="java"]
// 确认Session中是否存在LOGIN
Map session = invocation.getInvocationContext().getSession();

// -->改这里
User user = (User) session.get("user");
if(user!=null){
// 存在的情况下进行后续操作。
System.out.println("already login!");

   //.............[/code]

[quote]String user = (String) session.get("user");在这行 报错~[/quote]
[b]
是因为:
你的Session中存放的是User对象,不是String[/b]

[code="java"]session.put("user", user); [/code]

[b]下面的代码似乎有问题???

你put进去的是不是User对象?因为你的Map的value是User。
[/b]
[code="java"]Map session = context.getSession();

session.put("user", user); [/code]

你的错误信息是什么,是ClassCastException吗,你的user是一个对象呢?还是一个字符串,如果是一个对象,你强转成String,肯定报错了,不过一般我们在用户登录时,都是存储的对象。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问