Struts2,在Action中使用session
为什么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相关推荐
- struts2在Action中访问Session,管理员删除用户
结构如下: 当没有登录admin用户去删除时: 当登录admin用户删除时: 首先是一个Servlet: LoginServlet.java package my;import java.io.IOE ...
- java struts2 ajax_在struts2的Action中返回Ajax数据
author:z_xiaofei168 如何在struts2的action中返回数据(普通字符串.图片)给ajax核心中的XMLHttpRequest对象. 今天下午做项目,就是用户注册是时候,登录名 ...
- struts2的action中获得request response session 对象
在struts2中有两种方式可以得到这些对象 1.非IoC方式 要获得上述对象,关键Struts 2中com.opensymphony.xwork2.ActionContext类.我们可以通过它的静态 ...
- struts2在action中获取request、session、application,并传递数据
假设仅仅是通过request.session.application传递数据,则不须要获取对应的对象也能够传递数据,代码例如以下: ScopeAction.java: package com.ithe ...
- struts2实验2:struts2.xml action中* ,{}以及${}
p.s 关键在于struts.xml中的匹配,使用* ,{}以及${}可以让代码更加简洁清晰 代码核心思路 在struts.xml中通过路由(url)去指定控制逻辑的Action中的方法,例如 < ...
- 在Struts2 的Action中怎样获取表单提交上来的多个checkbox的值
第一种方法:获取结果String类型 在 Action 中获得的是一个 String 型数据,每一个被选中的 checkbox 的 value 被拼接在一起,每个值之间以逗号隔开(,). 所以在 ...
- struts2 Action中获取session,request,respon值
在struts2中有两种方式可以得到这些对象 1.非IoC方式 Struts 2中com.opensymphony.xwork2.ActionContext类.我们可以通过它的静态方法getConte ...
- 【struts2】action中使用通配符
在以前的学习中,<action>元素的配置,都是用明确的配置,其name.class等属性都是一个明确的值.其实Struts2还支持class属性和method属性使用来自name属性的通 ...
- Struts2的Action中访问servletAPI方式
struts2的数据存放中心为ActionContext,其是每次请求来时都会创建一个ActionContext,访问结束销毁,其绑定在ThreadLocal上,由于每次访问web容器都会为每次请求创 ...
最新文章
- ubuntu 14.04 LTS 右键菜单解压压缩包时出错
- java 创建string对象机制 字符串缓冲池 字符串拼接机制 字符串中intern()方法...
- Visual Studio 2022发布了,我最爱的5大特性
- Linq动态查询与模糊查询
- 前端学习(2671): 逻辑实现
- Android 集成微信分享2,实现微信分享
- java开发计算机考试服务器_2011计算机二级JAVA编程:取得服务器当前的各种具体时间...
- 2020年什么编程语言最受欢迎,待遇最高?
- 面向对象的程序开发技术C++教学课件系列之二
- android一般会重载7个方法,《Android技术应用》答案(2013年)
- 【元胞自动机】基于元胞自动机模拟生命游戏含Matlab源码
- 【jzoj 5336】Timi / 提米树(DP)
- Python 程序员需要知道的 30 个技巧(转载)
- 10个常用的数据分析商业模型之漏斗模型(六)
- Spring5学习详细笔记
- 第45届ICPC沈阳站部分题解(D、F、G、H、I、J、K)
- 对百草味企业网站的诊断评价
- linux常用关机命令shutdown、halt、poweroff、init用法
- 干货丨浅谈足式机器人的运动控制
- 《百年孤独》--[哥伦比亚]加夫列尔·加西亚·马尔克斯