struts2 在服务端接收客户端提交时取得 session 的两种方法

14 篇文章 0 订阅

struts2 在服务端接收客户端提交时取得 session 的两种方法

struts2 取 session 不同于传统的 Servlet,而是需要继承 Servlet 或者是调用 ActionContext,两种方法在 struts2 中均可使用,侧重不同,结果一样。


导入类

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;


方法一:

Action 继承 ActionSupport 、ServletRequestAware、ServletResponseAware,以 Servlet 的方式取得 session,当 Action 被访问时,会自动先调用 setServletRequest 和 setServletResponse 以取得 session。

public class Action extends ActionSupport implements ServletRequestAware, ServletResponseAware
{
    // 设置全局变量处理 servlet 传入
    HttpServletRequest request = null;
    HttpServletResponse response = null;
    HttpSession httpSession = null;


    public void setServletRequest(HttpServletRequest request)
    {
        // 通过传统 Servlet 方式取得 request
        // 并得到 session
        httpSession = request.getSession();
        // 读取 session 中 LOGIN_NAME 值
        Object objLoginName = httpSession.getAttribute("LOGIN_NAME");
        if(objLoginName  != null)
        {
            ....
        }
    }

    public void setServletResponse(HttpServletResponse response)
    {
    }
}


方法二:

Action 继承 ActionSupport, 创建 ActionContext 对象取得 session

public class Action extends ActionSupport
{

    public String excute()
    {
        String strResult = Action.NONE;

        // 创建 ActionContext 以提取 session
        ActionContext actionContext = ActionContext.getContext();
        // 用 map 存储 session
        Map<String, Object> mapParam = actionContext.getParameters();
        Map<String, Object> mapSession = actionContext.getSession();

        // 取某个传入参数
        Object objLoginName = mapSession.get("LOGIN_NAME");;
        // 检查
        if(objLoginName  != null)
        {
            strResult = Action.SUCCESS;
        }
    }
    ......
    ......
    ......
    return strResult;
}

两种方法各有优缺,struts2 中官方倾向第二种方法,减少全局变量的使用,而且更直观;第一种方法对 Action Class 内需要 session 的方法操作会更简单,而这也是上代 struts 保留下来的方法。


以上代码未经调试,纯属直接写的,但逻辑表达已经达到,若有问题Q群讨论

Q群: 236201801

.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值