user-avatar
Today is 星期六
01/28/2012

12/30/2011

一个菜鸟学习asp.net建站的体会

by Web Developer — Categories: 建站心得Leave a comment

       自从大学一年级下学期开始接触asp.net到现在已经快一年了,在学习的过程中有各种纠结和各种爽,在这里想和大家分享一下我的经验和体会。

        开始接触asp.net的时候,第一个问题就纠结在asp.net(当然还有asp,php,jsp)是一门语言还是一门技术上,因次我查阅了大量的资料结果是越查乱,本来是一个问题,查完资料以后发现面临的是一堆问题。还是罢了吧。菜鸟就是菜鸟哈。

      在学习asp.net之前,我通过大量的资料发现asp在未来的几年很有可能会退出历史的舞台,现在主流的web开发方面的技术是jsp,asp.net,php。php是一个脚本语言,基于linux系统,jsp编程语言是java也是基于linux系统,asp.net的编程语言是C#,基于windows系统。当初的想法就是三种技术都要拿下,纠结的问题是首先学习哪种技术?做一个菜鸟容易吗,就这么整天纠结。

       在当时现有知识的储备下我就开始结合自己的情况分析了上面的三种技术:php的编程风格是PHP脚本语言和html是不分离的,在这样的情况下载开发大型项目的时候会很费事的,况且搭建php的环境是比较复杂的。jsp编程的时候前台的展示层和后台的逻辑层是相互分离的,这样在编程效率上是相对较高的,不过学习jsp必须首先掌握java语言,搭建jsp的开发环境和php类似有点小复杂。asp.net是微软推出的适应现在RAD开发方式的一中技术,不过也得掌握一门语言就是c#,还好我有这方面的基础,况且asp.net有微软强有力的开发工具——vs,开发十分方便。于是我顺理成章的选择了asp.net作为我进入web开发的第一门技术。

        既然选择就努力尽快掌握这门技术,那段时间真是拼了命,练习编写代码,分析各种算法。在学习asp.net的过程中我逐渐明白了asp,asp.net,jsp是一门web开发技术,而php既是一门语言又是一种开发技术。这时候我确实是有点小惊喜,我学到了一点东西:在你不知道你面前的是什么东西的时候你要努力的去接近它,这样才有机会弄清真面目。基于这个原因我也真正理解了什么是web 的前台,什么事web 的后台,在前台常用的技术有哪些,在web的前台主要处理和呈现什么样的事情,在网站的后台主要做哪些工作,前台和后台是怎么联系的,http协议的作用,web的前台和后台各适合什么样的开发人员去实现等一系列问题。

      我现在学习asp.net已经有多半年了,我对asp.net的认识也有很大的改变。第一,asp.net内置了功能强大的控件,对于一个初学者而言可能会有这样的观点,说学习asp.net就是很熟练的掌握每个控件的用法。我可以很负责的告诉你,学会了拖控件说明你对vs这个IDE了解,这个了解也不是很深层次的理解。如果这样做一个项目肯定是个豆腐渣工程,不知道asp.ent原理的asp.net开发者不会有提高的,甚至不能称之为asp.net程序员。所以学习asp.net的时候一定要很好的理解asp.net的工作原理,这样才是正确的学习asp.net的方法。第二,用asp.net做一个公司的产品展示型网站真是有点大材小用,制作这样的网站在未来会逐渐被CMS所取代,CMS的开发周期短,成本小等是建设这类网站的首选。asp.net包括jsp等开发技术在未来会在OA,ERP,电子商务,大型论坛系统等大型项目上大展身手,这也是这类技术的优势。

   先说这些吧,说的有不对的地方请多多指正,我的邮箱地址是ljgwork@163.com。总得给菜鸟个犯错的机会吧,呵呵。

12/30/2011

asp.net中生成验证码的一种方式

by Web Developer — Categories: asp.netLeave a comment

首先在项目下创建一个一般处理程序,如下:

然后在一般处理程序中添加代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace gerendaohang.Image
{
    /// <summary>
    /// Verification_code 的摘要说明
    /// </summary>
    public class Verification_code : IHttpHandler,System.Web.SessionState.IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = ”image/JPEG”;
            using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(90,25))
            {
                using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
                {
                    Random random = new Random();
                    int a = random.Next(10000000, 99999999);
                    string str_a = a.ToString();
                    HttpContext.Current.Session["code"] = str_a;
                    g.DrawString(str_a, new System.Drawing.Font(“宋体”, 15), System.Drawing.Brushes.Green, new System.Drawing.PointF(3, 3));
                    bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

这就完成了一个验证码动态图片的创建。

在下面我将介绍怎么样使用这样的一个动态的验证码图片。

首先在项目下再创建一个web窗体文件,然后在文件中添加如下代码:

<body>
    <form id=”form1″ runat=”server”>
    <div>
   
        <asp:Label ID=”Label1″ runat=”server” Text=”用户名”></asp:Label>
        <asp:TextBox ID=”login_username” runat=”server”></asp:TextBox>
        <br />
        <br />
        <asp:Label ID=”Label2″ runat=”server” Text=”密码”></asp:Label>&nbsp;
        <asp:TextBox ID=”login_password” runat=”server”></asp:TextBox>
        <br />
        <br />
        <asp:Label ID=”Label3″ runat=”server” Text=”验证码”></asp:Label>
        <asp:TextBox ID=”verification” runat=”server”></asp:TextBox>
        <img alt=”验证码” src=”/Image/Verification_code.ashx” onclick=”this.src = ‘/Image/Verification_code.ashx?a=’+new Date()” /><br />
        <br />
        &nbsp;&nbsp;&nbsp;
        <asp:Button ID=”Button1″ runat=”server” Text=”登录” onclick=”Button1_Click” />
   
    </div>
    </form>
</body>

这是网页的前台代码,接下来我们要为button按钮添加Onclick事件,这个事件的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using gerendaohang.DAL.DataSet1TableAdapters;

namespace gerendaohang.admin_login
{
    public partial class login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string str_code = Convert.ToString(Session["code"]);
            T_usersTableAdapter adapter = new T_usersTableAdapter();
            var data = adapter.GetDataByusername(login_username.Text);
            if (data.Count <= 0)
            {
                Response.Redirect(“/login_error.aspx”, true);
            }
            else
            {
                var user = data.Single();
                if (user.password != login_password.Text)
                {
                    //登陆失败
                    Response.Redirect(“/login_error.aspx”, true);

                }
                else
                {
                    if (str_code != verification.Text)
                    {
                        //登陆失败
                        Response.Redirect(“/login_error.aspx”, true);
                    }
                    else
                    {

                        //登陆成功
                        Response.Redirect(“/default.aspx”, true);
                    }

                }

            }
        }
    }
}
    到现在为止已经完成了。就是这么简单你学会了吗?

现在让我们总结一下:

我们用到的无非就是一般处理程序的画图功能,现在.ashx文件其实就是一张图片,我们可以在.aspx文件中以图片的各种方式去引用这张图片。

在这个例子中我们以一组随机数来实现的动态创建一个验证码。当然你也可以利用微软提供的强大的画图组件GDI来创建更加复杂的验证码,增加机器识别的难度。

然后我们把这组随机数放在session里面,以备用于与用户提交的验证码信息进行比对实现验证的效果。

12/30/2011

VS中的快捷键一览表(vs2008和vs2010)

by Web Developer — Categories: 资源共享Leave a comment

Ctrl+E,D —-格式化全部代码
Ctrl+E,F —-格式化选中的代码
CTRL + SHIFT + B生成解决方案
CTRL + F7 生成编译
CTRL + O 打开文件
CTRL + SHIFT + O打开项目
CTRL + SHIFT + C显示类视图窗口
F4 显示属性窗口
SHIFT + F4显示项目属性窗口
CTRL + SHIFT + E显示资源视图
F12 转到定义
CTRL + F12转到声明
CTRL + ALT + J对象浏览
CTRL + ALT + F1帮助目录
CTRL + F1 动态帮助
F1 帮助
SHIFT + F1当前窗口帮助
CTRL + ALT + F3帮助-搜索
SHIFT + ALT + ENTER全屏显示
CTRL + -向后定位
CTRL + SHIFT + -向前定位
CTRL + F4关闭文档窗口
CTRL + PAGE DOWN光标定位到窗口上方
CTRL + PAGE UP光标定位到窗口下方
CTRL + F6
CTRL + TAB下一个文档窗口
CTRL + SHIFT + F6
CTRL + SHIFT + TAB上一个文档窗口
ALT + F6下一个面板窗口
CTRL + K, CTRL + L取消remark
CTRL + K, CTRL + C注释选择的代码
CTRL + K, CTRL + U取消对选择代码的注释
CTRL + M, CTRL + O折叠代码定义
CTRL + M, CTRL + L展开代码定义
CTRL + DELETE删除至词尾
CTRL + BACKSPACE删除至词头
SHIFT + TAB取消制表符
CTRL + U转小写
CTRL + SHIFT + U转大写
CTRL + SHIFT + END选择至文档末尾
CTRL + SHIFT + HOME选择至文档末尾开始
SHIFT + END选择至行尾
SHIFT + HOME选择至行开始处
SHIFT + ALT + END垂直选择到最后尾
SHIFT + ALT + HOME垂直选择到最前面
CTRL + SHIFT + PAGE UP选择至本页前面
CTRL + SHIFT + PAGE DOWN选择至本页后面
CTRL + END文档定位到最后
CTRL + HOME文档定位到最前
CTRL + A全选
CTRL + W选择当前单词

CTRL + G转到…
CTRL + K, CTRL + P上一个标签
CTRL + K, CTRL + N下一个标签
ALT + F10调试-ApplyCodeChanges
CTRL + ALT+ Break停止调试
CTRL + SHIFT + F9 取消所有断点
CTRL + F9允许中断
CTRL + SHIFT + F5调试-重新开始
F5运行调试
CTRL + F5运行不调试
F10跨过程序执行
F11单步逐句执行
CTRL + J列出成员
CTRL + PAGE DOWN下一个视图
CTRL + B格式-粗体
CTRL + SHIFT + T格式-文字缩进
调试快捷键
F6: 生成解决方案
Ctrl+F6: 生成当前项目
F7: 查看代码
Shift+F7: 查看窗体设计器
F5: 启动调试
Ctrl+F5: 开始执行(不调试)
Shift+F5: 停止调试
Ctrl+Shift+F5: 重启调试
F9: 切换断点
Ctrl+F9: 启用/停止断点
Ctrl+Shift+F9: 删除全部断点
F10: 逐过程
Ctrl+F10: 运行到光标处
F11: 逐语句
编辑快捷键
Shift+Alt+Enter: 切换全屏编辑
Ctrl+B,T / Ctrl+K,K: 切换书签开关
Ctrl+B,N / Ctrl+K,N: 移动到下一书签
Ctrl+B,P: 移动到上一书签
Ctrl+B,C: 清除全部标签
Ctrl+I: 渐进式搜索
Ctrl+Shift+I: 反向渐进式搜索
Ctrl+F: 查找
Ctrl+Shift+F: 在文件中查找
F3: 查找下一个
Shift+F3: 查找上一个
Ctrl+H: 替换
Ctrl+Shift+H: 在文件中替换
Alt+F12: 查找符号(列出所有查找结果)
Ctrl+Shift+V: 剪贴板循环
Ctrl+左右箭头键: 一次可以移动一个单词
Ctrl+上下箭头键: 滚动代码屏幕,但不移动光标位置。
Ctrl+Shift+L: 删除当前行
Ctrl+M,M: 隐藏或展开当前嵌套的折叠状态
Ctrl+M,L: 将所有过程设置为相同的隐藏或展开状态
Ctrl+M,P: 停止大纲显示
Ctrl+E,S: 查看空白
Ctrl+E,W: 自动换行
Ctrl+G: 转到指定行
Shift+Alt+箭头键: 选择矩形文本
Alt+鼠标左按钮: 选择矩形文本
Ctrl+Shift+U: 全部变为大写
Ctrl+U: 全部变为小写
代码快捷键
Ctrl+J / Ctrl+K,L: 列出成员
Ctrl+Shift+空格键 / Ctrl+K,P: 参数信息
Ctrl+K,I: 快速信息
Ctrl+E,C / Ctrl+K,C: 注释选定内容
Ctrl+E,U / Ctrl+K,U: 取消选定注释内容
Ctrl+K,M: 生成方法存根
Ctrl+K,X: 插入代码段
Ctrl+K,S: 插入外侧代码
F12: 转到所调用过程或变量的定义
窗口快捷键
Ctrl+W,W: 浏览器窗口
Ctrl+W,S: 解决方案管理器
Ctrl+W,C: 类视图
Ctrl+W,E: 错误列表
Ctrl+W,O: 输出视图
Ctrl+W,P: 属性窗口
Ctrl+W,T: 任务列表
Ctrl+W,X: 工具箱
Ctrl+W,B: 书签窗口
Ctrl+W,U: 文档大纲
Ctrl+D,B: 断点窗口
Ctrl+D,I: 即时窗口
Ctrl+Tab: 活动窗体切换
Ctrl+Shift+N: 新建项目
Ctrl+Shift+O: 打开项目
Ctrl+Shift+S: 全部保存
Shift+Alt+C: 新建类
Ctrl+Shift+A: 新建项
VS2005的隐藏快捷键
这里我将会把一些无意中发现的VS2005中没有明确指出的快捷键共享出来,并不是所有的快捷键,或者常见的一些快捷键。
1、Ctrl+Space直接完成类或函数(本来这个并不算隐藏的快捷键,但是因为中文输入法抢占这个快捷键,所以。。。,替代的快捷键是Alt+Right)
2、Shift+Delete整行删除,并且将这一行放到剪贴板(这时候不能选中一段内容)
3、Shift+Insert粘贴,有点匪夷所思,Ctrl+V就可以了,大概是为了和Shift+Delete对应吧
4、Ctrl+Up,Ctrl+Down滚动编辑器,但尽量不移动光标,光标保证在可见范围内
5、Ctrl+BackSpace,Ctrl+Delete整词删除,有的时候很有用
6、Ctrl+Left,Ctrl+Right按整词移动光标(不算隐藏,和前面几条加起来就是Ctrl光标控制套件了)
7、Alt+Shift+F10打开执行改名,实现接口和抽象类的小窗口(还可以用Ctrl+.,不过有的中文输入法用到这个)
8、Shift+F9调试是打开QuickWatch,内容是当前光标所在处的内容
9、F12转跳到定义,很有用的快捷键
10、Shift+F12查找所有引用
—————————————VS2008快捷键大全—————————-
Ctrl+m+Crtr+o折叠所有大纲
Ctrl+M+Crtr+P: 停止大纲显示
Ctrl+K+Crtr+C: 注释选定内容
Ctrl+K+Crtr+U: 取消选定注释内容
Ctrl+J : 列出成员 智能感知
Shift+Alt+Enter: 切换全屏编辑
Ctrl+B,T / Ctrl+K,K: 切换书签开关
Ctrl+B,N / Ctrl+K,N: 移动到下一书签
Ctrl+B,P: 移动到上一书签
Ctrl+B,C: 清除全部标签
Ctrl+I: 渐进式搜索
Ctrl+Shift+I: 反向渐进式搜索
Ctrl+F: 查找
Ctrl+Shift+F: 在文件中查找
F3: 查找下一个
Shift+F3: 查找上一个
Ctrl+H: 替换
Ctrl+Shift+H: 在文件中替换
Alt+F12: 查找符号(列出所有查找结果)
Ctrl+Shift+V: 剪贴板循环
Ctrl+左右箭头键: 一次可以移动一个单词
Ctrl+上下箭头键: 滚动代码屏幕,但不移动光标位置。
Ctrl+Shift+L: 删除当前行
Ctrl+M,M: 隐藏或展开当前嵌套的折叠状态
Ctrl+M,L: 将所有过程设置为相同的隐藏或展开状态
Ctrl+E,S: 查看空白
Ctrl+E,W: 自动换行
Ctrl+G: 转到指定行
Shift+Alt+箭头键: 选择矩形文本
Alt+鼠标左按钮: 选择矩形文本
Ctrl+Shift+U: 全部变为大写
Ctrl+U: 全部变为小写
代码快捷键
Ctrl+Shift+空格键 / Ctrl+K,P: 参数信息
Ctrl+K,I: 快速信息
Ctrl+E,U / Ctrl+K,U: 取消选定注释内容
Ctrl+K,M: 生成方法存根
Ctrl+K,X: 插入代码段
Ctrl+K,S: 插入外侧代码
F12: 转到所调用过程或变量的定义
窗口快捷键
Ctrl+W,W: 浏览器窗口
Ctrl+W,S: 解决方案管理器
Ctrl+W,C: 类视图
Ctrl+W,E: 错误列表
Ctrl+W,O: 输出视图
trl+W,P: 属性窗口
Ctrl+W,T: 任务列表
Ctrl+W,X: 工具箱
Ctrl+W,B: 书签窗口
Ctrl+W,U: 文档大纲
Ctrl+D,B: 断点窗口
Ctrl+D,I: 即时窗口
Ctrl+Tab: 活动窗体切换
Ctrl+Shift+N: 新建项目
Ctrl+Shift+O: 打开项目
Ctrl+Shift+S: 全部保存
Shift+Alt+C: 新建类
Ctrl+Shift+A: 新建项
Shift+Alt+Enter: 切换全屏编辑
Ctrl+B,T / Ctrl+K,K: 切换书签开关
Ctrl+B,N / Ctrl+K,N: 移动到下一书签
Ctrl+B,P: 移动到上一书签
Ctrl+B,C: 清除全部标签
Ctrl+I: 渐进式搜索
Ctrl+Shift+I: 反向渐进式搜索
Ctrl+F: 查找
Ctrl+Shift+F: 在文件中查找
F3: 查找下一个
Shift+F3: 查找上一个
Ctrl+H: 替换
Ctrl+Shift+H: 在文件中替换
Alt+F12: 查找符号(列出所有查找结果)
Ctrl+Shift+V: 剪贴板循环
Ctrl+左右箭头键: 一次可以移动一个单词
Ctrl+上下箭头键: 滚动代码屏幕,但不移动光标位置。
Ctrl+Shift+L: 删除当前行
Ctrl+M,M: 隐藏或展开当前嵌套的折叠状态
Ctrl+M,L: 将所有过程设置为相同的隐藏或展开状态
Ctrl+M,P: 停止大纲显示
Ctrl+E,S: 查看空白
Ctrl+E,W: 自动换行
Ctrl+G: 转到指定行
Shift+Alt+箭头键: 选择矩形文本
Alt+鼠标左按钮: 选择矩形文本
Ctrl+Shift+U: 全部变为大写
Ctrl+U: 全部变为小写



欢迎你的光临 www.52jsj.net