zoukankan      html  css  js  c++  java
  • java之struts2之ServletAPI

    在之前的学习中struts2已经可以处理大部分问题了。但是如果要将用户登录数据存入session中,可以有两种方式开存入ServletAPI。

    一种解耦合方式,一种耦合方式。

    1. 解耦合方式


    解耦合方式---ActionContext : 解耦合方式获取的都是map对象

     1   //登录
     2     public String login(){
     3         if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
     4             //登录成功  数据存入Session中
     5             //通过ActionContext可以获得Session
     6             Map<String,Object> session = ActionContext.getContext().getSession();
     7             session.put("currentUser", user);
     8             /**
     9              * 通过解耦合的方式还可以获取request,application
    10              */
    11             Map<String,Object> request = (Map<String, Object>) ActionContext.getContext().get("request");
    12             Map<String,Object> application = ActionContext.getContext().getApplication();
    13             return Action.SUCCESS;
    14         }
    15         return Action.LOGIN;
    16     }

    好处:方便测试,没有侵入性,ActionContext可以不在Servlet容器环境中使用

    2.耦合方式获取ServletAPI


    下面讲的是耦合方式获取的Servlet对象

    2.1 通过ActionContext获取

      //登录
        public String login(){
            if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
                //登录成功  数据存入Session中
                /**
                 * 通过ActionContext对象获取HttpServletRequest对象
                 */
                HttpServletRequest req = (HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
                HttpSession session = req.getSession();
                session.setAttribute("currentUser", user);
                /**
                 * 在ActionContext中还可以获取HttpServletResponse对象
                 * 和ServletContext对象
                 */
                HttpServletResponse resp = (HttpServletResponse)ActionContext.getContext().get(StrutsStatics.HTTP_RESPONSE);
                ServletContext sc =(ServletContext)ActionContext.getContext().get(StrutsStatics.SERVLET_CONTEXT);
                return Action.SUCCESS;
            }
            return Action.LOGIN;
        }

    2.2 通过ServletActionContext获取

      //登录
        public String login(){
            if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
                //登录成功  数据存入Session中
                //通过ServletActionContext以耦合方式获取ServletAPI对象
                HttpServletRequest req = ServletActionContext.getRequest();
                HttpSession session = req.getSession();
                session.setAttribute("currentUser", user);
                /**
                 * 通过ServletActionContext工具类还可以获取到其他的ServletAPI对象
                 */
                HttpServletResponse resp = ServletActionContext.getResponse();
                ServletContext sc = ServletActionContext.getServletContext();
                return Action.SUCCESS;
            }
            return Action.LOGIN;
        }

    2.3 通过实现接口的方式来获取

    public class UserAction4 implements ServletRequestAware{
        private User user;
        private HttpServletRequest req;
        @Override
        public void setServletRequest(HttpServletRequest request) {
            this.req = request;
        }
        //登录
        public String login(){
            if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
                //登录成功  数据存入Session中
                //通过ServletActionContext以耦合方式获取ServletAPI对象
                HttpSession session = this.req.getSession();
                session.setAttribute("currentUser", user);
                return Action.SUCCESS;
            }
            return Action.LOGIN;
        }
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
        
    }
  • 相关阅读:
    修改滚动条样式
    svg转png
    封装普通数据为树菜单结构数据模式
    js调用打印机打印
    jq 上传下载进度条
    html内容溢出部分...
    html调用html的方法
    4 人类社会及其发展规律
    7 社会主义
    8 共产主义
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/10970917.html
Copyright © 2011-2022 走看看