Posts Tagged ‘页面’

html页面中图像格式的选用之我见第1/2页

星期三, 06月 4th, 2008

下面我先了解一下几种格式de比较正式de解释(注:以下内容源自百度知道):
GIF 意为Graphics Interchange format(图形交换格式),GIF图片de扩展名是gif.现在所有de图形浏览器都支持GIF格式,而且有de图形浏览器只认识GIF格式.GIF是一种索引颜色格式,在颜色数很少de情况下,产生de文件极小,它de优点主要有:
GIF格式支持背景透明.GIF图片如果背景色设置为透明,它将与浏览器背景相结合,生成非矩形de图片.
GIF格式支持动画.在Flash动画出现之前,GIF动画可以说是网页中唯一de动画形式.GIF格式可以将单帧de图象组合起来,然后轮流播放每一帧而成为动画.虽然并不是所有de图形浏览器都支持GIF动画,但是最新de图形浏览器都已经支持GIF动画.
GIF格式支持图形渐进.渐进是指图片渐渐显示在屏幕上,渐进图片将比非渐进图片更快地出现在屏幕上,可以让访问者更快地知道图片de概貌.
GIF格式支持无损压缩.无损压缩是不损失图片细节而压缩图片de有效方法,由于GIF格式采用无损压缩,所以它更适合于线条、图标和图纸.
GIF格式de缺点同样相当明显.索引颜色是历史遗留de产物,在DOS下de老游戏几乎无一例外de采用索引颜色,这种格式本来早就应该淘汰了.但是由于带宽de限制,GIF从DOS时代红到了Internet时代.GIF这种索引颜色格式最大de缺点就是它只有256种颜色,这对于照片质量de图片是显然不够de.
JPEG 代表Joint Photograhic Experts Group(联合图像专家组),这种格式经常写成JPG,JPG图片de扩展名为jpg.
JPG最主要de优点是能支持上百万种颜色,从而可以用来表现照片.此外,由于JPG图片使用更有效de有损压缩算法,从而使文件长度更小,下载时间更短.有损压缩会放弃图像中de某些细节,以减少文件长度.它de压缩比相当高,使用专门deJPG压缩工具其压缩比可达180:1,而且图像质量从浏览角度来讲质量受损不会太大,这样就大大方便了网络传输和磁盘交换文件.JPG较GIF更适合于照片,因为在照片中损失一些细节不像对艺术线条那么明显.另外,JPG对照片de压缩比例更大,而最后de质量也更好.
但是从长远来看,JPG随着带宽de不断提高和存储介质de发展,它也应该是一种被淘汰de图片格式,因为有损压缩对图像会产生不可恢复de损失.所以经过压缩deJPGde图片一般不适合打印,在备份重要图片时也最好不要使用JPG.还有,JPG也不如GIF图像那么灵活,它不支持图形渐进、背景透明,更不支持动画.
PNG 是20世纪90年代中期开始开发de图像文件存储格式,其目de是企图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备de特性.流式网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方de“PNG’s Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”.PNG用来存储灰度图像时,灰度图像de深度可多到16位,存储彩色图像时,彩色图像de深度可多到48位,并且还可存储多到16位deα通道数据.PNG使用从LZ77派生de无损数据压缩算法.
PNG文件格式保留GIF文件格式de下列特性:
使用彩色查找表或者叫做调色板可支持256种颜色de彩色图像.
流式读/写性能(streamability):图像文件格式允许连续读出和写入图像数据
这个特性很适合于在通信过程中生成和显示图像.
逐次逼近显示(progressive display):这种特性可使在通信链路上传输图像文件de同时就在终端上显示图像,把整个轮廓显示出来之后逐步显示图像de细节,也就是先用低分辨率显示图像,然后逐步提高它de分辨率.
透明性(transparency):这个性能可使图像中某些部分不显示出来,用来创建一些有特色de图像.
辅助信息(ancillary information):这个特性可用来在图像文件中存储一些文本注释信息.
独立于计算机软硬件环境.
使用无损压缩.
PNG文件格式中要增加下列GIF文件格式所没有de特性:
每个像素为48位de真彩色图像.
每个像素为16位de灰度图像.
可为灰度图和真彩色图添加α通道.
添加图像deγ信息.
使用循环冗余码(cyclic redundancy code,CRC)检测损害de文件.
加快图像显示de逐次逼近显示方式.
标准de读/写工具包.
可在一个文件中存储多幅图像.
文件结构

空间页面CSS说明

星期三, 06月 4th, 2008

什么是CSS?

CSS就是一种叫做样式表(stylesheet)de技术.也有de人称之为层叠样式表(Cascading Stylesheet). 在主页制作时采用CSS技术,可以有效地对页面de布局、字体、颜色、背景和其它效果实现更加精确de控制. 只要对相应de相关代码做一些简单de修改,就可以改变同一页面de不同部分,或者页数不同de网页de外观和格式.
空间页面CSS说明

body 整个空间页面{background-color:#FFFFFF}


——————————————————————————–

空间名称和简介区域
#header 主体部分{height:89px;background:#3399CC}
#header div.lc 左背景图{background:url(temp1/hdl.jpg) no-repeat}
#header div.rc 右背景图{background:url(temp1/hdr.jpg) no-repeat top right}
#header div.tit 空间名称{top:8px;left:20px;line-height:22px;font-size:20px;font-family:黑体}
#header div.tit a.titlink 空间名称链接{color:#FFFFFF;text-decoration:none}
#header div.tit a.titlink:visited{color:#FFFFFF;text-decoration:none}
#header div.desc 空间简介{top:33px;left:20px;color:#FFFFFF;font-size:13px}
#tabline TAB菜单下方de横线{top:89px;background-color:#FFFFFF}
#tab TAB菜单主体{top:67px;background:url(temp1/tabbg.gif) repeat-x}
#tab a.on,#tab a.on:link,#tab a.on:visited TAB选中状态{margin-top:3px;border-left:1px solid #FFFFFF;border-right:1px solid #FFFFFF;border-top:1px solid #FFFFFF;line-height:19px;background-color:#F3F1F1;color:#197CAE;font-size:14px}
#tab span TAB与TAB之间de分割符“|”{color:#FFFFFF;font-size:14px}
#tab a:link TAB未选中状态{color:#FFFFFF;text-decoration:none;font-size:14px}
#tab a:visited{color:#FFFFFF;text-decoration:none;font-size:14px}
#tab2 设置TAB菜单主体{background:#DAE9F5}
#tab2 span TAB选中状态{color:#000000;font-size:12px;font-weight:bold}
#tab2 a TAB未选中状态{font-size:12px}
#tab2 a:link{color:#0000CC}
#tab2 a:visited{color:#0000CC}


——————————————————————————–

.stage 内容区域(TAB菜单与版权信息之间de区域){background:#F3F1F1}

其它区域(即访问量等信息)
#comm_info 主体{color:#333333;font-family:Arial;text-align:left}
#comm_info div.line 分界线{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}
#comm_info a 链接{color:#3399CC}


——————————————————————————–

页码区域
#page 主体{height:30px;font-size:14px;font-family:Arial;text-align:center}
#page span 当前页码(不可点击){padding:3px;color:#000000;font-size:14px;font-weight:bold}
#page a.pc 上一页和下一页{color:#3399CC;font-size:14px;font-weight:bold}
#page a.pc:visited{color:#3399CC}
#page a.pi 页码(可点击){padding:3px;color:#3399CC;font-size:14px}
#page a.pi:visited{color:#3399CC}


——————————————————————————–

模块
.mod {margin-bottom:10px}
.modhandle{cursor:move}
.modth 模块标题栏主体{height:24px}
.modhead{padding:4px 4px 0 4px}
.modopt 模块操作区(如写新文章){padding:4px 4px 0 0}
.modtit 模块标题区(如文章列表){color:#FFFFFF;font-size:12px;font-weight:bold}a.modtit{color:#FFFFFF}a.modtit:visited{color:#FFFFFF}
.modtitlink{color:#FFFFFF;font-size:12px;font-weight:bold}a.modtitlink{color:#FFFFFF;text-decoration:none}a.modtitlink:visited{color:#FFFFFF;text-decoration:none}a.modtitlink:hover{color:#FF5100;text-decoration:underline}
.modact 操作文字链接(如文章列表){color:#FFFFFF;font-size:12px}a.modact:link{color:#FFFFFF}a.modact:visited{color:#FFFFFF}
.modbox 模块内容区{padding:10px 10px 0 10px;background-color:#FFFFFF}
.modtl 模块左上角背景{background:url(temp1/ptitl.gif) no-repeat top left;line-height:1px}
.modtc 模块中上背景{background:url(temp1/ptitc.gif) repeat-x}
.modtr 模块右上角背景{background:url(temp1/ptitr.gif) no-repeat top right;line-height:1px}
.modbl 模块左下角背景{background-color:#FFFFFF;line-height:1px}
.modbc 模块中下背景{background-color:#FFFFFF;line-height:1px}
.modbr 模块右下角背景{background-color:#FFFFFF;line-height:1px}


——————————————————————————–

文章区域
#m_blog div.tit 文章标题{font-size:14px;font-weight:bold}
#m_blog div.tit a 文章标题链接{color:#333333;font-size:14px;font-weight:bold}
#m_blog div.tit a:visited{color:#333333}
#m_blog div.date 文章发表日期{margin:5px 0 8px 0;color:#666666}
#m_blog div.cnt 文章内容{color:#333333;line-height:20px;font-size:14px}
#m_blog div.more{margin:14px 0 16px 0}
#m_blog div.more a 阅读全文链接{color:#3399CC;font-size:14px}
#m_blog div.more a:visited{color:#3399CC}
#m_blog div.opt 文章操作区(如编辑、评论等){color:#666666;font-size:12px}
#m_blog div.opt a 文章操作链接{color:#3399CC;font-size:12px}
#m_blog div.opt a:visited{color:#3399CC}
#m_blog div.line 分界线{margin-top:17px;line-height:17px;border-top:1px solid #D2E9F4}
#m_blog div.none 无文章提示信息{padding:100px 0 100px 0;color:#333333;font-size:14px}


——————————————————————————–

个人档案区域
#m_pro a 链接{color:#3399CC}
#m_pro a:visited{color:#3399CC}
#m_pro div.image 个人头像{text-align:center}
#m_pro div.act 操作区(如加为好友、发送消息){margin-top:10px}
#m_pro div.user 用户名{margin-top:10px;color:#333333;font-size:12px;font-weight:bold}
#m_pro div.desc 用户简介{color:#333333;font-size:12px}
#m_pro div.line 分界线{margin-top:17px;line-height:17px;border-top:1px solid #D2E9F4}
#m_pro td{color:#333333;line-height:24px;font-size:14px}


——————————————————————————–

相册区域
#m_album div.image 照片{text-align:center}
#m_album div.page {color:#666666;font-size:12px;text-align:center}
#m_album div.page a{color:#0000CC;font-size:12px}
#m_album div.page a:visited{color:#0000CC}


——————————————————————————–

友情链接区域
#m_links div.item 子项{color:#333333;font-size:12px}
#m_links div.item a 名称(链接){color:#3399CC;font-size:12px;text-decoration:none}
#m_links div.item a:visited{color:#3399CC}
#m_links div.line 分界线{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}


——————————————————————————–

文章分类
#m_artclg div.item 子项{color:#666666;font-size:12px}
#m_artclg div.item a 分类名称(链接){color:#3399CC;font-size:12px}
#m_artclg div.item a:visited{color:#3399CC}
#m_artclg div.line 分界线{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}


——————————————————————————–

最新评论区域
#m_comment div.item 子项{color:#333333;font-size:12px}
#m_comment div.item a 发表人(链接){color:#3399CC;font-size:12px}
#m_comment div.item a:visited{color:#3399CC}
#m_comment div.item a.cnt 评论摘要(链接){color:#333333;font-size:12px;text-decoration:none}
#m_comment div.item a.cnt:visited{color:#333333;text-decoration:none}
#m_comment div.item a.cnt:hover{color:#333333;text-decoration:underline}
#m_comment div.line 分界线{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}


——————————————————————————–

相册列表
#m_albumlist div.note{color:#333333;font-size:14px}
#m_albumlist div.desc 简介{margin-bottom:12px;padding:3px 10px 3px 10px;line-height:22px;background-color:#F2F2F2;font-size:14px}
#m_albumlist div.none 无照片提示信息{padding:100px 0 100px 0;color:#333333;font-size:14px}
#m_albumlist div.line 分界线{margin-top:10px;line-height:16px;border-top:1px solid #D2E9F4}
#m_albumlist div.tit 照片标题{margin:6px 0 7px 0;color:#333333;font-size:14px}
#m_albumlist div.tit a 照片标题链接{color:#3399CC;font-size:14px}
#m_albumlist div.tit a:visited{color:#3399CC}
#m_albumlist span.count 照片数量{color:#666666;font-size:12px;font-weight:bold}
#m_albumlist span.size 照片尺寸{color:#999999;font-size:12px;font-family:Arial}
#m_albumlist a.act 操作区链接(如编辑、删除){color:#3399CC;font-size:12px}
#m_albumlist a.act:visited{color:#3399CC}
#m_albumlist a.page 页码链接{color:#0000CC;font-size:14px}
#m_albumlist a.page:visited{color:#0000CC}
#m_albumlist td.image{padding:5px;border:1px solid #999999;background:#FFFFFF}


——————————————————————————–

好友列表
#m_friend div.filter{margin-bottom:10px;padding-left:10px;padding-top:10px;height:27px;line-height:27px}
#m_friend div.catalog{margin-bottom:10px;padding-left:10px;height:27px;line-height:27px;background-color:#F2F2F2;font-size:14px}
#m_friend div.user{margin-top:4px;color:#333333;font-size:12px}
#m_friend div.user a 好友名称(链接){color:#3399CC;font-size:12px}
#m_friend div.user a:visited{color:#3399CC}
#m_friend div.line 分界线{margin-top:10px;line-height:16px;border-top:1px solid #D2E9F4}


——————————————————————————–

设置访问统计、模板设置
#m_setting a 链接{color:#3399CC}
#m_setting a:visited{color:#3399CC}
#m_setting 主体{line-height:22px;color:#333333;font-size:14px}
#m_setting img.sel 模板预览图(选中状态){border:4px solid #FFDB7B}
#m_setting img.unsel 模板预览图(未选中状态){border:1px solid #D2D2D2}
#m_setting span.tit 模板标题名称{font-size:14px}
#m_setting span.usr 作者名{color:#666666}
#m_setting div.sel “当前模板”文字{padding-top:6px;font-size:14px;font-weight:bold}
#m_setting div.line 分界线{margin-top:20px;line-height:16px;border-top:1px solid #D2E9F4}


——————————————————————————–

系统公告
#m_sysinfo a 链接{color:#3399CC}
#m_sysinfo a:visited{color:#3399CC}
#m_sysinfo 主体{line-height:22px;color:#333333;font-size:14px}
#m_sysinfo span.new 最新{color:#FF0000;font-size:10px;font-family:Arial}
#m_sysinfo span.date 发布时间{color:#666666;font-size:14px}


——————————————————————————–

基本选项
#m_setbase 主体{color:#333333;font-size:14px}
#m_setbase td{color:#333333;font-size:14px}
#m_setbase div.line 分界线{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}


——————————————————————————–

网友评论
#in_comment 主体{width:710px}
#in_comment div.tit 标题{margin-bottom:12px;color:#333333;font-size:14px;font-weight:bold}
#in_comment div.user 发表人名{margin-bottom:6px;color:#333333;font-size:12px}
#in_comment div.user a 发表人名(链接){color:#3399CC;font-size:12px}
#in_comment div.user a:visited{color:#3399CC}
#in_comment div.user span.date 发表时间{color:#666666;font-size:12px}
#in_comment div.desc 评论内容{color:#333333;font-size:12px}
#in_comment div.line 分界线{margin-top:17px;line-height:17px;border-top:1px solid #D2E9F4}
#in_send div.tit 发表评论(标题){margin:10px 0 10px 0;color:#333333;font-size:14px;font-weight:bold}

同一个页面用多个id有什么影响

星期三, 06月 4th, 2008

我知道在样式表定义一个样式de时候,可以定义id也可以定义class,例如:

ID方法:#test{color:#333333},在页面中调用内容


CLASS方法:.test{color:#333333},在页面中调用内容
id一个页面只可以使用一次,class可以多次引用.

有网友问,id和class好象没什么区别,我在页面中用了多个id在IE中显示也正常,用多个id有什么影响吗?

回答:第一影响就是不能通过W3de校验.

在页面显示上,目前de浏览器还都允许您犯这个错误,用多个相同ID“一般情况下”也能正常显示.但是当您需要用JavaScript通过id来控制这个div,那就会出现错误.

id是一个标签,用于区分不同de结构和内容,就象您de名字,如果一个屋子有2个人同名,就会出现混淆;
class是一个样式,可以套在任何结构和内容上,就象一件衣服;
概念上说就是不一样de:
id是先找到结构/内容,再给它定义样式;class是先定义好一种样式,再套给多个结构/内容.

web标准希望大家用严格de习惯来写相关代码,

例如:您可以用显示粗体,也可以用来显示,但W3C 建议大家用,因为更有语义

如果对这些细节问题不重视,觉得无所谓,
那么您就没必要向xml过渡了,也没必要学习web标准了,因为web标准应用就是从这些小细节上de改变开始,否则用现在dehtml不是也可以?

动态CSS站点教程:多个页面样式提供浏览者选择

星期三, 06月 4th, 2008

在cnbruce’’s blog上看到这个即时换STYLEde相关代码,觉得不错就COPY过来备用.
在见de例子就是:一个站点上有多个页面样式提供浏览者选择.同时,在选择了某样式后,再次打开该页面时,将仍然保持该样式.自然会想到了Cookie技术.


程序相关代码
<HTML>
<HEAD>
<link ID=”skin” rel=”stylesheet” type=”text/css”>
<TITLE>换肤技术</TITLE>
<SCRIPT LANGUAGE=javascript>
<!–
function SetCookie(name,value){
var argv=SetCookie.arguments;
var argc=SetCookie.arguments.length;
var expires=(2<argc)?argv[2]:null;
var path=(3<argc)?argv[3]:null;
var domain=(4<argc)?argv[4]:null;
var secure=(5<argc)?argv[5]:false;
document.cookie=name “=” escape(value) ((expires==null)?”":(”; expires=” expires.toGMTString())) ((path==null)?”":(”; path=” path)) ((domain==null)?”":(”; domain=” domain)) ((secure==true)?”; secure”:”");
}

function GetCookie(Name) {
var search = Name “=”;
var returnvalue = “”;
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search);
if (offset != -1) {
offset = search.length;
end = document.cookie.indexOf(”;”, offset);
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset,end));
}
}
return returnvalue;
}

var thisskin;
thisskin=GetCookie(”nowskin”);
if(thisskin!=”")
skin.href=thisskin;
else
skin.href=”css.css”;

function changecss(url){
if(url!=”"){
skin.href=url;
var expdate=new Date();
expdate.setTime(expdate.getTime() (24*60*60*1000*30));
//expdate=null;
//以下设置COOKIES时间为1年,自己随便设置该时间..
SetCookie(”nowskin”,url,expdate,”/”,null,false);
}
}
//–>
</SCRIPT>
</HEAD>
<BODY>

<P>请选择下面de下拉菜单测试换肤效果</P>

<a href=# onclick=”changecss(”css.css”)”>css.css</a>
<a href=# onclick=”changecss(”css1.css”)”>css1.css</a>
<a href=# onclick=”changecss(”css2.css”)”>css2.css</a>
<a href=# onclick=”changecss(”css3.css”)”>css3.css</a>
<br>

<select onchange=”changecss(this.value)”>
<option>选择样式单文件</option>
<script language=”javascript”>
var csss=new Array();
csss[0]=”css.css”;
csss[1]=”css1.css”;
csss[2]=”css2.css”;
csss[3]=”css3.css”;
var i;
for(i=0;i<4;i )
if(thisskin==csss[i])
document.write(”<option value=\”" csss[i] “\” selected>” csss[i] “样式单文件</option>”);
else
document.write(”<option value=\”" csss[i] “\”>” csss[i] “样式单文件</option>”);
</script>
</select>
</BODY>
</HTML>

2个页面间不通过Session与url的传值方式

星期二, 06月 3rd, 2008

下面是全部相关代码,已经编译通过.
Chuandi(传递)是名字空间

WebForm1:
<%@ Page language=”c#” Codebehind=”WebForm1.aspx.cs” Inherits=”chuandi.WebForm1″ %>
<HTML>
<HEAD>
<title>WebForm1</title>
</HEAD>
<body>
<form id=”Form1″ method=”post” runat=”server”>
<asp:TextBox id=”TextBox1″ runat=”server”></asp:TextBox>
<asp:Button id=”Button1″ runat=”server” Text=”传”></asp:Button>
</form>
</body>
</HTML>
using System;
namespace chuandi
{
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Button Button1;
public string Text1
{
get
{
return this.TextBox1.Text;
}
}
private void Page_Load(object sender, System.EventArgs e)
{}
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Button1.Click = new System.EventHandler(this.Button1_Click);
this.Load = new System.EventHandler(this.Page_Load);
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer(”WebForm2.aspx”);
}
}
}


WebForm2:
<%@ Page language=”c#” Codebehind=”WebForm2.aspx.cs” Inherits=”chuandi.WebForm2″ %>
<%@ Reference Page=”WebForm1.aspx” %>
<HTML>
<HEAD>
<title>WebForm2</title>
</HEAD>
<body>
<form id=”Form1″ method=”post” runat=”server”>
<asp:Label id=”Label1″ runat=”server”>Label</asp:Label>
<asp:Button id=”Button1″ runat=”server” Text=”返回”></asp:Button>
</form>
</body>
</HTML>
using System;
namespace chuandi
{
public class WebForm2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Label Label1;
public chuandi.WebForm1 wf1;
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
wf1=(chuandi.WebForm1)Context.Handler;
Label1.Text=”上页传来de是:” wf1.Text1;
}
}
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Button1.Click = new System.EventHandler(this.Button1_Click);
this.Load = new System.EventHandler(this.Page_Load);
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer(”WebForm1.aspx”);
}
}

WEB页面多语言支持解决方案

星期二, 06月 3rd, 2008

首先建立语言档,在项目中加入.resx文件
例如:
message.zh-cn.resx ‘简体中文
message.zh-tw.resx ‘繁体中文
message.en ‘英文
…………..
=========================================
然后利用Name –Value 键值对 填入您要在页面上显示de语言
如:
name value
message.zh-cn.resx中:
res_loginbname 登陆名 :
message.zh-tw.resx中:
res_loginbname 登陸名 :
message.zh-cn.resx中:
res_loginbname Login Name :

=========================================
然后在Golbal.asax中加入多语言设定支持相关代码(浏览器需要支持Cookie)

‘=========================================
‘ Application_BeginRequest Event

‘ The Application_BeginRequest method is an ASP.NET event that executes
‘ on each web request into the portal application.

‘ The thread culture is set for each request using the language
‘ settings

‘=========================================
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
Try
If Not Request.Cookies(”resource”) Is Nothing Or Request.Cookies(”resource”).Value = “” Then
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.Cookies(”resource”).Value)
Else
Thread.CurrentThread.CurrentCulture = New CultureInfo(ConfigurationSettings.AppSettings(”DefaultCulture”))
End If
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture
Catch ex As Exception
Thread.CurrentThread.CurrentCulture = New CultureInfo(ConfigurationSettings.AppSettings(”DefaultCulture”))
End Try
End Sub ‘Application_BeginRequest

在Web.Config中加入如下相关代码,用于设定编码和默认语种,在Global.asax中有调用:

=========================================
<globalization requestEncoding=”utf-8″ responseEncoding=”utf-8″ />
<appSettings>
<add key=”DefaultCulture” value=”zh-cn” />
<!– zh-cn:簡體中文 zh-tw:繁體中文 en:英文 –>
</appSettings>

=========================================
页面相关代码中使用多语言支持:

Imports System.Resources

Public Class 类名
Inherits System.Web.UI.Page
Protected LocRM As ResourceManager = New ResourceManager(”项目文件名.message”, GetType(类名).Assembly)

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
lblLogin.Text = LocRM.GetString(”res_login”)
End Sub
End Class


=========================================

到这里多语言支持de工作就作完了,接下来自己去慢慢Key
message.zh-cn.resx ‘简体中文
message.zh-tw.resx ‘繁体中文
message.en ‘英文

这几个语言档吧

ASP.NET2.0:页面中链入的CSS、js文件带中文时需注意

星期二, 06月 3rd, 2008

  当定义de样式中有中文时,如 .sometyle {font-family:@黑体;},如果书写不正确,如写成 .sometyle {font-family: 黑体;},这应该是个错误de写法,这样不仅这个样式不起作用,而且还会影响到定义在它后面de样式起作用,不知道对cssde解析本来就是这个规则,还是ASP.NET 2.0de问题.

  当您直接把从网上download下来dejs文件加入deVS2005项目中时,如果此文件中带中文,当您调用其方法时,就会出现对象找不到dejs错误,就像您没有链如该文件一样.您需要在项目中新建一个js文件,然后把您down下来de文件中de相关代码copy进这个新文件,然后使用这个新建de文件.这个问题应该是文件编码de问题.

  另外,ASP.NET2.0 采用de是XHTML 1.0标准,而之前1.x是HTML 4.0, 从两者HTML源文件头中可以看出

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN” >

  所以定义元素是要符合XHTML 1.0规范,比如长度都要加好单位,如width:100px;width:100不起作用.

ASP.NET:设置页面buffer引出来的问题

星期二, 06月 3rd, 2008

  前几天,在程序使用Respoonse.Redirect(”a.aspx?f=9#12″)de时候,发现在IE里面,跳转之后de页面忽略了#之后de内容,奇怪de是在同一页面向自己Redirectde时候,这个问题就不会存在,百思不得其解,有病乱投医吧,上网狂搜了一把,有人说设置页面Buffer为false可能解决这个问题,于是将a页面debuffer设置了false,经过验证,这个与上述问题不相干,但是一时疏忽,忘记了没有将buffer修改过来,昨天项目发布,放到服务器上发祥a页面de执行时间大de惊人,页面内容稍微大一点,页面往往会超时,而实现同一功能deb页面执行时间基本为0-16,而a页面数据库查询次数为3,b页面为7,这就更让人纳闷了,在本地试了下,b页面基本上和服务器没什么区别,a页面在90-300ms之间,而明显deb页面要表现de数据和查询de次数都要比a多,两者从页面结构上来说,基本一样,因为二者共同使用了相同deUserControl,只有中间部分表现形式稍微不同而已,同在一个屋檐下de人,差距怎么这么大呢?纳闷之余,一个个删除页面元素,发现根本不起本质作用,b页面就是出奇de快,a页面跟中风一样,慢de可以,于是找亚找,基本说是将a改了个遍,就差说闹鬼了得时候,突然发现a页面debuffer设置了false,而b赫然是true, 豁然开朗,铁钉就是这里问题,马上更正过来,good!a页面马上快了起来.

一次不小心,造成如此de麻烦,不过总结了一下规律,在buffer设置为false得时候,与设置true,页面在处理时间上基本相差10-20倍de关系,如果以后发现同样功能de页面,速度相差不少,排除了数据处理等因素,应该考虑一下是否存在上述问题.

ASP.NET 2.0中的页面输出缓存

星期二, 06月 3rd, 2008

静态页面全部内容保存在服务器内存中.当再有请求时,系统将缓存中de相关数据直接输出,直到缓存数据过期.这个过程中,缓存不需要再次经过页面处理生命周期.这样可以缩短请求响应时间,提高应用程序性能.很显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成de页面.对于那些数据经常更新de页面,则不适用.默认情况下,ASP.NET 2.0启用了页面输出缓存功能,但并不缓存任何响应de输出.开发人员必须通过设置,使得某些页面de响应成为缓存de一部分.
   设置页面输出缓存可以使用以下两种方式:一种是使用@ OutputCache指令,另一种是使用页面输出缓存API.@ OutputCache指令曾经在ASP.NET 1.x中出现过,并在ASP.NET 2.0中得到了继承和增强.页面输出缓存API主要是指HttpCachePolicy类.
使用@ OutputCache指令
   使用@ OutputCache指令,能够实现对页面输出缓存de一般性需要.@ OutputCache指令在ASP.NET页或者页中包含de用户控件de头部声明.这种方式非常方便,只需几个简单de属性设置,就能够实现页面de输出缓存策略.@ OutputCache指令声明相关代码如下.

@ OutputCache指令相关代码

<%@ OutputCache CacheProfile =” ” NoStore= “True | False” Duration =”#ofseconds” Shared =”True | False” Location =”Any | Client | Downstream | Server | None | ServerandClient ” SqlDependency =”database/table name pair | CommandNotification ” VaryByControl =”controlname” VaryByCustom =”browser | customstring” VaryByHeader =”headers” VaryByParam =”parametername” %>
   如上所示,在@ OutputCache指令中,共包括10个属性,它们是CacheProfile、NoStore、Duration、Shared、Location、SqlDependency、VaryByControl、VaryByCustom、VaryByHeader和VaryByParam.这些属性将对缓存时间、缓存项de位置、SQL数据缓存依赖等各方面进行设置.下面简要介绍以上属性de基本概念.
CacheProfile
   用于定义与该页关联de缓存设置de名称.是可选属性,默认值为空字符(”").需要注意de是,包含在用户控件中de@ OutputCache指令不支持此属性.在页面中指定此属性时,属性值必须与Web.config文件<outputCacheSettings>配置节下deoutputCacheProfiles元素中de一个可用项de名称匹配.如果此名称与配置文件项不匹配,将引发异常.
NoStore
   该属性定义一个布尔值,用于决定是否阻止敏感信息de二级存储.需要注意de是,包含在用户控件中de@ OutputCache指令不支持此属性.将此属性设置为true等效于在请求期间执行相关代码“Response.Cache.SetNoStore();”.
Duration
   用于设置页面或者用户控件缓存de时间.单位是秒.通过设置该属性,能够为来自对象deHTTP响应建立了一个过期策略,并将自动缓存页或用户控件输出.需要注意de是,Duration属性是必需de,否则将会引起分析器错误.
Shared
   该属性定义一个布尔值,用于确定用户控件输出是否可以由多个页共享.默认值为false.注意,包含在ASP.NET页中de@ OutputCache指令不支持此属性.
Location
   用于指定输出缓存项de位置.其属性值是OutputCacheLocation枚举值,它们是Any、Client、Downstream、None、Server和ServerAndClient.默认值是Any,表示输出缓存可用于所有请求,包括客户端浏览器、代理服务器或处理请求de服务器上.需要注意de是,包含在用户控件中de@ OutputCache指令不支持此属性.
SqlDependency
   该属性标识一组数据库/表名称对de字符串值,页或控件de输出缓存依赖于这些名称对.需要注意:SqlCacheDependency类监视输出缓存所依赖de数据库中de表,因此,当更新表中de项时,使用基于表de轮询将从缓存中移除这些项.当通知(在SQL Server 2005中)与CommandNotification值一起使用时,最终将使用SqlDependency类向SQL Server 2005服务器注册查询通知.另外,SqlDependency属性deCommandNotification值仅在ASP.NET页中有效.控件只能将基于表de轮询用于@ OutputCache指令.
VaryByControl
   该属性使用一个分号分隔de字符串列表来更改用户控件de输出缓存.这些字符串代表在用户控件中声明deASP.NET服务器控件deID属性值.除非已经包含了VaryByParam属性,否则在@ OutputCache指令中,该属性是必需de.
VaryByCustom
   用于自定义输出缓存要求de任意文本.如果赋予该属性值是browser,缓存将随浏览器名称和主要版本信息de不同而异.如果输入了自定义字符串,则必须在应用程序deGlobal.asax文件中重写HttpApplication.GetVaryByCustomString方法.
VaryByHeader
   该属性中包含由分号分隔deHTTP标头列表,用于使输出缓存发生变化.当将该属性设为多标头时,对于每个指定de标头,输出缓存都包含一个请求文档de不同版本.VaryByHeader属性在所有HTTP 1.1缓存中启用缓存项,而不仅限于ASP.NET缓存.用户控件中de@ OutputCache指令不支持此属性.
VaryByParam
   该属性定义了一个分号分隔de字符串列表,用于使输出缓存发生变化.默认情况下,这些字符串与用GET方法属性发送de查询字符串值对应,或与用POST方法发送de参数对应.当将该属性设置为多参数时,对于每个指定de参数,输出缓存都包含一个请求文档de不同版本.可能de值包括“none”、“*”和任何有效de查询字符串或POST参数名称.值得注意de是,在输出缓存ASP.NET页时,该属性是必需de.它对于用户控件也是必需de,除非已经在用户控件de@ OutputCache指令中包含了VaryByControl属性.如果没有包含,则会发生分析器错误.如果不需要使缓存内容随任何指定参数发生变化,则可将该值设为“none”.如果要使输出缓存根据所有参数值发生变化,则将属性设置为“*”.
   下面列举了两个使用@OutputCache指令de示例相关代码.

使用@ OutputCachede示例相关代码1

<%@ OutputCache Duration=”100″ VaryByParam=”none”%>

   以上示例是@ OutputCache指令de基本应用,其指示页面输出缓存de有效期是100秒,并且页面不随任何GET或POST参数改变.在该页仍被缓存时接收到de请求由缓存数据提供服务.经过100秒后,将从缓存中移除该页数据,并随后显式处理下一个请求并再次缓存页.
使用@ OutputCachede示例相关代码2

<%@ OutputCache Duration=”100″ VaryByParam=”location;firstname” %>


   以上@ OutputCache指令设置页面输出缓存de有效期是100秒,并且根据查询字符串参数location或者firstname来设置输出缓存.例如,假设客户端请求是“http://localhost/default.aspx?location=beijing”,那么该页面将被作为缓存处理.

静态页面全部内容保存在服务器内存中.当再有请求时,系统将缓存中de相关数据直接输出,直到缓存数据过期.这个过程中,缓存不需要再次经过页面处理生命周期.这样可以缩短请求响应时间,提高应用程序性能.很显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成de页面.对于那些数据经常更新de页面,则不适用.默认情况下,ASP.NET 2.0启用了页面输出缓存功能,但并不缓存任何响应de输出.开发人员必须通过设置,使得某些页面de响应成为缓存de一部分.
   设置页面输出缓存可以使用以下两种方式:一种是使用@ OutputCache指令,另一种是使用页面输出缓存API.@ OutputCache指令曾经在ASP.NET 1.x中出现过,并在ASP.NET 2.0中得到了继承和增强.页面输出缓存API主要是指HttpCachePolicy类.

将JSP在内存生成的图片显示到页面

星期一, 06月 2nd, 2008

Imaging_ToWeb.jsp

<%@ page autoFlush=”false” import=”java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*”%>
<%
String ImageStr = request.getParameter(”ID_Text”);
if(ImageStr==null || ImageStr.equals(”"))
{
response.setContentType(”text/html; charset=gb2312″);
%>
<HTML>
<HEAD>
<title>Http://www.lionsky.net</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
</HEAD>
<body>
<form id=”Form1″ method=”post”>
<input type=”text” id=”ID_Text” name=ID_Text>
<input type=submit value=”GO”>
</form>
</body>
</HTML>

<%
}
else
{
out.clear();
response.setContentType(”image/jpeg”);
response.addHeader(”pragma”,”NO-cache”);
response.addHeader(”Cache-Control”,”no-cache”);
response.addDateHeader(”Expries”,0);
int width=300, height=100;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
//以下填充背景颜色
g.setColor(Color.lightGray);
g.fillRect(0, 0, width, height);
String random=”random”;
//以下设置前景色
g.setColor(Color.BLACK);
g.drawString(”Http://www.knowsky.com”,10,20);
g.drawString(”Author:Lion[lion-a@sohu.com]“,10,40);
g.drawLine(10,50,290,50);
g.drawString(ImageStr,10,70);
g.dispose();
ServletOutputStream outStream = response.getOutputStream();
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);
encoder.encode(image);
outStream.close();
}

%>