前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java之struts2之ServletAPI

java之struts2之ServletAPI

作者头像
Vincent-yuan
发布2019-09-10 18:21:54
4200
发布2019-09-10 18:21:54
举报
文章被收录于专栏:Vincent-yuan

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

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

1. 解耦合方式


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

代码语言:javascript
复制
 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获取
代码语言:javascript
复制
  //登录
    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获取
代码语言:javascript
复制
  //登录
    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 通过实现接口的方式来获取
代码语言:javascript
复制
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;
    }
    
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 解耦合方式
  • 2.耦合方式获取ServletAPI
    • 2.1 通过ActionContext获取
      • 2.2 通过ServletActionContext获取
        • 2.3 通过实现接口的方式来获取
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档