我正在尝试将属性放入我的动作类
中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"
将在控制台中打印。
我缺少什么?
答案 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;
但是第一种情况更可取,因为它得到了框架的支持。