Struts BaseAction工具类,封装Session,Request,Application,ModelDriven
package com.ssh.shop.action; import java.io.InputStream;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import java.util.Map; import javax.annotation.Resource; import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller; import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
//... /**
* 设置jsp中使用到的session、request、application
* 其他action继承该类,可以使用这些对象,而不用再重复地自己创建
*
* 注意:在项目启动的时候,struts过滤器会自动把相应的内置对象,
* 和内置对象对应的sessionMap、requestMap、applicateMap,
* 存储到ActionContext和值栈中,
* 实现的拦截器为servletConfig(org.apache.struts2.interceptor.ServletConfigInterceptor)
*
* Struts执行流程:创建action ---> 调用拦截器 ---> 拦截器访问成功后调用action的方法
*
* ServletConfigInterceptor源代码中有下面代码:(判断实现什么接口,就注入什么对象)
* if (action instanceof ApplicationAware) //如果action实现了ApplicationAware接口
((ApplicationAware) action).setApplication(context.getApplication());
if (action instanceof SessionAware)
((SessionAware) action).setSession(context.getSession());
if (action instanceof RequestAware)
((RequestAware) action).setRequest((Map) context.get("request"));
*
* 加入的ModelDriven泛型的使用方法
* @author Administrator
*
*/
@SuppressWarnings("unchecked")
@Controller
@Scope("prototype")
public class BaseAction<T> extends ActionSupport implements SessionAware,RequestAware,ApplicationAware,ModelDriven<T>{ //批量删除的记录的id数组
protected String ids; protected T model; protected Map<String, Object> session;
protected Map<String, Object> request;
protected Map<String, Object> applicate; /**
* 存储数据给前台,可以为记录count和总记录数,用来分页
*/
protected Map<String, Object> pageMap = null;
/**
* 流形式数据
*/
protected InputStream inputStream; /**
* Json格式数据
*/
List<T> jsonList = null; @Resource //spring属性注入
protected CategoryService categoryService;
@Resource
protected AccountService accountService;
@Resource
protected ProductService productService;
@Resource
protected UploadUtil uploadUtil; //用户文件上传(使用方法见product/save.jsp中图片上传)
protected FileUpload fileUpload; /**
* 很重要
* 获取T的具体类型
* 实现ModelDriven接口,必须要写此方法:获取实例
*/
@Override
public T getModel() {
ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
Class clazz = (Class) type.getActualTypeArguments()[0];
try {
model = (T) clazz.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
// System.out.println("model:"+model);
return model;
} @Override
public void setApplication(Map<String, Object> applicate) {
this.applicate = applicate;
} @Override
public void setRequest(Map<String, Object> request) {
this.request = request;
} @Override
public void setSession(Map<String, Object> session) {
this.session = session;
} public Map<String, Object> getPageMap() {
return pageMap;
} /**
* 只写get方法,用于将获取的数据传输给前台
* @return
*/
public InputStream getInputStream() {
return inputStream;
}
/**
* 只写get方法,用于将获取的数据传输给前台
* @return
*/
public List<T> getJsonList() {
return jsonList;
} public FileUpload getFileUpload() {
return fileUpload;
} public void setFileUpload(FileUpload fileUpload) {
this.fileUpload = fileUpload;
} }
Struts BaseAction工具类,封装Session,Request,Application,ModelDriven的更多相关文章
- (转载) 百度地图工具类封装(包括定位,附近、城市、范围poi检索,反地理编码)
目录视图 摘要视图 订阅 赠书 | 异步2周年,技术图书免费选 程序员8月书讯 项目管理+代码托管+文档协作,开发更流畅 百度地图工具类封装(包括定位,附近.城市.范围poi检索, ...
- Redis操作Set工具类封装,Java Redis Set命令封装
Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...
- Redis操作List工具类封装,Java Redis List命令封装
Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...
- Redis操作Hash工具类封装,Redis工具类封装
Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战
笔记 4.Redis工具类封装讲解和实战 简介:高效开发方式 Redis工具类封装讲解和实战 1.常用客户端 https://redisdesktop.com/download ...
- flink---实时项目--day02-----1. 解析参数工具类 2. Flink工具类封装 3. 日志采集架构图 4. 测流输出 5. 将kafka中数据写入HDFS 6 KafkaProducer的使用 7 练习
1. 解析参数工具类(ParameterTool) 该类提供了从不同数据源读取和解析程序参数的简单实用方法,其解析args时,只能支持单只参数. 用来解析main方法传入参数的工具类 public c ...
- 关于TornadoFx和Android的全局配置工具类封装实现及思路解析
原文地址: 关于TornadoFx和Android的全局配置工具类封装实现及思路解析 - Stars-One的杂货小窝 目前个人开发软件存在设置页面,可以让用户自定义些设置,但我发现,存储数据的代码逻 ...
- Android常见工具类封装
MD5加密 import android.annotation.SuppressLint; import java.security.MessageDigest; public class MD5 { ...
随机推荐
- PHP Deprecated: Comments starting with '#' are deprecated in *.ini 警告解决办法
新装的ubuntu 10.04系统,使用新立得装的PHP,但是每次我在命令行下执行php脚本时都会出如下的警告信息: PHP Deprecated: Comments starting with ' ...
- laravel5.0升级到laravel5.1
1.修改composer.json.将其中的"laravel/framework": "5.0.*"修改为"laravel/framework&quo ...
- Android 常用工具类之SPUtil,可以修改默认sp文件的路径
参考: 1. 利用Java反射机制改变SharedPreferences存储路径 Singleton1900 2. Android快速开发系列 10个常用工具类 Hongyang import ...
- HTTP详解(1)-工作原理【转】
转自:http://blog.csdn.net/hguisu/article/details/8680808 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 1 HTTP简 ...
- [转]微软SerialPort秘籍[SerialPort为什么死锁程序的分析]
既然是秘籍,显然是写一些大家不常找到的,MSDN里遗漏提示大家注意的东西. 用过.net 2.0中,自带SerialPort的人,大多都遇到过.莫名其妙的执行Close的时候会死掉的问题.而Wince ...
- paste DEMO合并文件
测试数据: [xiluhua@vm-xiluhua][~]$ cat msn.txt aaa bbb bbb ccc ccc ddd bbb eee aaa ccc bbb sss [xiluhua@ ...
- jquery.rotate.js库中的rotate函数怎么用。
rotate是jQuery旋转rotate插件,支持Internet Explorer 6.0+ .Firefox 2.0 .Safari 3 .Opera 9 .Google Chrome,高级浏览 ...
- Asp.net mvc5 系列笔记
程序版本 vs 2015 1.0.0-beta4 ,得到你的肯定是我最大的动力. Asp.net Vnext 调试源码 Asp.net Vnext 自定义日志 Asp.net Vnext 中间件实 ...
- 理解 Android Build 系统
在配置了以上的文件之后,便可以编译出我们新添加的设备的系统镜像了. 首先,调用“source build/envsetup.sh”该命令的输出中会看到 Build 系统已经引入了刚刚添加的 vendo ...
- [团队项目] Scrum 项目 2.0 产品BACKLOG
Scrum 项目 2.0 阅读教材第8章,8.1~8.3节 P157~168,了解获取用户需求的办法,每个组可以选择一二加以应用. 8.4节P168-171 查阅NABCDA模型的具体说明. 2.SC ...