封装的一个asp.net验证码类
第一个反映是验证码的这些属性是否可以设置(也就是说是封装成一个类,然后以暴露公有属性和方法的方式来使用的,还是在直接在一般处理程序中实现了验证码的生成到输出),结果比较可惜,是后者...... 里面的算法感觉挺不错,至少对于我这种对算法几乎是不懂的人来说是这样,于是想到去封装一下她然后无耻地纳入自己的类库中去^^
首先分析一下这份代码中的不足(自己觉得的):
1、面向过程式的编程,如果要修改验证码的属性,例如修改字体的大小、背景颜色等细节的东西,需要去一般处理程序中找到相关的代码,修改之。不过这份代码比较好,把生成验证码字符串和生成图片用不同的方法分开,很容易找到要修改的地方。
2、如果我想把这个功能应用到其他地方,例如winform程序中,那么这份代码没办以一个组件(一个dll)形式被复用,而是被复制粘贴然后修改...
3、没有发现验证码生成之后有存起来(- -!)
当然,所谓的不足是相对而言的,就是有时间来思考然后慢慢设计一个验证码类的话肯定能作出一个比较不错的类出来的,但如果是在做项目并且项目很紧急的话,这样的代码其实是比较给力的,那些所谓的面向对象设计模式代码解耦啥的都是浮云~~~
接下来是我对这份代码的修改,首先确定自己要什么样的效果,就是说封装起来后我希望怎样来使用他。首先我希望在使用的时候只需要new一个验证码实例(需要的话可以对验证码的各个属性可以任意设置),然后可以调用这个实例的某些方法分别以字符串、流、位图对象、byte数组的形式获取到这个验证码(说明,这个验证码类不包括把验证码存进上下文的功能,个人觉得生成验证码和把验证码存到上下文是两种不同的功能,没必要把这功能做到验证码类中去)。这样的话在一般处理程序中代码就变得异常简单了,首先只要new出一个验证码,然后调用方法以字符串的形式获取到这个验证码,然后存到上下午中,至于存在Session中或者Cookie中就按照需要来了,验证码类不管这些的;然后是调用另外一个方法以byte数组的形式获取到这个验证码,这样通过context.Response.BinaryWrite()方法就可以输出图片了,也就是说一般处理程序中只有三句代码。调用的代码大致如下:
/// <summary> /// 获取验证码(一般处理程序入口函数) /// </summary> /// <param name="context">当前上下文</param> public void ProcessRequest(HttpContext context) { // 创建验证码 ValidateCode validateCode = new ValidateCode(); // 获取验证码(字符串),写入Session context.Session["SomeValidateCode"] = validateCode.GetString(); // 输出验证码(图片) context.Response.BinaryWrite(validateCode.GetByteArray()); }
PS:记得刚出来工作的时候代码写得很差(比现在差),一般拿到一份代码都是直接用,从来没有想过是否要把代码进行修改或者封装,那时候被我的师傅教导了一次印象很深刻。个人感觉其实用别人的代码没什么不好的,一来别人用过至少证明代码的可用性,另外智商有限,有些东西自己想破头皮也没有别人想的好,但是用别人的代码一定不要盲目地拿了就用,最好根据自己的实际情况进行必要的修改或者封装,哪怕是简单的隔一层也好。当然了,还是那句话,如果项目紧急的话这样做明显是浪费时间的,总之就是不要不思考,拿了就用,至少看把关键的代码或者代码的整体结构弄清楚。
更封装的一个asp.net验证码类相关文章请关注PHP中文网!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Kaedah penggunaan simbol dalam bahasa C meliputi aritmetik, tugasan, syarat, logik, pengendali bit, dan lain-lain. Operator aritmetik digunakan untuk operasi matematik asas, pengendali tugasan digunakan untuk penugasan dan penambahan, penolakan, pendaraban dan tugasan pembahagian, pengendali keadaan digunakan untuk operasi yang digunakan untuk operasi yang digunakan untuk Operasi Bit untuk Penunjuk null, penanda akhir fail, dan nilai bukan angka.

Perbezaan antara multithreading dan asynchronous adalah bahawa multithreading melaksanakan pelbagai benang pada masa yang sama, sementara secara tidak sengaja melakukan operasi tanpa menyekat benang semasa. Multithreading digunakan untuk tugas-tugas yang berintensifkan, sementara asynchronously digunakan untuk interaksi pengguna. Kelebihan multi-threading adalah untuk meningkatkan prestasi pengkomputeran, sementara kelebihan asynchronous adalah untuk tidak menghalang benang UI. Memilih multithreading atau asynchronous bergantung kepada sifat tugas: tugas-tugas intensif pengiraan menggunakan multithreading, tugas yang berinteraksi dengan sumber luaran dan perlu menyimpan respons UI menggunakan asynchronous.

Arus char menyimpan urutan watak dalam bahasa C dan diisytiharkan sebagai array_name char [saiz]. Unsur akses diluluskan melalui pengendali subskrip, dan elemen berakhir dengan terminator null '\ 0', yang mewakili titik akhir rentetan. Bahasa C menyediakan pelbagai fungsi manipulasi rentetan, seperti strlen (), strcpy (), strcat () dan strcmp ().

Dalam C, jenis char digunakan dalam rentetan: 1. Simpan satu watak; 2. Gunakan array untuk mewakili rentetan dan berakhir dengan terminator null; 3. Beroperasi melalui fungsi operasi rentetan; 4. Baca atau output rentetan dari papan kekunci.

Dalam bahasa C, watak -watak khas diproses melalui urutan melarikan diri, seperti: \ n mewakili rehat garis. \ t bermaksud watak tab. Gunakan urutan melarikan diri atau pemalar watak untuk mewakili watak khas, seperti char c = '\ n'. Perhatikan bahawa backslash perlu melarikan diri dua kali. Platform dan penyusun yang berbeza mungkin mempunyai urutan melarikan diri yang berbeza, sila rujuk dokumentasi.

Dalam bahasa C, penukaran jenis char boleh ditukar secara langsung kepada jenis lain dengan: Casting: Menggunakan aksara pemutus. Penukaran Jenis Automatik: Apabila satu jenis data dapat menampung jenis nilai lain, pengkompil secara automatik menukarkannya.

Tiada fungsi jumlah terbina dalam dalam bahasa C, jadi ia perlu ditulis sendiri. Jumlah boleh dicapai dengan melintasi unsur -unsur array dan terkumpul: Versi gelung: SUM dikira menggunakan panjang gelung dan panjang. Versi Pointer: Gunakan petunjuk untuk menunjuk kepada unsur-unsur array, dan penjumlahan yang cekap dicapai melalui penunjuk diri sendiri. Secara dinamik memperuntukkan versi Array: Perlawanan secara dinamik dan uruskan memori sendiri, memastikan memori yang diperuntukkan dibebaskan untuk mengelakkan kebocoran ingatan.

Dalam bahasa C, perbezaan utama antara char dan wchar_t adalah pengekodan aksara: char menggunakan ASCII atau memanjangkan ASCII, WCHAR_T menggunakan unicode; Char mengambil 1-2 bait, wchar_t mengambil 2-4 bait; Char sesuai untuk teks bahasa Inggeris, WCHAR_T sesuai untuk teks berbilang bahasa; CHAR disokong secara meluas, WCHAR_T bergantung kepada sama ada penyusun dan sistem operasi menyokong Unicode; Char adalah terhad dalam pelbagai watak, WCHAR_T mempunyai pelbagai watak yang lebih besar, dan fungsi khas digunakan untuk operasi aritmetik.
