尊重版权:http://hi.baidu.com/dillisbest/item/0bdc35c0b477b853ad00efac
在Struts2里,假设须要在Action中使用session。能够通过以下两种方式得到1.通过ActionContext class中的方法getSession得到2.Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作 以下先看一个採用第一种方式。在action中得到session的样例

package s2.ex.action;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class SessionTestAction extends ActionSupport {

public String execute() {

ActionContext actionContext = ActionContext.getContext();

Map session = actionContext.getSession();

session.put("USER_NAME", "Test User");

return SUCCESS;

}

}在这个样例中,通过ActionContext得到session,并往session里放置一个key为USER_NAME,值为Test User的内容。 以下是一个实现org.apache.struts2.interceptor.SessionAware接口来对session操作的样例

package s2.ex.action;

import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

public class SessionTest1Action extends ActionSupport implements SessionAware {

private Map session;

public void setSession(Map session) {

this.session = session;

}

public String execute() {

this.session.put("USER_NAME", "Test User 1");

return SUCCESS;

}

}

在这个样例中实现了接口SessionAware中的setSession方法。 上面两种方式都能够得到session,能实现的功能都是一样的。

这里推荐通过另外一种方式来使用session,原因是便于做单体測试,用另外一种方式。仅仅须要构造一个Map就能够对action class进行单体測试了。

    在一个项目中可能会有非常多action都须要用到session,假设每一个action都来实现 org.apache.struts2.interceptor.SessionAware这个接口,可能会显得比較麻烦,所以建议作一个抽象的 BaseAction类来实现org.apache.struts2.interceptor.SessionAware接口,以后全部的action仅仅 要继承这个BaseAction就能够了。 以下是一个怎样在JSP中使用session的样例。

<%@ page contentType="text/html; charset=UTF-8" %>

<%@page pageEncoding="utf-8" %>

<%@taglib prefix="s" uri="/struts-tags" %>

<html>

<head>

<title>Session Test</title>

</head>

<body>

<h1><s:property value="#session.USER_NAME"/></h1>

<h1></h1>

</body>

</html>

   一般在项目中往往会往session里放置一个Object,必如说user,user里有个boolean admin和String userName。假设user里存在isAdmin的方法。在jsp中能够通过<s:if test="#session.user.admin">来推断用户有没有管理权限,通过<s:property value="#session.user.userName">或者来取得username。

【JAVA学习】struts2的action中使用session的方法的更多相关文章

  1. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  2. 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  3. 10、一个action中处理多个方法的调用第二种方法method的方式

    在实际的项目中,经常采用现在的第二种方式在struct.xml中采用清单文件的方式 我们首先来看action package com.bjpowernode.struts2; import com.o ...

  4. 10、一个action中处理多个方法的调用第一种方法动态调用

    我们新建一个用户的action package com.weiyuan.test; import com.opensymphony.xwork2.ActionSupport; /** * * 这里不用 ...

  5. 在struts2的action中操作域对象(request、session)

    在struts2的Action中,操作域对象一共有三种方式: 1.ActionContext(与servelt API无关联): //相当于request ActionContext.getConte ...

  6. Java学习-040-级联删除目录中的文件、目录

    之前在写应用模块,进行单元测试编码的时候,居然脑洞大开居然创建了一个 N 层的目录,到后来删除测试结果目录的时候,才发现删除不了了,提示目录过长无法删除.网上找了一些方法,也找了一些粉碎机,都没能达到 ...

  7. JavaWeb_(Struts2框架)Action中struts-default下result的各种转发类型

    此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...

  8. 在Struts2的Action中获得request response session几种方法

    转载自~ 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式.分别为se ...

  9. struts2在action中获取request、session、application,并传递数据

    假设仅仅是通过request.session.application传递数据,则不须要获取对应的对象也能够传递数据,代码例如以下: ScopeAction.java: package com.ithe ...

随机推荐

  1. Eclipse的调试功能(转)(让Eclipse也能有VS的即时窗口那样的即时代码调试功能)

    前言:可以很明确的说明,eclipse也有像vs那样的即时窗口来运行即时代码的功能. 调试的界面如下: 如果要像vs那样的即时调试功能,需要做一些设置,就是Expressions功能. 开通步骤:Wi ...

  2. JSONModel解析Dictionary To Model /JSON To Model

    你在把字典转成object的时候还在按下面这样: self.id = [jsonDict objectForKey:@"id"]; self.name = [jsonDict ob ...

  3. AIX 删除指定目录、指定后缀、指定天数以前的历史文件

    find /home/oracle/admin/zhjport/udump/ -name "*.trc" -mtime +30 -exec rm {} \; 如果要自动执行可以加入 ...

  4. FAB使用在CoordinatorLayout的隐藏动画

    import android.content.Context; import android.os.Build; import android.support.design.widget.Coordi ...

  5. openssl之EVP系列之12---EVP_Seal系列函数介绍

    openssl之EVP系列之12---EVP_Seal系列函数介绍     ---依据openssl doc/crypto/EVP_SealInit.pod翻译和自己的理解写成     (作者:Dra ...

  6. 2016.6.21 maven:Failure to transfer ... from ....

    问题描述: 才刚新建的工程,什么都没做,就显示pom.xml有问题,在第一行的标签上 有如下错误: 点击详情: Failure to transfer org.apache.maven:maven-p ...

  7. Android4.4电池管理

    一.概述 Android4.4的电池管理功能用于管理电池的充.放电功能. 整个电池管理的部分包含Linux电池驱动.Android电池服务.电池属性和參数.电池曲线优化四个部分. Linux电池驱动用 ...

  8. 地图之CLLocationManager的使用 定位功能使用

    1.iOS8曾经使用CLLocationManager 1.导入头文件 <CoreLocation/CoreLocation.h> 2.创建位置管理者 CLLocationManager ...

  9. SpringBoot学习之启动方式

    1.通过@SpringBootAppliction注解类启动 启动方法:找到注解类->鼠标右键->run as-> java application. 2 通过maven启动Spri ...

  10. cocos2d-x-lua基础系列教程五(lua单例)

    lua-单例 function newAccount(initlizedBanlance) local self = {balance = initlizedBanlance} local show ...