首页 > 代码库 > 包装 request Demo
包装 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 @Override10 public String getParameter(String name) {//返回单个参数11 String value=http://www.mamicode.com/req.getParameter(name);12 if(req.getMethod().equals("GET"))13 {14 try {15 value=http://www.mamicode.com/new String(value.getBytes("ISO-8859-1"),"UTF-8");16 } catch (UnsupportedEncodingException e) {17 e.printStackTrace();18 }19 }20 return value;21 }22 23 @Override24 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 @Override46 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。
包装 request Demo
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。