今天在写一个Servlet,需要从获取很多web.xml中定义的参数。一般我们都这么取:
String param = getInitParameter("参数名");
//然后必须判断一下是否Null
if (param != null && param.length() >= 0) {
//处理参数
......
}
但是一个两个还好,参数太多的话就看到一大堆这种代码。感觉特别别扭。所以就想到了模板的方式,反正都是先取出来,然后判断,最后处理。处理这部分抽象出来,其他部分作为模板。
一个内部的模板类如下:
/**
* 模板参数处理内部抽象类
* @author Miao
* @version 0.2
* @since 0.2
*/
private abstract class ParameterTemplate {
/**
* 判断参数是否为Null
* @param param 参数
* @return 参数非Null返回true,参数为Null返回false
* @since 0.2
*/
private boolean isNotNullParam(String param) {
if (param == null || param.length() == 0) {
return false;
} else {
return true;
}
}
/**
* 处理参数
* @param name 参数名
* @since 0.2
*/
public void executeParameter(String name) {
String param = getInitParameter(name);
if (isNotNullParam(param)) {
setParameter(param);
}
}
/**
* 设置参数
* @param param 参数
* @since 0.2
*/
public abstract void setParameter(String param);
}
setParameter方法是抽象方法,用于在判断完成后处理参数。
然后读取参数就可以像下面这样:
new ParameterTemplate() {
@Override
public void setParameter(String param) {
//处理参数
......
}
}.executeParameter("参数名");
我现在正在考虑是否应该把获取参数部分也抽象出来,这样这个类就可以用在其他地方了,而不是局限于Servlet中。正在继续重构中。
不知道自己改得是简化了处理还是复杂了处理,大家也讨论讨论。
分享到:
相关推荐
实际上,当我评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和易于...
实际上,当我评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和易于...
01008获取模板保存的默认路径 01009获取库文件夹的路径 01010获取路径分隔符 01011获取Excel主窗口标题栏的名称 01012获取Excel窗口的状态(大小) 01013获取Excel主窗口的高度和宽度 01014获取Excel主窗口的左边界...
使用ng—include处理多个UI区域183 不支持嵌套路由184 65路由相关的模式及技巧185 处理链接185 创建可点击的链接186 兼容HTML5及hashbang模式186 链接外部页面187 组织路由定义187 将路由定义分离到多个模块...
在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...
机器⼈对话常⽤语模板_聊天机器⼈的技术原理和未来的发展 近年来,⼈⼯智能越来越⽕,那你们真的知道⼈⼯智能吗? ⼀、⼈⼯智能是什么 ⼀、⼈⼯智能是什么 ⼈⼯智能(Artificial Intelligence),英⽂缩写为AI。它是...
实例047 使用条件运算符判断数字的奇偶性 78 实例048 判断用户是否具有后台管理权限 79 实例049 打印随机组合生日祝福语 80 实例050 打印2000~2020年的所有闰年 81 实例051 前置运算符和后置运算符的区别 82 实例052...
Visual C++ 2005入门经典.pdf(整理并添加所有书签) ...22.4 在无约束模式中使用DataGridView控件 22.5 定制DataGridView控件 22.5.1 定制题头单元格 22.5.2 定制非题头单元格 22.5.3 动态设置单元格样式...
实例047 使用条件运算符判断数字的奇偶性 78 实例048 判断用户是否具有后台管理权限 79 实例049 打印随机组合生日祝福语 80 实例050 打印2000~2020年的所有闰年 81 实例051 前置运算符和后置运算符的区别 82 实例052...
Visual C++ 2005入门经典.pdf(整理并添加所有书签) ...22.4 在无约束模式中使用DataGridView控件 22.5 定制DataGridView控件 22.5.1 定制题头单元格 22.5.2 定制非题头单元格 22.5.3 动态设置单元格样式...
Visual C++ 2005入门经典.pdf(整理并添加所有书签) ...22.4 在无约束模式中使用DataGridView控件 22.5 定制DataGridView控件 22.5.1 定制题头单元格 22.5.2 定制非题头单元格 22.5.3 动态设置单元格样式...
Visual C++ 2005入门经典.pdf(整理并添加所有书签) ...22.4 在无约束模式中使用DataGridView控件 22.5 定制DataGridView控件 22.5.1 定制题头单元格 22.5.2 定制非题头单元格 22.5.3 动态设置单元格样式...
Visual C++ 2005入门经典.pdf(整理并添加所有书签) ...22.4 在无约束模式中使用DataGridView控件 22.5 定制DataGridView控件 22.5.1 定制题头单元格 22.5.2 定制非题头单元格 22.5.3 动态设置单元格样式...
Visual C++ 2005入门经典.pdf(整理并添加所有书签) ...22.4 在无约束模式中使用DataGridView控件 22.5 定制DataGridView控件 22.5.1 定制题头单元格 22.5.2 定制非题头单元格 22.5.3 动态设置单元格样式...
5.6.2 实例类型的判断方法instanceof 78 5.6.3 对象的克隆 78 5.7 一些设计观念 80 5.7.1 策略模式(Strategy Pattern) 81 5.7.2 单例模式(Singleton Pattern) 81 5.7.3 工厂模式(Factory Pattern) 83 5.8 接口...
lopen 以二进制模式打开指定的文件 lread 将文件中的数据读入内存缓冲区 lwrite 将数据从内存缓冲区写入一个文件 LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件 LZCopy 复制一个文件 LZInit 这个函数...