Struts setSesssion()不起作用

时间:2014-09-07 14:06:02

标签: java jsp struts2 session-scope

我正在尝试将属性放入我的动作类

public String execute()  {
    String result = Action.SUCCESS;

    if (username.equals("pavan") && password.equals("kumar")){
        System.out.println("Success");
        Map<String, Object> session = new HashMap<String, Object>();
        session.put("username", username);
        session.put("role", 1);
        ActionContext.getContext().setSession(session);
        return Action.SUCCESS;
    }
    else{
        System.out.println("Input");
        return Action.INPUT;    

    }
}

当用户名和密码有效并返回适当的JSP时,将返回成功。 但我设置的会话属性在jsp

中不可见
<% if(session == null || session.getAttribute("username") == null) {
System.out.println("No valid session found");
response.sendRedirect("/Test/index.jsp");
}%>

以上代码是jsp将重定向到index.jsp"No valid session found"将在控制台中打印。

我缺少什么?

1 个答案:

答案 0 :(得分:0)

您遗漏session在两种情况下都是不同的对象。您不需要在代码中使用scriptlet。如果你想在会话中添加一些内容,你应该从动作上下文中获取会话映射

Map<String, Object> session = ActionContext.getContext().getSession();
session.put("username", username);
session.put("role", 1);
return Action.SUCCESS;

或直接使用servlet会话

HttpSession session = ServletActionContext.getRequest().getSession(); 
session.setAttribute("username", username);
session.setAttribute("role", 1);
return Action.SUCCESS;

但是第一种情况更可取,因为它得到了框架的支持。