为什么80%的码农都做不了架构师?>>>   

在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">或者来取得用户名

转载于:https://my.oschina.net/sunzy/blog/164275

Struts2,在Action中使用session相关推荐

  1. struts2在Action中访问Session,管理员删除用户

    结构如下: 当没有登录admin用户去删除时: 当登录admin用户删除时: 首先是一个Servlet: LoginServlet.java package my;import java.io.IOE ...

  2. java struts2 ajax_在struts2的Action中返回Ajax数据

    author:z_xiaofei168 如何在struts2的action中返回数据(普通字符串.图片)给ajax核心中的XMLHttpRequest对象. 今天下午做项目,就是用户注册是时候,登录名 ...

  3. struts2的action中获得request response session 对象

    在struts2中有两种方式可以得到这些对象 1.非IoC方式 要获得上述对象,关键Struts 2中com.opensymphony.xwork2.ActionContext类.我们可以通过它的静态 ...

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

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

  5. struts2实验2:struts2.xml action中* ,{}以及${}

    p.s 关键在于struts.xml中的匹配,使用* ,{}以及${}可以让代码更加简洁清晰 代码核心思路 在struts.xml中通过路由(url)去指定控制逻辑的Action中的方法,例如 < ...

  6. 在Struts2 的Action中怎样获取表单提交上来的多个checkbox的值

    第一种方法:获取结果String类型   在 Action 中获得的是一个 String 型数据,每一个被选中的 checkbox 的 value 被拼接在一起,每个值之间以逗号隔开(,). 所以在 ...

  7. struts2 Action中获取session,request,respon值

    在struts2中有两种方式可以得到这些对象 1.非IoC方式 Struts 2中com.opensymphony.xwork2.ActionContext类.我们可以通过它的静态方法getConte ...

  8. 【struts2】action中使用通配符

    在以前的学习中,<action>元素的配置,都是用明确的配置,其name.class等属性都是一个明确的值.其实Struts2还支持class属性和method属性使用来自name属性的通 ...

  9. Struts2的Action中访问servletAPI方式

    struts2的数据存放中心为ActionContext,其是每次请求来时都会创建一个ActionContext,访问结束销毁,其绑定在ThreadLocal上,由于每次访问web容器都会为每次请求创 ...

最新文章

  1. ubuntu 14.04 LTS 右键菜单解压压缩包时出错
  2. java 创建string对象机制 字符串缓冲池 字符串拼接机制 字符串中intern()方法...
  3. Visual Studio 2022发布了,我最爱的5大特性
  4. Linq动态查询与模糊查询
  5. 前端学习(2671): 逻辑实现
  6. Android 集成微信分享2,实现微信分享
  7. java开发计算机考试服务器_2011计算机二级JAVA编程:取得服务器当前的各种具体时间...
  8. 2020年什么编程语言最受欢迎,待遇最高?
  9. 面向对象的程序开发技术C++教学课件系列之二
  10. android一般会重载7个方法,《Android技术应用》答案(2013年)
  11. 【元胞自动机】基于元胞自动机模拟生命游戏含Matlab源码
  12. 【jzoj 5336】Timi / 提米树(DP)
  13. Python 程序员需要知道的 30 个技巧(转载)
  14. 10个常用的数据分析商业模型之漏斗模型(六)
  15. Spring5学习详细笔记
  16. 第45届ICPC沈阳站部分题解(D、F、G、H、I、J、K)
  17. 对百草味企业网站的诊断评价
  18. linux常用关机命令shutdown、halt、poweroff、init用法
  19. 干货丨浅谈足式机器人的运动控制
  20. 《百年孤独》--[哥伦比亚]加夫列尔·加西亚·马尔克斯

热门文章

  1. 开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析
  2. 我如何判断漏洞奖励计划是否值得参加?如何获得最大收益?
  3. CVE-2020-0688 Exchange 远程代码执行分析
  4. SYSTEM 表空间管理及备份恢复
  5. ansible-playbook agent实例
  6. mac osx vi 设置tab 四个空格
  7. 森林病虫防治系统 (七)
  8. IK Analyzer 和 lucene结合使用
  9. Oracle下的用户创建角色、授权、建立表空间
  10. DP练习(初级):ZigZag