Struts2的学习-通配符和session对象

时间:2023-03-08 20:15:07
一、 取得session 3种方法
1、context.getSession() -->>Map对象

2、HttpServletRequest request =
(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);  
再通过request 对象取得HttpSession

3、实现SessionAware接口,让strtus自动注入session实例给我们。 

二、
1.创建新项目,基本和Struts的学习-属性驱动和模型驱动一样,主要修改两个文件的代码
2.修改struts.xml
Struts2的学习-通配符和session对象

2.sesstion方法,编写UserAction.java

package com.nf.action;

import com.nf.entity.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import org.apache.struts2.interceptor.SessionAware; import java.util.Map; public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User(); //登录用的
public String login(){
System.out.println("用户名:"+user.getUserName());
if ("ad".equals(user.getUserName())&&"123".equals(user.getUserPassword())){
//登陆成功后,干什么?
return this.SUCCESS;
}else {
return this.ERROR;
}
}
//跳转到登陆页面的方法
public String loginView(){ return "loginViewSuccess";
} //不需要手动调用
public User getModel() {
//告诉struts,你帮我对user进行赋值
System.out.println("struts 调用我们的getModel,获得user的实例");
return this.user;
}
}

Struts2的学习-通配符和session对象

方法1:

package com.nf.action;

import com.nf.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import org.apache.struts2.interceptor.SessionAware; import java.util.Map; public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User(); //登录用的
public String login(){
System.out.println("用户名:"+user.getUserName());
if ("ad".equals(user.getUserName())&&"123".equals(user.getUserPassword())){
//登陆成功后,干什么? //第一种方法:通过context获得Map对象
//主动获得实例
ActionContext context = ActionContext.getContext();
Map<String , Object> session = context.getSession();
session.put("user",user); return this.SUCCESS;
}else {
return this.ERROR;
} }
//跳转到登陆页面的方法
public String loginView(){ return "loginViewSuccess";
} //不需要手动调用
public User getModel() {
//告诉struts,你帮我对user进行赋值
System.out.println("struts 调用我们的getModel,获得user的实例");
return this.user;
}
}

方法2:

package com.nf.action;

import com.nf.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.sun.net.httpserver.HttpServer;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.interceptor.SessionAware; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map; public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User(); //登录用的
public String login(){
System.out.println("用户名:"+user.getUserName());
if ("ad".equals(user.getUserName())&&"123".equals(user.getUserPassword())){
//登陆成功后,干什么? /* //第一种方法:通过context获得Map对象
//主动获得实例
ActionContext context = ActionContext.getContext();
Map<String , Object> session = context.getSession();
session.put("user",user);*/ //第2种方法
//对javaweb 产生强耦合
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)context.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);//这里的错误要导入
HttpSession session = request.getSession();
session.setAttribute("user",user); return this.SUCCESS;
}else {
return this.ERROR;
} }
//跳转到登陆页面的方法
public String loginView(){ return "loginViewSuccess";
} //不需要手动调用
public User getModel() {
//告诉struts,你帮我对user进行赋值
System.out.println("struts 调用我们的getModel,获得user的实例");
return this.user;
}
}

Struts2的学习-通配符和session对象

添加之后要选上

方法3:

package com.nf.action;

import com.nf.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.sun.net.httpserver.HttpServer;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.interceptor.SessionAware; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map; public class UserAction extends ActionSupport implements ModelDriven<User>,SessionAware{
//定义为null,不要管它怎么来
private Map<String , Object> session = null; private User user = new User(); //登录用的
public String login(){
System.out.println("用户名:"+user.getUserName());
if ("ad".equals(user.getUserName())&&"123".equals(user.getUserPassword())){
//登陆成功后,干什么? /* //第一种方法:通过context获得Map对象
//主动获得实例
ActionContext context = ActionContext.getContext();
Map<String , Object> session = context.getSession();
session.put("user",user);*/ /*//第2种方法
//对javaweb 产生强耦合
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)context.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
HttpSession session = request.getSession();
session.setAttribute("user",user);*/ //第3种方法,实现SessionAware直接注入实例
System.out.println("session:" +session);
session.put("user",user); return this.SUCCESS;
}else {
return this.ERROR;
} }
//跳转到登陆页面的方法
public String loginView(){ return "loginViewSuccess";
} //不需要手动调用
public User getModel() {
//告诉struts,你帮我对user进行赋值
System.out.println("struts 调用我们的getModel,获得user的实例");
return this.user;
} //用于被框架注入实例用的,不需要手动调用//这里为方法SessionAware可以用快捷键ALT+ENTER
  public void setSession(Map <String, Object> map) { session = map; } }
Struts2的学习-通配符和session对象