`
FansUnion
  • 浏览: 151217 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面向接口编程的一个小例子

 
阅读更多
注:本文重在强调面向接口编程,而非如何防止SQL注入。
今天,在做项目时,需要增加对SQL语句的检测功能,即防止SQL注入的问题。
首先想到的是写一个工具类来完成SQL检测功能:
public class SqlCheckUtil{
public static final String[] KEY_WORDS = { "insert", "delete", "update","select", "or", "and" };
/**
* 检测sql语句是否合法
*
* @param sql
* @return
*/
public static boolean checkSql(String sql) {
boolean flag = true;
int size = KEY_WORDS.length;
for (int index = 0; index < size; index++) {
if (sql.contains(KEY_WORDS[index])) {
flag = false;
break;
}
}
return flag;
}
}
调用方式:
String sql ="passwd = 123 or 2 = 2";
boolean flag= SqlCheckUtil.checkSql(sql);
----------------------------------------------------------------------------------------------------------------------------------------------------------
后来想到这个功能,也可以使用接口的方式来实现:
/**
* sql语句检测接口:检测sql语句是否合法。
*
* @author leiwen
*
*/
public interface SqlCheck {
/**
* 检测sql语句是否合法
*
* @param sql
* 需要检查的sql语句
* @return 合法返回true,不合法返回false.
*/
public boolean checkSql(String sql);
}
public class SqlCheckImpl implements SqlCheck {
public static final String[] KEY_WORDS = { "insert", "delete", "update",
"select", "or", "and" };
/**
* 检测sql语句是否合法
*
* @param sql
* @return
*/
public boolean checkSql(String sql) {
boolean flag = true;
int size = KEY_WORDS.length;
for (int index = 0; index < size; index++) {
if (sql.contains(KEY_WORDS[index])) {
flag = false;
break;
}
}
return flag;
}
}
调用方式:
String sql ="passwd = 123 or 2 = 2";
SqlCheck sqlChek = new SqlCheckImpl();
sqlCheck.checkSql(sql);
思考:这两种方法各有什么好处呢?
------------------------------------------------------------------------------------------------------------------------------------------
以前,总想着能把自己学过的东西全面地总结一下,可是发现一个技术话题往往涉及到太多的问题,全面地分析远远超出自己的能力。
写吧,太难;不写,心又不甘。最终,还是决定以小而实用的方式来写了。
分享到:
评论

相关推荐

    面向接口编程小例子练习程序

    面向接口编程小例子练习程序,接口程序练习,使用接口可以优化代码,使程序变得更加简单。

    java面向接口编程

    面向接口编程的例子,生活中的实例来说明接口的概念,对理解java接口有很大帮助!

    工厂模式与面向接口编程例子

    通过本例子理解工厂模式和面向接口编程,并更好理解接口的使用

    面向接口编程详解

    我想,对于各位使用面向对象编程语言的程序员来说,“接口”...而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是 什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。

    面向接口编程理解demo

    Android开发的语言是java,至少目前来说是,所以应该要理解面向接口编程的意思。

    IoC容器用户注册的例子面向接口编程

    Spring框架概述Spring是什么Spring的历史Spring的使命(Mission Spring包含的模块Spring的IoC容器用户注册的例子面向接口编程

    Java面向接口编程之简单工厂模式示例

    主要介绍了Java面向接口编程之简单工厂模式,结合实例形式详细分析了java面向接口编程简单工厂模式的具体定义与使用方法,需要的朋友可以参考下

    Java 基础之面向对象编程教程

    Java 基础之面向对象编程教程,主要类和对象、如何定义类、成员函数、访问控制修饰符、构造方法、类变量、类方法、方法重载、方法覆盖、抽象、封装、继承、多态、抽象类、接口和New 运算符等概念的介绍和例题介绍...

    springboot 中使用 AOP 的一个简单小例子,web 小应用

    springboot maven 项目,导入如 idea 开发工具,可快速运行的一个 web 小例子。 如果你正在使用 springboot 开发,并且想要使用 AOP ,那么这个正适合你。 springboot 2.7.16, 使用了 spring-boot-starter-aop。 ...

    写给大家看的面向对象编程书(第3版).[美]Matt Weisfeld(带详细书签).pdf

    1.6.3 接口/实现范型的一个实际例子 13 1.6.4 接口/实现范型的模型 14 1.7 继承 15 1.7.1 超类和子类 16 1.7.2 抽象 16 1.7.3 is-a关系 17 1.8 多态 18 1.9 组合 20 1.9.1 抽象 21 1.9.2 has-a关系 21 ...

    VB.NET Step By Step系列课程(5):VB.NET中的面向对象编程 (Level 200)

    在系列课程上一讲的基础上,本课程以用VB.NET2005开发具体应用为例子,详细介绍在VB.NET环境中如何运用面向对象的方法来组织工程,编写程序。所涉及的内容包括:定义和使用类,创建对象和实例,运用继承和接口等。...

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    一个接口去继承并实现多个接口的例子如下: view plaincopy to clipboardprint? interface A { public void printA() ; } interface B { public void printB() ; } interface C extends A,B { public ...

    DSP接口电路设计与编程

     7.3.4 生成一个调试版的工程  7.3.5 调试一个工程  7.3.6 一个正式版的工程  7.4 选择合适的调试平台  7.4.1 安装仿真器驱动软件  7.4.2 选择调试平台  7.4.3 多处理器调试  7.5 程序调试操作  7.6 程序...

    基于servlet+ajax用户注册登录系统小例子

    要求: 不能抄袭,没有分组,面向接口编程,不要迟到! 1、注册的信息: 用户名,密码,性别(下拉选择),爱好(复选框),城市(下拉选择),个人说明(文本域,富文本编辑器) 2、注册信息提交需要做js验证。 a、用户名...

    delphi 开发框架

    这是一个高级使用例子,演示如何面向接口编程,使界面独立出来,并包装了简单的数据库操作接口 、简单的权限控制等等。 5.CustomLoadModule 演示如何自已加载包,框架默认是自动从框架注册表加载包的,那样需要...

    小例子背后的大道理——从DIP中“倒置”的含义说接口的正确使用

    选开灯做例子,是因为这个例子既常见...咱也是学过设计模式的人,知道要面向接口编程,绝不应该简单地把Light类拆解成Light和Switcher两个类。因为Switcher不应该依赖于具体实现,于是写出了下面的代码。代码2这个设计

    C#面向对象编程基础概念汇总

    对象是一个自包含的实体,用一组可识别的特性和行为类标示,面向对象编程,就是针对对象编写类,就是具有相同属性和功能的抽象的集合。 注意: 类名称首字母要大写,多个单词则各个首字母大写; 对外公开的方法...

    Spring 学习笔记心得(九)AOP面向切面编程

    小编在这里举个例子吧 小编首先给出Spring全家桶,方便大家下载使用—-&gt;Spring全家桶 1.自定义代理对象代理类以及实现类 1.1 定义接口(ArithmeticCacluetator) public interface ArithmeticCacluetator { /* 定义...

Global site tag (gtag.js) - Google Analytics