一、 取得session 3种方法 1、context.getSession() -->>Map对象 2、HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST); 再通过request 对象取得HttpSession 3、实现SessionAware接口,让strtus自动注入session实例给我们。
二、
1.创建新项目,基本和一样,主要修改两个文件的代码
2.修改struts.xml
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{ 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; }}
方法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{ 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 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{ 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 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; }}
添加之后要选上
方法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,SessionAware{ //定义为null,不要管它怎么来 private Map 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 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(Mapmap) { session = map; } }
地址: