一:实现密码的加密:
import java.security.MessageDigest;
public final class MD5 {
public final static String encode(String str) {
StringBuffer buf = new StringBuffer();
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(str.getBytes());
byte[] bytes = md5.digest();
for (int i = 0; i < bytes.length; ++i) {
String s = Integer.toHexString(bytes[i] & 0xFF);
if (s.length() == 1) {
buf.append("0");
}
buf.append(s);
}
} catch (Exception localException) {
}
return buf.toString();
}
二:判断是否是整数:
public class ParUtile {
//判断是否是整数的正则表达式
public static boolean isNumber(String key){
if(key != null && key.length() > 0){
return key.matches("^[0-9]+$");
}else{
return false;
}
}
}
三:对一些html标签进行过滤,防止脚本攻击:
public final class SecHtmlUtils {
public static String htmltostr(String temp){
temp = temp.replaceAll("<","<");
temp = temp.replaceAll("'","&");
temp = temp.replaceAll("\"",""");
return temp = temp.replaceAll(">",">");
}
public static void main(String[] args){
System.out.println(SecHtmlUtils.htmltostr("<script>alert(ok)</script>"));
}
}
四.实现对数据库更新和查询的方法封装:
1.实现更新(修改,删除,添加)
public static boolean update(String sql, Object[] param) {
Connection conn = null;
PreparedStatement stmt = null;
int rs = 0;
try {
conn = getConnection();
stmt = conn.prepareStatement(sql);
param(stmt, param);
rs = stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(null, stmt, conn);
}
return rs != 0;
}
2.实现查询:
public static List<String[]> query(String sql,Object [] param){
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
ResultSetMetaData mate = null;
List<String[]> list = new ArrayList<String[]>();
try{
conn = SQLHelper.getConnection();
stmt = conn.prepareStatement(sql);
param(stmt,param);
rs= stmt.executeQuery();
mate=stmt.getMetaData();
int count = mate.getColumnCount();
while(rs.next()){
String[] arr = new String[count];
for(int i=1;i<arr.length;i++){
arr[i-1]=rs.getString(i);
}
list.add(arr);
}
}catch(Exception e){
e.printStackTrace();
}finally{
SQLHelper.close(rs, stmt, conn);
}
return list;
}
3.在上面的方法中都调用了同一个方法,因为代码块相同,不必写多次,所以有写成了一个方法,直接调用即可:
private static void param(PreparedStatement stmt,Object[] param){
if(param != null){
//i=0 4:: 0 1 2 3
//info.getName() java.lang.String
//java.lang.String
try{
for(int i = 0 ; i < param.length;i++){
if(param[i].getClass() == java.lang.Integer.class){
stmt.setInt(i+1, (Integer)param[i]);
}else if(param[i].getClass() == java.lang.String.class){
stmt.setString(i+1, (String)param[i]);
}else if(param[i].getClass() == java.util.Date.class){
stmt.setTimestamp(i+1, conDD((java.util.Date)param[i]));
}
}
}catch(Exception e){
e.printStackTrace();
}
}
}
在上面的类和方法中使用的时候可以直接调用,这样大大减少了很多的代码量,也提高了编程的效率,也提高了代码的复用率。特别是那个两个对数据库操作的方法中,需要修改,添加删除,查询时,只需写操作的sql语句,传进相应的参数即可使用,避免了每一次操作数据库都要写很多的东西。
分享到:
相关推荐
本文实例讲述了Python操作Oracle数据库的简单方法和封装类。分享给大家供大家参考,具体如下: 最近工作有接触到Oracle,发现很多地方用Python脚本去做的话,应该会方便很多,所以就想先学习下Python操作Oracle的...
我们可以封装一个类,提供`addClass`和`removeClass`方法,分别用于添加和删除指定的类名。这两个方法可以利用DOM元素的`classList`属性,它提供了方便的方法来操作类名,如`add`、`remove`、`toggle`等。 3. **...
方法的重载(Overloading)是指在同一个类中可以有多个同名方法,但它们的参数列表必须不同(参数数量、类型或顺序)。这使得我们可以根据传入的参数不同执行不同的操作,增强了代码的可读性和灵活性。 总结起来,...
这里提到的"Android 封装的工具类"涵盖了几种关键的模块,包括网络请求、数据库操作、数据加密以及JSON解析。以下是对这些工具类的详细介绍: 1. **网络请求工具类(HttpUtils.java)** 在Android应用中,我们常常...
总的来说,"Okhttp关于https封装的几个工具类"主要是围绕如何创建一个安全、可定制的OkHttpClient实例,并通过OkHttpClientManager进行管理。在实际开发中,根据项目需求,我们可以对这些工具类进行扩展和调整,以...
该开源项目包含的组件可能包括以下几个部分: 1. **基础Socket封装**:这是对原始Socket类的基本包装,增加了错误处理、连接管理、自动重连等功能,使得在编写网络应用时更加简单。 2. **客户端组件**:客户端组件...
这个文件很可能是封装类的主体部分,包含了对HCNetSDK接口的定义、实现和可能的辅助方法。通过这个文件,开发者可以访问海康威视设备的各种功能,如视频流的获取、设备控制、录像回放等。 在实际使用这个封装类时,...
在这个"常用js方法封装"的项目中,我们可以期待看到以下几类JavaScript方法的封装: 1. 链式操作:通过return this机制,实现方法之间的链式调用,如$.extend()在jQuery中就是这样实现的,可以连续设置多个属性或...
通过创建一个简单的接口或类,开发者可以隐藏底层复杂的配置和调用细节,使得其他团队成员或者开发者只需要调用几个简洁的方法就能完成HTTP操作。此外,封装还能统一处理错误、日志、性能优化等,减少代码重复,提升...
封装的类会提供方法来设置和管理这些头信息。 4. **上传和下载进度**:对于大文件的上传或下载,封装的类通常会提供进度回调,以便于用户界面更新进度条或执行其他操作。 5. **错误处理**:当请求出现错误时,封装...
封装类通常会包含以下几个关键部分: 1. **连接管理**:封装类中会有一个或多个方法用于创建、打开、关闭数据库连接。例如,`OpenConnection()`用于建立连接,`CloseConnection()`用于断开连接。这可以确保在使用完...
在这个类中,可能包括构造函数、析构函数、静态方法(用于记录日志)以及其他辅助方法(如获取当前时间戳、格式化字符串等)。 总之,一个功能完善的日志封装类对于C++开发者来说是一个宝贵的工具,它能够提供有效...
这个"Page"分页类的实现可能包括以下几个核心组件: 1. **初始化**:类的构造函数接收必要的参数,如总记录数、每页显示的条目数、当前页数等,用于计算总的页数和其他相关属性。 2. **计算总页数**:根据总记录数...
在编程领域,线程是操作系统分配CPU执行时间的基本单元,...在提供的文件列表中,"线程"可能是包含这个封装线程类的源代码文件,你可以通过查看和学习这个类的实现,进一步理解如何在VC++环境中有效地管理和控制线程。
开发这样一个类时,我们通常会考虑以下几点: - **兼容性**:确保类能与不同版本的Word兼容,因为不同的Word版本可能会有不同的API或行为差异。 - **性能优化**:尽可能减少与Word的交互次数,例如通过批处理操作...
USB HID(Human Interface Device)通讯类封装是一种在嵌入式系统、个人计算机和其他支持USB设备之间进行通信的技术。HIDAPI(Human Interface Device Application Programming Interface)是用于与HID设备交互的...
这个类可能包含以下几个关键部分: 1. **类定义**:定义一个名为`Log`的类,通常包含私有成员变量来存储日志信息,如日志级别(如DEBUG、INFO、WARN、ERROR等)、日志文件路径等。 ```cpp class Log { private: ...
3. SqliteRecord:这个类代表了查询结果的一行数据,即一条记录。它可能提供了访问字段值的方法,可以通过字段名或索引进行操作。有时,它还可以转换为常见的数据结构,如std::map或std::vector,方便进一步处理。 ...
这个"FG_DIB"封装类可能包含了以下几个关键功能: 1. **构造与初始化**:类的构造函数可能接受一个位图资源或文件路径,用来初始化DIB对象。初始化过程中,类会读取位图头信息,包括位图宽度、高度、色彩位深等。 ...
通常,这类封装类会提供如`OpenConnection`、`ExecuteSQL`、`FetchRow`和`CloseConnection`等方法,以完成数据库的基本操作。 在实际应用中,"ADO封装类"可能会包含以下关键知识点: 1. **数据库连接**:封装类...