今天在写一个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中。正在继续重构中。
不知道自己改得是简化了处理还是复杂了处理,大家也讨论讨论。
分享到:
相关推荐
标题和描述中提到的知识点主要围绕了使用MATLAB软件对纳米模板进行图像处理,并提取其几何特征参数的过程。以下是对这部分内容的详细解释: 首先,文章明确了高质量纳米模板的重要性,这是制备高性能纳米功能材料的...
Beetl模板语言是一种...在模板中,可以方便地获取请求参数。 总之,Beetl模板语言凭借其易学、全面、高效的特点,为开发者提供了强大的视图层解决方案,无论是在Web开发还是代码生成等方面,都能发挥出显著的优势。
在实际项目中,你可能还需要处理异常、优化性能,以及考虑模板的复用和缓存等问题。 FreeMarker提供的功能远不止这些,它支持条件判断、循环、宏等高级特性,可以根据具体需求灵活运用。在进行FreeMarker编程时,...
包括责任链模式、命名模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板模式、访问者模式等。 常见设计模式: 工厂模式:工厂模式指由一个工厂对象来创建实例,客户端...
组件生成的内容会被缓存起来,以便在后续的模板处理中使用。接下来,进入模板的执行过程: 1. **加载模板参数**:如果模板定义了特定的参数,这些参数会在模板执行之初被加载,允许开发者通过模板配置来改变网站的...
简单工厂模式适用于当一个系统需要根据某些条件(如输入参数)动态决定创建哪个类的对象,而客户端又不希望直接处理这些复杂的判断逻辑时。 通过“创建模式-1.单例模式”和“创建模式-2.简单工厂模式”这两个文件...
- **页面元素逻辑判断**:可以使用条件语句如`@if (condition) { ... } else { ... }`来控制页面元素的显示与否。 - **循环输出元素**:可以使用`@foreach (var item in Model) { ... }`来遍历集合并输出每个元素。 ...
JSP页面可以包含HTML元素,用于用户输入,然后使用`request.getParameter()`获取表单数据,进行验证和处理。 4. **MVC模式**:购物车系统常采用Model-View-Controller(MVC)设计模式。模型(Model)处理业务逻辑和...
### Velocity模板使用指南中文版知识点总结 #### 一、Velocity简介 Velocity是一种基于Java的模板引擎,用于在Web页面中引用Java代码中定义的数据对象和命令。它支持将业务逻辑和展示逻辑分离,有助于实现MVC...
在判断文件是否被使用时,通常我们会尝试以独占模式(即不允许共享)打开文件。如果CreateFile函数返回一个有效的句柄,那么文件当前没有被其他进程使用;如果返回INVALID_HANDLE_VALUE,那么文件很可能正被其他进程...
实际上,当我评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和易于...
模板元编程中常见的模式包括:类型枚举(type enumeration),通过模板递归实现类型列表;类型算术,对类型进行加减操作,如`std::integral_constant`系列;以及类型条件判断,如`std::enable_if`,它可以基于某个...
开发者可以通过开启调试模式,获取详细的错误信息以便快速定位问题。 总结来说,红鸟PHP模板引擎通过简洁的语法和高效的执行,为PHP项目提供了一种优秀的模板解决方案。它使得前后端职责分明,提高了代码的可读性...
在软件开发中,设计模式是一种解决常见问题的模板或最佳实践,它们是经过验证的、在特定场景下高效且可重用的解决方案。本篇文章将深入探讨Java中的一个基础设计模式——工厂模式,以及它的一些变体,如简单工厂模式...
根据提供的文档信息,本文将详细解析PHP模板的相关知识点,包括如何在PHP中使用模板系统进行页面渲染、控制层如何调用数据以及与数据库交互的基本流程等。 ### PHP模板概述 PHP模板是一种用于分离业务逻辑与表示层...
实际上,当我评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和易于...
命令模式将请求封装为一个对象,从而让你使用不同的请求把客户端参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 **好处:** 1. **类间解耦**:命令模式有助于降低类间的耦合度。 2. **高内聚**:每个...
在Python中使用OpenCV时,我们可以利用其强大的图像分析和处理能力,比如轮廓提取和模板匹配。 轮廓提取是识别图像中特定形状或物体边界的过程。在OpenCV中,`cv.findContours()`函数用于找到图像中的轮廓。这个...
然而,有时在尝试使用此方法时可能会遇到“参数无效”的异常,这通常是由于流中的数据不正确或格式不受支持所导致。本文将深入探讨这个问题,提供解决方法,并讲解如何判断图片类型。 ### 问题原因 1. **流数据不...
5. **MVC(Model-View-Controller)**:JSP常与MVC设计模式结合使用,其中模型(Model)处理业务逻辑,视图(View)负责显示,控制器(Controller)处理用户请求并协调模型和视图。 6. **Servlet**:JSP的本质是...