使用Html和ashx文件实现其简单的注册页面
记得上一次博客中实现的是其登录页面,其实学会了登录页面,注册页面自然就知道怎么写啦,都是一个意思的,但是今天不知道怎么个情况,写一个注册页面程序 中 一直在出错,大的问题小的问题一直出错,似乎是不在状态,但是练习还是要练习的,我并不怕出错,因为现在还是在学习的阶段,问题越多越好吧,但是不希望低 级的错误屡次发生,既浪费自己的时间,也毫无意义;好啦,说太多就不高兴啦,保持好心情,开始我今天的博客之旅。
一.html页面
<script src="jquery-1.7.1.min.js"></script>
<script>
$(function () {
$("#name").focus(function () {
if ($(this).val() == "请输入用户名") {
$(this).val("");
}
}).blur(function () {
if ($(this).val() == "") {
$(this).val("请输入用户名");
}
})
$("#pwd").focus(function () {
if ($(this).val() == "请输入密码") {
$(this).val("");
$(this).attr("type", "password");
}
}).blur(function () {
if ($(this).val() == "") {
$(this).val("请输入密码");
}
})
$("#address").focus(function () {
if ($(this).val() == "请输入地址") {
$(this).val("");
}
}).blur(function () {
if ($(this).val() == "") {
$(this).val("请输入地址");
}
})
})
<body>
<form action="Register.ashx" method="post">
<table>
<tr>
<td>用户名:</td><td><input type="text" name="txtname" value="请输入用户名" id="name"/></td>
</tr>
<tr>
<td>密码:</td><td><input type="text" name="txtpwd" value="请输入密码" id="pwd"/></td>
<!-- <td>密码:</td><td><input type="search" name="pwd" placeholder="请输入密码" /></td>-->
</tr>
<tr>
<td>地址:</td><td><input type="text" name="txtaddress" value="请输入地址" id="address"/></td>
</tr>
<tr>
<td>性别:</td><td >男:<input type="radio" name="radio" value="男" checked="checked" />女:<input type="radio" name="radio" value="女" /></td>
</tr>
<tr>
<td>邮箱地址:</td><td><input type="email" name="email" value="请输入邮箱地址 " id="email"/></td>
</tr>
<tr>
<td>出生日期:</td><td><input type="text" name="txtbirthday" value="请输入出生日期" id="birthday"/></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="注册" /></td><td><input type="button" name="btnlogin" value="登录" /></td>
</tr>
</table>
</form>
</body>
在写上面的的html时间,在文本框中实现了当鼠标点击其文本框则文本框为空,可以填写其值,当文本框值为空时则仍默认为原来的值,但是密码框比较特殊,需 要在我们输入自己设置的密码时间把type=“text”修改为password即可,我想说的是在jquery中我上面是没有实现的,但是使用js是可 以实现,或者使用上面密码框下面注释的使用其属性placeholder可以直接实现其功能,这个是在html5中的新属性。而使用javascript 实现其代码如下:
document.getElementById("pwd").onfocus = function () {
if (this.value == "请输入密码") {
this.value = "";
this.setAttribute("type","password")
}
}
document.getElementById("pwd").onblur = function () {
if (this.value == "") {
this.value = "请输入密码";
this.setAttribute("type", "text")
}
}
二.ashx页面
public class Register : IHttpHandler {
PersonBll bll = new PersonBll();
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/html"; //文本类型html文档,当为plain时间为读取字符串
string path = context.Request.MapPath("002.html"); //获取路径
string html = File.ReadAllText(path); //读取文档
context.Response.Write(html); //在这里write与flush还是有区别的
string name = context.Request.Form["txtname"]; //获取用户注册输入的用户名
string pwd = context.Request.Form["txtpwd"]; //获取密码
string address = context.Request.Form["txtaddress"]; //获取地址
bool sex = context.Request.Form["radio"]=="男"?true:false; //在这里记得使用bool类型,可以使用三元表达式更加的简单,获取radio的值,性别
string email = context.Request.Form["email"]; //获取email地址
string birthday = context.Request.Form["txtbirthday"]; //获取出生日期
birthday = DateTime.Now.ToString(); //记得在这里给时间类型的值一个初值,否则会在页面报错的
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(pwd)) //判断用户名和密码框不为空时间
{
PersonModel model=new PersonModel (); //实例化molde,由于是注册,需要的参数比较多,所以可以传值
model.Pname = name; //把用户注册的信息赋值给model
model.Pwd = pwd;
model.Paddress = address;
model.Pgender = sex;
model.Pemail = email;
model.Pbirthday = Convert.ToDateTime(birthday);
if (bll.RegisterSingle(model)>0) //调用bll层的方法
{
context.Response.Clear(); //清除上面的信息
context.Response.Write("欢迎" + model.Pname + "注册成功"); //相应一个注册成功的页面
}
}
}
public bool IsReusable {
get {
return false;
}
}
}
很遗憾的说,上面在写sex变量时间,直接定义一个string类型的变量接收了radio的value,后来在这里报错啦,才想起来它是一个bool类型 的值,最好使用三元表达式最简单啦,于是改变的,这里也是以后需要注意的地方;另外就是model的实例化赋值,要实例化赋值之后,才判断调用的bll层 的方法,不可以先调用方法,然后值永远是为null的,感觉写这里的代码就是熟悉的太过熟悉,就没有想,完全是依靠手动的能力,可是意想不到的是在这里出 错啦,写代码还是要好好的用脑的,嘿嘿,
另外,就是一个初学者经常犯错的地方,在写时间类型的变量,需要注意的,在这里想详细了解的就来这里(http://www.cnblogs.com/wolf-sun/p/4234884.html),嘿嘿,这就是针对初学这的详细介绍时间类型出错。
三.三层架构的搭建
public class PersonBll
{
PersonDal dal = new PersonDal();
public int RegisterSingle(PersonModel model)
{
return dal.RegisterSingle(model);
}
}
public class PersonDal
{
public int RegisterSingle(PersonModel model)
{
string sql = "insert into dbo.Person(Pname, Pwd, Pgender, Paddress,Pemail, Pbirthday) values(@name,@pwd,@sex,@address,@email,@birthday)";
SqlParameter[] parms= {
new SqlParameter("@name",model.Pname),
new SqlParameter("@pwd",model.Pwd),
new SqlParameter("@sex",model.Pgender),
new SqlParameter("@address",model.Paddress),
new SqlParameter("@email",model.Pemail),
new SqlParameter("@birthday",model.Pbirthday)
};
return SQLHelper.ExecuteNonQuery(sql,parms);
}
}
public static class SQLHelper
{
private static string connection = ConfigurationManager.ConnectionStrings["sql"].ToString();
public static int ExecuteNonQuery(string sql, params SqlParameter[] parms)
{
using (SqlConnection conn = new SqlConnection(connection))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddRange(parms);
return cmd.ExecuteNonQuery();
}
}
}
}
public class PersonModel
{//Id, Pname, Pwd, Pgender, Paddress, Pbirthday
public int Id { set; get; }
public string Pname { set; get; }
public string Pwd { set; get; }
public bool Pgender { set; get; }
public string Paddress { set; get; }
public string Pemail { set; get; }
public DateTime Pbirthday { set; get; }
}
在搭建三层架构上面这个还没有出错的,感觉只是庆幸吧,不过在这里需要说的是写sql语句时间要注意的,搭建三层时间是最容易出错的地方,嘿嘿。
我们实现的html页面如下所示:

好啦,今天就写到这吧,感觉今天是这两个多月来写程序最没有状态的一天,而且还在着急练习,认为写的很熟悉的一段程序只要写出来就要出错,怎么说那,不论怎么样,心情还是要保持好的哦,嘿嘿,好好睡觉起来又是美好的一天啦,要继续努力。
使用Html和ashx文件实现其简单的注册页面的更多相关文章
- Android笔记-4-实现登陆页面并跳转和简单的注册页面
实现登陆页面并跳转和简单的注册页面 首先我们来看看布局的xml代码 login.xml <span style="font-family:Arial;font-size:18px; ...
- AJAX实现简单的注册页面异步请求
p { margin: 0px; padding: 0px } AJAX简介 (1)AJAX = 异步 JavaScript 和 XML. (2)AJAX 是一种用于创建快速动态网页的技术. (3)通 ...
- 小KING教你做android项目(二)---实现登陆页面并跳转和简单的注册页面
原文:http://blog.csdn.net/jkingcl/article/details/10989773 今天我们主要来介绍登陆页面的实现,主要讲解的就是涉及到的布局,以及简单的跳 ...
- js简单的注册页面
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 一个简单的注册页面,基于JS
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- html+css+js实现简单登陆注册页面
先看一下最终效果,登陆和注册 背景图片: 附源码: login.html <!DOCTYPE html> <html lang="en"> <head ...
- Servlet(4):一个简单的注册页面
一. 注册要求 1. 一个注册页面 username (文本框) password:密码 (密码框) passwordYes :再次输入密码(密码框) hobby (多选框) sex (单选框) in ...
- ASP.NET的SEO:使用.ashx文件——排除重复内容
本系列目录 不同的链接指向的页面如果具有大量相同的内容,这种现象就会被称为"重复内容",如果一个网站的重复内容很多,搜索引擎就会认为这个网站的价值不高.所以我们应尽量避免各种重复内 ...
- Ajax与ashx异步请求的简单案例
Ajax与ashx异步请求的简单案例: 前台页面(aspx): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...
随机推荐
- 今日Q群:QQ群众群友反馈问题的归纳总结
今日Q群:QQ群群友反馈问题的归纳总结 今天Q群里还算比较活跃,归纳总结后主要有以下几类问题: 一.如何在Excel中按指定规则对有颜色的单元格进行过滤删选 具体的解决办法,请参照今天发布微信 ...
- (笔记)Mysql命令alter add:增加表的字段
alter add命令用来增加表的字段. alter add命令格式:alter table 表名 add字段 类型 其他; 例如,在表MyClass中添加了一个字段passtest,类型为int(4 ...
- C语言中的数组与字符串
1. 数组与指针: 对于数组,需要注意两点:1, C语言中只有一维数组, 而且数组的大小必须在编译期就作为一个常数确定下来: 2. 对于一个数组,我们只能做两件事:确定数组的大小 和 获得指向该数组下 ...
- 第三百五十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—将selenium操作谷歌浏览器集成到scrapy中
第三百五十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—将selenium操作谷歌浏览器集成到scrapy中 1.爬虫文件 dispatcher.connect()信号分发器,第一个参数信 ...
- eclipse里面的常用快捷键
eclipse里面的常用快捷键:代码实战 package com.study.lgs; import java.awt.List; import java.io.FileInputStream; im ...
- (原创)Python文件与文件系统系列(3)——os.path模块
os.path 模块实现了一些操作路径名字符串的函数,可以通过 import os.path 使用该模块,不过即使仅仅 import os 也可以使用该模块的方法. 1. abspath(path) ...
- nginx+Uwsgi+Django总结与分析
配置与调试nginx与uwsgi 參考: 1.uWSGI其三:uWSGI搭配Nginx使用 2.学习VirtualEnv和Nginx+uwsgi用于django项目部署 3.部署备忘 4.nginx+ ...
- com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: 为队列管理器提供的安全性认证无效
com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: 为队列管理器“zm_queue_manager”提供的安全性认证无效, ...
- SecureCRT同时发送命令到所有主机
有时候我们需要在多台服务器上执行相同的命令,比如安装软件,复制,粘贴,删除等等,但一台一台的去操作工作量就太大了,我们可以借助SecureCRT这款客户端远程连接工具实现这样的要求! 相关阅读: 如何 ...
- C# 异常和异常处理
C# 语言的异常处理功能可帮助您处理程序运行时出现的任何意外或异常情况. 异常处理使用 try.catch 和 finally 关键字尝试某些操作,以处理失败情况,尽管这些操作有可能失败,但如果您确定 ...