经过了这段时间的学习,终于完成了整个牛腩系统的操作。在这个过程中,感觉自己对三层的理解更加深入了,还有就是对于Web网页的设计、HTML和css的应用有了不同的体会。虽然整个新闻发布系统并不大,但是里面包含的东西很多,做完之后还是很厉害的。下面是我对牛腩新闻发布系统学习的小结:
1、HTML和CSS:对于盒子模型和错误调试的理解。
2、JavaScript:错误页倒计时的应用。
3、.Net截取指定长度汉字超出部分以“…”代替:
/// <summary>
/// 将指定字符串按指定长度进行剪切,
/// </summary>
/// <param name= "oldStr "> 需要截断的字符串 </param>
/// <param name= "maxLength "> 字符串的最大长度 </param>
/// <param name= "endWith "> 超过长度的后缀 </param>
/// <returns> 如果超过长度,返回截断后的新字符串加上后缀,否则,返回原字符串 </returns>
public static string StringTruncat(string oldStr, int maxLength, string endWith)
{
if (string.IsNullOrEmpty(oldStr))
// throw new NullReferenceException( "原字符串不能为空 ");
return oldStr + endWith;
if (maxLength < 1)
throw new Exception("返回的字符串长度必须大于[0] ");
if (oldStr.Length > maxLength)
{
string strTmp = oldStr.Substring(0, maxLength);
if (string.IsNullOrEmpty(endWith))
return strTmp;
else
return strTmp + endWith;
}
return oldStr;
}
4、.NET使用一般处理程序生成验证码:
① HTML的代码:
<!--
Document : ASP.NET用一般处理程序生成验证码
Created on : 2008-10-13 17:04
Author : 牛腩
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function change() {
var imgNode = document.getElementById("vimg");
imgNode.src = "WaterMark.ashx?t=" + (new Date()).valueOf(); // 这里加个时间的参数是为了防止浏览器缓存的问题
}
</script>
</head>
<body>
<img src="WaterMark.ashx" id="vimg" alt="" /><input type="button" value="换一张图片" onclick="change()" />
</body>
</html>
② 一般处理程序WaterMark.ashx的代码:
<%@ WebHandler Language="C#" Class="WaterMark" %>
using System;
using System.Web;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Web.SessionState;
public class WaterMark : IHttpHandler, IRequiresSessionState // 要使用session必须实现该接口,记得要导入System.Web.SessionState命名空间
{
public void ProcessRequest(HttpContext context)
{
string checkCode = GenCode(5); // 产生5位随机字符
context.Session["Code"] = checkCode; //将字符串保存到Session中,以便需要时进行验证
System.Drawing.Bitmap image = new System.Drawing.Bitmap(70, 22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
// 画图片的背景噪音线
int i;
for (i = 0; i < 25; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, true);
g.DrawString(checkCode, font, brush, 2, 2);
//画图片的前景噪音点
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
context.Response.ClearContent();
context.Response.ContentType = "image/Gif";
context.Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
/// <summary>
/// 产生随机字符串
/// </summary>
/// <param name="num">随机出几个字符</param>
/// <returns>随机出的字符串</returns>
private string GenCode(int num)
{
string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//"的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府称太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严";
char[] chastr = str.ToCharArray();
// string[] source ={ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "#", "$", "%", "&", "@" };
string code = "";
Random rd = new Random();
int i;
for (i = 0; i < num; i++)
{
//code += source[rd.Next(0, source.Length)];
code += str.Substring(rd.Next(0, str.Length), 1);
}
return code;
}
public bool IsReusable
{
get
{
return false;
}
}
}
5、.NET中获取字符串的MD5码:
① 导入命名空间:
using System.Web.Security;
② 获取MD5码:
string Password = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox1.Text.ToString(), "MD5");
6、IIS的安装与新闻系统的发布:
参考博客:
网站发布—图解Win7旗舰版中的IIS配置asp.net运行环境(一)
7、对于各种概念的理解:
参考博客:【牛腩新闻发布系统】--总结
Asp.net:
它是基于.net framework的web开发平台,具有开发网站应用的一切解决方案,在代码撰写方面特色是将页面逻辑和业务逻辑分开。
HTML:
是一种用于创建网页的标准标记语言,是构建网站的基石。HTML允许嵌入图像与对象,并且可以用于创建交互式表单,它被用来结构化信息–例如标题、段落和列表等等。
XML:
是一种标记语言,与HTML的不同就是HTML是国际通用的标记语言,而XML是由相关人士自由决定的标记语言。
CSS:
(层叠样式表)是一种样式表语言,用来描述HTML或者XML文档的呈现。CSS描述了在屏幕、纸质、音频等其他媒体上的元素应该被如何渲染的问题。
DIV+CSS:
在web前端开发,div就是给整个网页布局,css就是负责控制div样式,想让div在哪里显示,都可以通过css来实现,简单的说网页布局就像盖房子,div负责把这栋房子盖起来,而css负责告诉你怎么改。
JavaScript(js):
是一种基于原型、多范式的动态脚本语言,并且支持面型对象、命令式和声明式风格。在牛腩新闻发布系统中体会到的一点就是:js是用于交互的。
jQuery:
是JavaScript函数库,是目前最流行的js框架。
AJAX:
是异步的JavaScript与XML技术,指的是一套综合了多想技术的浏览器端网页开发技术。传统的web应用允许用户端填写表单,当提交表单时就向网页服务器发送一个请求。服务器接收并且处理传来的表单,然后送回一个新的网页,但这个做法浪费了许多带宽,因为在前后两个页面中的大部门HTML码往往是相同的。由于每次应用的沟通都需要想服务器发送请求,应用的回应时间依赖于服务器的回应时间,这导致了用户界面的回应比本机应用慢的多。与此不同,ajax应用可以仅向服务器发送并取回必须的数据,并且在客户端采用JavaScript处理来自服务器的回应。因为在服务器和浏览器之间交换的数据大量减少,服务器回应更快了,同时,很多的处理工作可以再发出请求的客户端机器上完成,因此web服务器和负荷也减少了。