將數據信息放到Seesion中有三種方式'。通過實例,分別說明一下。現有登陸的類,在其方法中實現了,將用戶信息放到Session中。
方法一:通過ActionContext訪問Servlet API,此種方式沒有入侵性
package com.bjpowernode.struts2;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction implements Action {
public String username;
public String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute()throws Exception{
if("admin".equals(username) && "admin".equals(password)){
//將登陸信息設置到session中
ActionContext.getContext().getSession().put("user",username);
//採用如下方式訪問request對象
//ActionContext.getContext().put(key,value);
//採用如下方式訪問application對象
//ActionContext.getContext().getApplication().put(key,value);
//通過request.getParameter()取得數據
//String username = ActionContext.getContext().getParameters().get("username");
return SUCCESS;
}else{
return ERROR;
}
}
}
package com.bjpowernode.struts2;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
public class MustLoginAction implements Action {
public String execute() throws Exception {
//從Session中讀取用戶信息
//getSession()得到的是Map
if(ActionContext.getContext().getSession().get("user")==null){
//重定向到登錄頁面
return LOGIN;
}
return SUCCESS;
}
}
方法二:通過實現裝配接口,完成對Servlet API的訪問
package com.bjpowernode.struts2;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.Action;
public class LoginAction implements Action,ServletRequestAware,ServletResponseAware {
public String username;
public String password;
private HttpServletRequest request;
private HttpServletResponse response;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute()throws Exception{
if("admin".equals(username) && "admin".equals(password)){
request.getSession().setAttribute("user", username);
return SUCCESS;
}else{
return ERROR;
}
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
}
package com.bjpowernode.struts2;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.Action;
public class MustLoginAction implements Action,ServletRequestAware {
private HttpServletRequest request;
public String execute() throws Exception {
//從Session中取得用戶信息
if(request.getSession().getAttribute("user")==null){
//重定向到登錄頁面
return LOGIN;
}
return SUCCESS;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}
方法三:
package com.bjpowernode.struts2;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.Action;
public class LoginAction implements Action {
public String username;
public String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute()throws Exception{
if("admin".equals(username) && "admin".equals(password)){
ServletActionContext.getRequest().getSession().setAttribute("user", username);
return SUCCESS;
}else{
return ERROR;
}
}
}
package com.bjpowernode.struts2;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.Action;
public class MustLoginAction implements Action {
public String execute() throws Exception {
if(ServletActionContext.getRequest().getSession().getAttribute("user")==null){
//重定向到登錄頁面
return LOGIN;
}
return SUCCESS;
}
}