在Action初始化的时间引入ActionValues,并把ActionValues继承HashMap,ActionValues如果传递为对象会自动通过mysql拿到当前对象实体名称,然后根据实体的名称来当Key封装value值,如果没有参数默认是传递request,然后自动解析字符串存入map,并会过滤spring等一些配制文件的参数数据。

/**

* ActionValues数据封装

* @author zhouguohui

*/

public class ActionValues extends HashMap{

public ActionValues(){

super();

}

public ActionValues(Object obj){

String[] fieldNames=ModelUtils.getFieldNames(obj.getClass());

try{

for(String fieldName:fieldNames){

this.put(fieldName,BeanUtils.getProperty(obj, fieldName)==null?"":BeanUtils.getProperty(obj, fieldName));

}

}catch(Exception e){

e.printStackTrace();

}

}

public ActionValues(Map values){

this.putAll(values);

}

@SuppressWarnings("unchecked")

public ActionValues(HttpServletRequest request){

String name=null;

Enumeration paramNames=request.getParameterNames();

Enumeration attrNames=request.getAttributeNames();

while(paramNames.hasMoreElements()){

name=paramNames.nextElement();

if(name.startsWith("org.springframework")||name.equals("characterEncodingFilter.FILTERED")||name.equals("shiroFilter.FILTERED")||name.equals("roles.FILTERED")){//过滤spring参数

continue;

}

if(request.getParameterValues(name).length>1){

String[] values=request.getParameterValues(name);

for(String v:values){

if(StrUtils.isNotEmpty(v)){

put(name,v);

}

}

}else{

if(null!=request.getParameter(name)&&StrUtils.isNotEmpty(String.valueOf(request.getParameter(name)))){

put(name, request.getParameter(name));

}

}

}

while(attrNames.hasMoreElements()){

name=attrNames.nextElement();

if(name.startsWith("org.springframework")||name.equals("characterEncodingFilter.FILTERED")||name.equals("shiroFilter.FILTERED")||name.equals("roles.FILTERED")){//过滤spring参数

continue;

}

if(null!=request.getAttribute(name)){

put(name,request.getAttribute(name));

}

}

}

@Deprecated

public void addValues(Object obj){

String[] fieldNames=ModelUtils.getFieldNames(obj.getClass());

try{

for(String fieldName:fieldNames){

if(null!=BeanUtils.getProperty(obj, fieldName)&&!"".equals(BeanUtils.getProperty(obj, fieldName).trim())){

this.put(fieldName,BeanUtils.getProperty(obj, fieldName));

}

}

}catch(Exception e){

e.printStackTrace();

}

}

}

class action extends mysql{_java Action 请求封装(二)相关推荐

  1. axios请求封装(带拦截器)

    请求封装二(带拦截器) //请求 import service from '../utils/requst' export function hlserver(){return new Promise ...

  2. html中的form action属性,HTML form action 属性

    当提交表单时,发送表单数据到名为 "demo_form.html" 的文件(处理输入): First name: Last name: 菜鸟教程(runoob.com) First ...

  3. Struts2学习笔记 - Action篇定义逻辑Action

    有三种方法可以使一个Action处理多个请求 动态方法调用DMI 定义逻辑Acton 在配置文件中使用通配符 这文章就谈论一下定义逻辑Action 这里主要关注的是struts.xml配置文件,一般情 ...

  4. PHP Request请求封装

    /*** Request请求封装* Class Request* @package tool*/ class Request {// curl 请求错误码protected static $list_ ...

  5. action对象 java_struts2通过action返回json对象

    其实struts2通过action返回json挺简单的,但是就是老要忘,所以索性写在博客上.好的,开始. 首先是引入必须的jar包: struts2-json-plugin-2.3.24.jar 然后 ...

  6. 【 微信小程序请求封装】【进阶版】处理401请求token过期--重新登录--重新发起刚才过期的请求

    微信小程序请求封装(拦截器):处理请求过期–重新登录–重新发起刚才过期的请求 env.js //这里使用的接口呢都是自己模拟的,可以根据自己的需求进行添加module.exports={//开发环境的 ...

  7. 小程序仿 axios 请求封装

    一.新建request.js /** 功能:小程序仿 axios 的请求封装*/ export default class Request {// 配置项configure = {baseURL: ' ...

  8. uni-app 请求封装

    uni-app 请求封装 请求封装 // 默认配置 const instanceConfig = {baseURL: '',header: {'content-type': 'application/ ...

  9. ios 请求失败封装_vue_axios请求封装、异常拦截统一处理

    1.前端网络请求封装.异常统一处理 vue中采用axios处理网络请求,避免请求接口重复代码,以及各种网络情况造成的异常情况的判断,采用axios请求封装和异常拦截操作: axios 请求封装 // ...

最新文章

  1. Visual Studio c++必要的背景知识--链接与编译
  2. 刚开始学centos和Oracle
  3. lucene 学习一
  4. 服务器远程显示用户忙,服务器远程显示用户忙
  5. ASP.NET中的随机密码生成
  6. 运维大数据可视化分析平台来了,枯燥运维数据也可以生动起来
  7. Nginx配置proxy_pass
  8. linux中的运行模式,Linux系统运行模式介绍
  9. 信息学奥赛一本通(1075:药房管理)
  10. 学校中有老师和学生两类人,而在职研究生既是老师又是学生,对学生的管理和对教师的管理在他们身上都有体现。...
  11. APScheduler——定时任务框架
  12. 2019PMP项目管理考试报名时间取证流程-真题模拟题
  13. 多张图片合成一张jpg工具_如何将两张图片合成一张图片?
  14. 【STM32】开发板学习1 NUCLEO-L476RG:GPIO例程 点亮LED2灯
  15. 【Matlab】三维绘图总结
  16. 分形造型的常用模型,C构造简单的IFS图形
  17. JS/SQL MVC框架介绍
  18. Social Justice Awards秋季赛正式启动
  19. WEB漏洞-文件上传之后端黑白名单绕过
  20. eclipse html乱码

热门文章

  1. 赛道一双周冠军分享:我不是TFboy,所以新写了baseline
  2. python函数递归求和详解_Python 递归函数详解及实例
  3. linux下scrapy安装教程,linux centos7安装scrapy
  4. C++将double类型小数以16进制格式打印出
  5. Leetcode每日一题:28.implement-strstr(实现strStr())
  6. Java-Collection、List
  7. sift计算描述子代码详解_浅谈SIFT特征描述子
  8. cordova build android很慢,cordova build --release android命令打包下载gradle非常慢的问题...
  9. [Ext JS]3.2.3 下拉选项框 Combobox
  10. [设计模式-行为型]责任链模式(Chain of Responsibility)