b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

javaweb过滤器与器_java过滤器配置_java器怎么写(9)

电脑杂谈  发布时间:2017-05-17 04:02:27  来源:网络整理

//HttpServletRequestWrapper:它实现了HttpServletRequest接口,继承当前对象之后,也是HttpServletRequest接口的实现类

//第一问题:增强request,可以直接实现接口,为什么要继承HttpServletRequestWrapper?

//因为HttpServletRequestWrapper,已经实现了接口的方法,我们只需继承就可以使用,

//如果需要对某些方法增强,只需要修改部分方法即可,其他,调用父类的方法就完成了

/**

* 补充(装饰(包装)设计模式心法):

1)定义一个类,实现被装饰对象的接口

2)定义一个成员变量,记住被装饰对象的引用

3)定义构造方法,传入被装饰对象的实例

4)改写要修改的方法

5)不需要改写的方法,调用被装饰对象的原来的方法

* */

//1)定义一个类,实现被装饰对象的接口

publicclass MyRequest extends HttpServletRequestWrapper{

//2)定义一个成员变量,记住被装饰对象的引用

private HttpServletRequest request = null;

//3)定义构造方法,传入被装饰对象的实例

//设置一个标记,用来防止,编码多次运行,要保证get方式编码,只运行一次

privatebooleanflag = false;

public MyRequest(HttpServletRequest request) {

super(request);

this.request = request;

}

//4)改写要修改的方法

//所有获取参数的方法,都需要改写

@Override

public Map<String, String[]> getParameterMap() {

//先判断请求的方式——每一次请求,只会有一种请求方式post get

String method = this.request.getMethod();

if("post".equalsIgnoreCase(method)){

//post请求方式

try {

this.request.setCharacterEncoding("utf-8");

returnthis.request.getParameterMap();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

returnsuper.getParameterMap();

}

}elseif("get".equalsIgnoreCase(method)){

//先获取所有的数

Map<String, String[]> map = this.request.getParameterMap();

if(map == null){

returnsuper.getParameterMap();

}

//如果flag是false,说明没有执行过,执行中文乱码处理

//如果flag是true,说明执行过乱码处理,不再重复

if(flag){

return map;

}

//遍历循环map集合,将每一个数据进行中文乱码处理

//循环map集合的时候,先获取所有key的Set集合,然后,根据key,获取value值

//当前循环结束,map集合中所有数据处理完成

for (String key : map.keySet()) {

//获取的数据是String数组


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-47577-9.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...