📅  最后修改于: 2021-01-11 06:32:43             🧑  作者: Mango
SessionAware接口必须由Action类实现,以将信息存储在会话范围内。
它仅包含一个方法setSession。
Public and abstract Method | Description |
---|---|
void setSession(Map |
struts framework calls this method by passing the instance of SessionMap class. |
Struts 2框架传递org.apache.struts2.dispatcher.SessionMap的实例。它扩展了实现java.util.Map.SessionMap的java.util.AbstractMap类。 SessionMap类有许多有用的方法。
SessionMap类的常用方法如下:
Methods | Description |
---|---|
public Object put(Object key, Object value) | stores an attribute in the HttpSession object. |
public Object remove(Object key) | removes the attribute for the specified key and returns the attribute value. |
public Object get(Object key) | return a value for the corresponding key from the HttpSession object. |
public Set entrySet() | returns a set object containing all the key and value objects set in the HttpSession object. |
public void invalidate() | invalidates the current HttpSession object. |
public void clear() | removes all the attributes set in the HttpSession object. |
此示例包含三个链接login , logout和profile 。您必须先登录,然后才能单击个人资料页面。登录后,您可以进入个人资料页面。如果最终用户单击注销链接,则将无法访问个人资料页面。
步骤如下:
您需要添加struts 2和servlet库。
这个jsp页面创建了三个用于登录,注销和配置文件的链接。
这个xml文件定义了一个包和4个动作。每个动作至少定义一个结果页面。
对于loginprocess和logout动作,我们使用相同的动作类,但是调用方法不同。
login.jsp
/login-success.jsp
/login-error.jsp
/logout-success.jsp
/profile-success.jsp
/profile-error.jsp
该操作类实现SessionAware接口,并重写setSession方法以将信息存储在会话范围中。
对于注销,我们只是调用SessionMap的invalidate()方法。
package com.javatpoint;
import java.util.Map;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.SessionAware;
public class Login implements SessionAware{
private String name,password;
private SessionMap sessionMap;
//getters and setters
@Override
public void setSession(Map map) {
sessionMap=(SessionMap)map;
}
public String execute(){
if(password.equals("admin")){
sessionMap.put("login","true");
sessionMap.put("name",name);
return "success";
}
else{
return "login";
}
}
public String logout(){
if(sessionMap!=null){
sessionMap.invalidate();
}
return "success";
}
}
此类从会话范围获取信息,如果在会话范围中使用登录名找到任何信息,则返回成功,否则返回false。
package com.javatpoint;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
public class Profile{
public String execute(){
HttpSession session=ServletActionContext.getRequest().getSession(false);
if(session==null || session.getAttribute("login")==null){
return "login";
}
else{
return "success";
}
}
}
有很多视图组件:
该页面创建登录表单。
<%@ taglib uri="/struts-tags" prefix="s" %>
此页面显示带有用户名的欢迎消息。
<%@ taglib uri="/struts-tags" prefix="s" %>
Welcome,
此页面显示错误消息。
Sorry, username or password error!
此页面仅显示成功注销的消息。
You are successfully logged out!
此页面打印欢迎使用配置文件消息。
<%@ taglib uri="/struts-tags" prefix="s" %>
Welcome to Profile,
此页面将打印要首先登录的消息,并包括login.jsp页面。
Sorry, username or password error!
如果单击概要文件链接,那么您将被转发到profile-error.jsp
现在,输入您的姓名作为名称,并输入admin作为密码。
现在,您已成功登录
现在,单击配置文件。