zoukankan      html  css  js  c++  java
  • Struts2的学习-通配符和session对象

    一、 取得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

    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;
        }
    }

    方法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;
        }
    }

    添加之后要选上

    方法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; } }

      

  • 相关阅读:
    [多线程学习笔记]条件变量
    [多线程学习笔记]互斥量
    [多线程学习笔记]线程生命周期
    多定时器队列
    双向环形链表
    多目录,多可执行文件的Makfile的编写
    大工匠
    从零开始打造我的计算机系统【运行效果】
    从零开始打造我的计算机系统【交叉汇编器】
    C中的回调函数
  • 原文地址:https://www.cnblogs.com/junhua4254/p/7601673.html
Copyright © 2011-2022 走看看