当前位置: 首页 > news >正文

包装 request Demo

 1 //包装request,增强getParameter方法
 2     class MyReq extends HttpServletRequestWrapper{
 3         private HttpServletRequest req;
 4         public MyReq(HttpServletRequest req) {//构造,必须
 5             super(req);
 6             this.req=req;
 7         }
 8         
 9         @Override
10         public String getParameter(String name) {//返回单个参数
11             String value=req.getParameter(name);
12             if(req.getMethod().equals("GET"))
13             {
14                 try {
15                     value=new String(value.getBytes("ISO-8859-1"),"UTF-8");
16                 } catch (UnsupportedEncodingException e) {
17                     e.printStackTrace();
18                 }
19             }
20             return value;
21         }
22         
23         @Override
24         public Map getParameterMap() {//返回map参数
25             Map<String, String[]> map=req.getParameterMap();
26             if(req.getMethod().equals("GET"))
27             {
28                 Iterator<String[]> it=  map.values().iterator();
29                 while(it.hasNext())
30                 {
31                     String[] ss= it.next();
32                     for(int i=0;i<ss.length;i++)
33                     {
34                         try {
35                             ss[i]=new String(ss[i].getBytes("ISO-8859-1"),req.getCharacterEncoding());
36                         } catch (UnsupportedEncodingException e) {
37                             e.printStackTrace();
38                         }
39                     }
40                 }                
41             }            
42             return map;
43         }
44         
45         @Override
46         public String[] getParameterValues(String name) {//String[] 参数
47             String[] values=req.getParameterValues(name);
48             if(req.getMethod().equals("GET"))
49             {
50                 for(int i=0;i<values.length;i++)
51                 {
52                     try {
53                         values[i]=new String(values[i].getBytes("ISO-8869-1"),req.getCharacterEncoding());
54                     } catch (UnsupportedEncodingException e) {
55                         e.printStackTrace();
56                     }
57                 }
58                 
59             }            
60             return values;
61         }
62             
63     }

代理或是包装都是对某个类的方法进行增强。

              代理:必须要根据给定的接口,在内存中创建这个接口的子类。$Proxy0。

              包装:不需要接口,但声明声明一个类,变成被包装类的子类,同时拥有一个被包装类的成员。

什么情况下,使用包装,什么情况下使用代理

       如果官方(SUN)提供了包装类适配器,则应该优先使用包装。如HttpServletRequest,它的包装类就是HtpServletRequestWraper.

       如果官方没有提供包装类的适配器,则可以使用动态代理。如Connection。

 

转载于:https://www.cnblogs.com/liuwt365/p/4121208.html

相关文章:

  • Android Resource介绍和使用
  • 《全中国最穷的小伙子发财日记》重庆老康日记 目录
  • jQuery----事件
  • 关于const记录类型全局变量赋初值的问题
  • Silverlight 4 Training Kit更新
  • 信息系统,分层不要过多,静态方法也可以考虑适当多用
  • Larbin初试
  • 老板十本必读财经图书
  • 一款纯css3实现的超炫3D表单
  • ASP中一个“对象关闭时,不允许操作。”的诡异问题……
  • 超出打开游标的最大数异常的解决
  • sendmail配置文字版本(RHCE区域有图文版)
  • 人生在世,注定要受许多委屈
  • 封装类库总结录
  • 细说设计模式之模板方法
  • 5、React组件事件详解
  • android图片蒙层
  • Fundebug计费标准解释:事件数是如何定义的?
  • Java编程基础24——递归练习
  • MySQL数据库运维之数据恢复
  • ng6--错误信息小结(持续更新)
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • nodejs:开发并发布一个nodejs包
  • Spring Boot快速入门(一):Hello Spring Boot
  • XForms - 更强大的Form
  • 编写高质量JavaScript代码之并发
  • 后端_ThinkPHP5
  • 前端技术周刊 2019-01-14:客户端存储
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 事件委托的小应用
  • 一道面试题引发的“血案”
  • 阿里云重庆大学大数据训练营落地分享
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # 达梦数据库知识点
  • #《AI中文版》V3 第 1 章 概述
  • #git 撤消对文件的更改
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (solr系列:一)使用tomcat部署solr服务
  • (八十八)VFL语言初步 - 实现布局
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • ../depcomp: line 571: exec: g++: not found
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .net 验证控件和javaScript的冲突问题
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET6 命令行启动及发布单个Exe文件
  • .so文件(linux系统)
  • @font-face 用字体画图标
  • @Query中countQuery的介绍
  • @RequestBody的使用
  • @RequestMapping 的作用是什么?
  • [2016.7 test.5] T1