ASP.NET网页编程之ASP.NET 经常使用的33种代码仓酷云
归根到底,net网页编程跨平台可以,但是要重新编写代码,否则还分什么J2EE/J2SE/J2ME呢!1.翻开新的窗口并传送参数:传送参数:
response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")
吸收参数:
stringa=Request.QueryString("id");
stringb=Request.QueryString("id1");
2.为按钮增加对话框
Button1.Attributes.Add("onclick","returnconfirm(’确认?’)");
button.attributes.add("onclick","if(confirm(’areyousure...?’)){returntrue;}else{returnfalse;}")
3.删除表格选定纪录
intintEmpID=(int)MyDataGrid.DataKeys;
stringdeleteCmd="DELETEfromEmployeewhereemp_id="+intEmpID.ToString()
4.删除表格纪录告诫
privatevoidDataGrid_ItemCreated(Objectsender,DataGridItemEventArgse)
{
switch(e.Item.ItemType)
{
caseListItemType.Item:
caseListItemType.AlternatingItem:
caseListItemType.EditItem:
TableCellmyTableCell;
myTableCell=e.Item.Cells;
LinkButtonmyDeleteButton;
myDeleteButton=(LinkButton)myTableCell.Controls;
myDeleteButton.Attributes.Add("onclick","returnconfirm(’您是不是断定要删除这条信息’);");
break;
default:
break;
}
}
5.点击表格行链接另外一页
privatevoidgrdCustomer_ItemDataBound(objectsender,System.Web.UI.WebControls.DataGridItemEventArgse)
{
//点击表格翻开
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
e.Item.Attributes.Add("onclick","window.open(’Default.aspx?id="+e.Item.Cells.Text+"’);");
}
双击表格毗连到另外一页
在itemDataBind事务中
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
stringOrderItemID=e.item.cells.Text;
...
e.item.Attributes.Add("ondblclick","location.href=’../ShippedGrid.aspx?id="+OrderItemID+"’");
}
双击表格翻开新一页
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
stringOrderItemID=e.item.cells.Text;
...
e.item.Attributes.Add("ondblclick","open(’../ShippedGrid.aspx?id="+OrderItemID+"’)");
}
6.表格超毗连传记递参数
<asp:HyperLinkColumnTarget="_blank"headertext="ID号"DataTextField="id"NavigateUrl="aaa.aspx?id=’
<%#DataBinder.Eval(Container.DataItem,"数据字段1")%>’&name=’<%#DataBinder.Eval(Container.DataItem,"数据字段2")%>’/>
7.表格点击改动色彩
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onclick","this.style.backgroundColor=’#99cc00’;
this.style.color=’buttontext’;this.style.cursor=’default’;");
}
写在DataGrid的_ItemDataBound里
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onmou搜索引擎优化ver","this.style.backgroundColor=’#99cc00’;
this.style.color=’buttontext’;this.style.cursor=’default’;");
e.Item.Attributes.Add("onmou搜索引擎优化ut","this.style.backgroundColor=’’;this.style.color=’’;");
}
8.关于日期格局
日期格局设定
DataFormatString="{0:yyyy-MM-dd}"
我以为应当在itembound事务中
e.items.cell["你的列"].text=DateTime.Parse(e.items.cell["你的列"].text.ToString("yyyy-MM-dd"))
9.猎取毛病信息并到指定页面
不要利用Response.Redirect,而应当利用Server.Transfer
e.g
//inglobal.asax
protectedvoidApplication_Error(Objectsender,EventArgse){
if(Server.GetLastError()isHttpUnhandledException)
Server.Transfer("MyErrorPage.aspx");
//其他的非HttpUnhandledException非常交给ASP.NET本人处置就okay了:)
}
Redirect会招致post-back的发生从而丧失了毛病信息,以是页面导向应当间接在服务器端实行,如许就能够在毛病处置页面失掉堕落信息并举行响应的处置
10.清空Cookie
Cookie.Expires=;
Response.Cookies("UserName").Expires=0
11.自界说非常处置
//自界说非常处置类
usingSystem;
usingSystem.Diagnostics;
namespaceMyAppException
{
///<summary>
///从体系非常类ApplicationException承继的使用程序非常处置类。
///主动将非常内容纪录到WindowsNT/2000的使用程序日记
///</summary>
publicclassAppException:System.ApplicationException
{
publicAppException()
{
if(ApplicationConfiguration.EventLogEnabled)LogEvent("呈现一个未知毛病。");
}
publicAppException(stringmessage)
{
LogEvent(message);
}
publicAppException(stringmessage,ExceptioninnerException)
{
LogEvent(message);
if(innerException!=null)
{
LogEvent(innerException.Message);
}
}
//日记纪录类
usingSystem;
usingSystem.Configuration;
usingSystem.Diagnostics;
usingSystem.IO;
usingSystem.Text;
usingSystem.Threading;
namespaceMyEventLog
{
///<summary>
///事务日记纪录类,供应事务日记纪录撑持
///<remarks>
///界说了4个日记纪录办法(error,warning,info,trace)
///</remarks>
///</summary>
publicclassApplicationLog
{
///<summary>
///将毛病信息纪录到Win2000/NT事务日记中
///<paramname="message">必要纪录的文本信息</param>
///</summary>
publicstaticvoidWriteError(Stringmessage)
{
WriteLog(TraceLevel.Error,message);
}
///<summary>
///将告诫信息纪录到Win2000/NT事务日记中
///<paramname="message">必要纪录的文本信息</param>
///</summary>
publicstaticvoidWriteWarning(Stringmessage)
{
WriteLog(TraceLevel.Warning,message);
}
///<summary>
///将提醒信息纪录到Win2000/NT事务日记中
///<paramname="message">必要纪录的文本信息</param>
///</summary>
publicstaticvoidWriteInfo(Stringmessage)
{
WriteLog(TraceLevel.Info,message);
}
///<summary>
///将跟踪信息纪录到Win2000/NT事务日记中
///<paramname="message">必要纪录的文本信息</param>
///</summary>
publicstaticvoidWriteTrace(Stringmessage)
{
WriteLog(TraceLevel.Verbose,message);
}
///<summary>
///格局化纪录到事务日记的文本信息格局
///<paramname="ex">必要格局化的非常对象</param>
///<paramname="catchInfo">非常信息题目字符串.</param>
///<retvalue>
///<para>格局后的非常信息字符串,包含非常内容和跟踪仓库.</para>
///</retvalue>
///</summary>
publicstaticStringFormatException(Exceptionex,StringcatchInfo)
{
StringBuilderstrBuilder=newStringBuilder();
if(catchInfo!=String.Empty)
{
strBuilder.Append(catchInfo).Append("");
}
strBuilder.Append(ex.Message).Append("").Append(ex.StackTrace);
returnstrBuilder.ToString();
}
///<summary>
///实践事务日记写进办法
///<paramname="level">要纪录信息的级别(error,warning,info,trace).</param>
///<paramname="messageText">要纪录的文本.</param>
///</summary>
privatestaticvoidWriteLog(TraceLevellevel,StringmessageText)
{
try
{
EventLogEntryTypeLogEntryType;
switch(level)
{
caseTraceLevel.Error:
LogEntryType=EventLogEntryType.Error;
break;
caseTraceLevel.Warning:
LogEntryType=EventLogEntryType.Warning;
break;
caseTraceLevel.Info:
LogEntryType=EventLogEntryType.Information;
break;
caseTraceLevel.Verbose:
LogEntryType=EventLogEntryType.SuccessAudit;
break;
default:
LogEntryType=EventLogEntryType.SuccessAudit;
break;
}
EventLogeventLog=newEventLog("Application",ApplicationConfiguration.EventLogMachineName,ApplicationConfiguration.EventLogSourceName);
//写进事务日记
eventLog.WriteEntry(messageText,LogEntryType);
}
catch{}//疏忽任何非常
}
}//classApplicationLog
}
12.Panel横向转动,纵向主动扩大
<asp:panelstyle="overflow-x:scroll;overflow-y:auto;"></asp:panel>
13.回车转换成Tab
<scriptlanguage="javascript"for="document"event="onkeydown">
if(event.keyCode==13&&event.srcElement.type!=’button’&&event.srcElement.type!=’submit’&& event.srcElement.type!=’reset’&&event.srcElement.type!=’’&&event.srcElement.type!=’textarea’);
event.keyCode=9;
</script>
onkeydown="if(event.keyCode==13)event.keyCode=9"
14.DataGrid超等毗连列
DataNavigateUrlField="字段名"DataNavigateUrlFormatString="http://xx/inc/delete.aspx?ID={0}"
15.DataGrid行随鼠标变色
privatevoidDGzf_ItemDataBound(objectsender,System.Web.UI.WebControls.DataGridItemEventArgse)
{
if(e.Item.ItemType!=ListItemType.Header)
{
e.Item.Attributes.Add("onmou搜索引擎优化ut","this.style.backgroundColor=""+e.Item.Style["BACKGROUND-COLOR"]+""");
e.Item.Attributes.Add("onmou搜索引擎优化ver","this.style.backgroundColor=""+"#EFF3F7"+""");
}
}
16.模板列
<ASP:TEMPLATECOLUMNvisible="False"sortexpression="demo"headertext="ID">
<ITEMTEMPLATE>
<ASP:LABELtext=’<%#DataBinder.Eval(Container.DataItem,"ArticleID")%>’runat="server"width="80%"id="lblColumn"/>
</ITEMTEMPLATE>
</ASP:TEMPLATECOLUMN>
<ASP:TEMPLATECOLUMNheadertext="选中">
<HEADERSTYLEwrap="False"horizontalalign="Center"></HEADERSTYLE>
<ITEMTEMPLATE>
<ASP:CHECKBOXid="chkExport"runat="server"/>
</ITEMTEMPLATE>
<EDITITEMTEMPLATE>
<ASP:CHECKBOXid="chkExportON"runat="server"enabled="true"/>
</EDITITEMTEMPLATE>
</ASP:TEMPLATECOLUMN>
背景代码
protectedvoidCheckAll_CheckedChanged(objectsender,System.EventArgse)
{
//改动列的选定,完成全选或全不选。
CheckBoxchkExport;
if(CheckAll.Checked)
{
foreach(DataGridItemoDataGridIteminMyDataGrid.Items)
{
chkExport=(CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked=true;
}
}
else
{
foreach(DataGridItemoDataGridIteminMyDataGrid.Items)
{
chkExport=(CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked=false;
}
}
}
17.数字格局化
【<%#Container.DataItem("price")%>的了局是500.0000,如何格局化为500.00?】
<%#Container.DataItem("price","{0:¥#,##0.00}")%>
inti=123456;
strings=i.ToString("###,###.00");
18.日期格局化
【aspx页面内:<%#DataBinder.Eval(Container.DataItem,"Company_Ureg_Date")%>
显现为:2004-8-1119:44:28
我只想要:2004-8-11】
<%#DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%>
应当怎样改?
【格局化日期】
掏出来,通常为object((DateTime)objectFromDB).ToString("yyyy-MM-dd");
【日期的考证表达式】
A.以下准确的输出格局:,,
^((d{2}(()|())[-/s]?((((0?)|(1))[-/s]?((0?)|()|(3)))|(((0?)|(11))[-/s]?((0?)|()|(30)))|(0?2[-/s]?((0?)|()))))|(d{2}(()|())[-/s]?((((0?)|(1))[-/s]?((0?)|()|(3)))|(((0?)|(11))[-/s]?((0?)|()|(30)))|(0?2[-/s]?((0?)|(1)|(2))))))(s(((0?)|(1)):()((s)|(:()s))({2,2})))?$
B.以下准确的输出格局:,,
^d{4}[-/s]?((((0)|(1))[-/s]?(()|(3)))|(((0)|(11))[-/s]?(()|(30)))|(02[-/s]?))$
【巨细写转换】
HttpUtility.HtmlEncode(string);
HttpUtility.HtmlDecode(string)
19.怎样设定全局变量
Global.asax中
Application_Start()事务中
增加Application[属性名]=xxx;
就是你的全局变量
20.如何作到HyperLinkColumn天生的毗连后,点击毗连,翻开新窗口?
HyperLinkColumn有个属性Target,将器值设置成"_blank"便可.(Target="_blank")
【ASPNETMENU】点击菜单项弹出新窗口
在你的menuData.xml文件的菜单项中到场URLTarget="_blank",如:
<?xmlversion="1.0"encoding="GB2312"?>
<MenuDataImagesBaseURL="images/">
<MenuGroup>
<MenuItemLabel="内参信息"URL="Infomation.aspx">
<MenuGroupID="BBC">
<MenuItemLabel="通告信息"URL="Infomation.aspx"URLTarget="_blank"LeftIcon="file.gif"/>
<MenuItemLabel="体例信息简报"URL="NewInfo.aspx"LeftIcon="file.gif"/>
......
最好将你的aspnetmenu晋级到1.2版
21.读取DataGrid控件TextBox值
foreach(DataGriddgiinyourDataGrid.Items)
{
TextBoxtb=(TextBox)dgi.FindControl("yourTextBoxId");
tb.Text....
}
23.在DataGrid中有3个模板列包括Textbox分离为DG_ShuLiang(数目)DG_DanJian(单价)DG_JinE(金额)分离在5.6.7列,请求在录进数目及单价的时分主动算出金额即:数目*单价=金额还请求录进时限定为数值型.我怎样用客户端剧本完成这个功效?
〖思回〗
<asp:TemplateColumnHeaderText="数目">
<ItemTemplate>
<asp:TextBoxid="ShuLiang"runat=’server’Text=’<%#DataBinder.Eval(Container.DataItem,"DG_ShuLiang")%>’
onkeyup="javascript:DoCal()"
/>
<asp:RegularExpressionValidatorid="revS"runat="server"ControlToValidate="ShuLiang"ErrorMessage="mustbeinteger"ValidationExpression="^d+$"/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumnHeaderText="单价">
<ItemTemplate>
<asp:TextBoxid="DanJian"runat=’server’Text=’<%#DataBinder.Eval(Container.DataItem,"DG_DanJian")%>’
onkeyup="javascript:DoCal()"
/>
<asp:RegularExpressionValidatorid="revS2"runat="server"ControlToValidate="DanJian"ErrorMessage="mustbenumeric"ValidationExpression="^d+(.d*)?$"/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumnHeaderText="金额">
<ItemTemplate>
<asp:TextBoxid="JinE"runat=’server’Text=’<%#DataBinder.Eval(Container.DataItem,"DG_JinE")%>’/>
</ItemTemplate>
</asp:TemplateColumn><scriptlanguage="javascript">
functionDoCal()
{
vare=event.srcElement;
varrow=e.parentNode.parentNode;
vartxts=row.all.tags("INPUT");
if(!txts.length||txts.length<3)
return;
varq=txts.value;
varp=txts.value;
if(isNaN(q)||isNaN(p))
return;
q=parseInt(q);
p=parseFloat(p);
txts.value=(q*p).toFixed(2);
}
</script>
24.datagrid选定对照底下的行时,为何老是革新一下,然后就转动到了最下面,方才选定的行因屏幕的干系就看不到了。
page_load
page.smartNavigation=true
25.在Datagrid中修正数据,当点击编纂键时,数据呈现在文本框中,怎样把持文本框的巨细?
privatevoidDataGrid1_ItemDataBound(objsender,DataGridItemEventArgse)
{
for(inti=0;i<e.Item.Cells.Count-1;i++)
if(e.Item.ItemType==ListItemType.EditType)
{
e.Item.Cells.Attributes.Add("Width","80px")
}
}
26.对话框
privatestaticstringScriptBegin="<scriptlanguage="JavaScript">";
privatestaticstringScriptEnd="</script>";
publicstaticvoidConfirmMessageBox(stringPageTarget,stringContent)
{
stringConfirmContent="varretValue=window.confirm(’"+Content+"’);"+"if(retValue){window.location=’"+PageTarget+"’;}";
ConfirmContent=ScriptBegin+ConfirmContent+ScriptEnd;
PageParameterPage=(Page)System.Web.HttpContext.Current.Handler;
ParameterPage.RegisterStartupScript("confirm",ConfirmContent);
//Response.Write(strScript);
}
27.将工夫格局化:
stringaa=DateTime.Now.ToString("yyyy年MM月dd日");
1.1取以后年代日时分秒
currentTime=System.DateTime.Now;
1.2取以后年
int年=DateTime.Now.Year;
1.3取以后月
int月=DateTime.Now.Month;
1.4取以后日
int日=DateTime.Now.Day;
1.5取以后时
int时=DateTime.Now.Hour;
1.6取以后分
int分=DateTime.Now.Minute;
1.7取以后秒
int秒=DateTime.Now.Second;
1.8取以后毫秒
int毫秒=DateTime.Now.Millisecond;
28.自界说分页代码:
先界说变量:
publicstaticintpageCount;//总页面数
publicstaticintcurPageIndex=1;//以后页面
下一页:
if(DataGrid1.CurrentPageIndex<(DataGrid1.PageCount-1))
{
DataGrid1.CurrentPageIndex+=1;
curPageIndex+=1;
}
bind();//DataGrid1数据绑定函数
上一页:
if(DataGrid1.CurrentPageIndex>0)
{
DataGrid1.CurrentPageIndex+=1;
curPageIndex-=1;
}
bind();//DataGrid1数据绑定函数
间接页面跳转:
inta=int.Parse(JumpPage.Value.Trim());//JumpPage.Value.Trim()为跳转值
if(a<DataGrid1.PageCount)
{
this.DataGrid1.CurrentPageIndex=a;
}
bind();
29.DataGrid利用:
增加删除确认:
privatevoidDataGrid1_ItemCreated(objectsender,System.Web.UI.WebControls.DataGridItemEventArgse)
{
foreach(DataGridItemdiinthis.DataGrid1.Items)
{
if(di.ItemType==ListItemType.Item||di.ItemType==ListItemType.AlternatingItem)
{
((LinkButton)di.Cells.Controls).Attributes.Add("onclick","returnconfirm(’确认删除此项吗?’);");
}
}
}
款式瓜代:
ListItemTypeitemType=e.Item.ItemType;
if(itemType==ListItemType.Item)
{
e.Item.Attributes["onmou搜索引擎优化ut"]="javascript:this.style.backgroundColor=’#FFFFFF’;";
e.Item.Attributes["onmou搜索引擎优化ver"]="javascript:this.style.backgroundColor=’#d9ece1’;cursor=’hand’;";
}
elseif(itemType==ListItemType.AlternatingItem)
{
e.Item.Attributes["onmou搜索引擎优化ut"]="javascript:this.style.backgroundColor=’#a0d7c4’;";
e.Item.Attributes["onmou搜索引擎优化ver"]="javascript:this.style.backgroundColor=’#d9ece1’;cursor=’hand’;";
}
增加一个编号列:
DataTabledt=c.ExecuteRtnTableForAccess(sqltxt);//实行sql前往的DataTable
DataColumndc=dt.Columns.Add("number",System.Type.GetType("System.String"));
for(inti=0;i<dt.Rows.Count;i++)
{
dt.Rows["number"]=(i+1).ToString();
}
DataGrid1.DataSource=dt;
DataGrid1.DataBind();
DataGrid1中增加一个CheckBox,页面中增加一个全选框
privatevoidCheckBox2_CheckedChanged(objectsender,System.EventArgse)
{
foreach(DataGridItemthisiteminDataGrid1.Items)
{
((CheckBox)thisitem.Cells.Controls).Checked=CheckBox2.Checked;
}
}
将以后页面中DataGrid1显现的数据全体删除
foreach(DataGridItemthisiteminDataGrid1.Items)
{
if(((CheckBox)thisitem.Cells.Controls).Checked)
{
stringstrloginid=DataGrid1.DataKeys.ToString();
Del(strloginid);//删除函数
}
}
30.当文件在分歧目次下,必要猎取数据库毗连字符串(假如毗连字符串放在Web.config,然后在Global.asax中初始化)
在Application_Start中增加以下代码:
Application["ConnStr"]=this.Context.Request.PhysicalApplicationPath+ConfigurationSettings.
AppSettings["ConnStr"].ToString();
31.变量.ToString()
字符型转换转为字符串
12345.ToString("n");//天生12,345.00
12345.ToString("C");//天生¥12,345.00
12345.ToString("e");//天生1.234500e+004
12345.ToString("f4");//天生12345.0000
12345.ToString("x");//天生3039(16进制)
12345.ToString("p");//天生1,234,500.00%
32、变量.Substring(参数1,参数2);
截取字串的一部分,参数1为左肇端位数,参数2为截取几位。如:strings1=str.Substring(0,2);
33.在本人的网站上上岸其他网站:(假如你的页面是经由过程嵌套体例的话,由于一个页面只能有一个FORM,这时候能够导向别的一个页面再提交上岸信息)
<SCRIPTlanguage="javascript">
<!--
functiongook(pws)
{
frm.submit();
}
//-->
</SCRIPT><bodyleftMargin="0"topMargin="0"onload="javascript:gook()"marginwidth="0"marginheight="0">
<formname="frm"action="http://220.194.55.68:6080/login.php?retid=7259"method="post">
<tr>
<td>
<inputid="f_user"type="hidden"size="1"name="f_user"runat="server">
<inputid="f_domain"type="hidden"size="1"name="f_domain"runat="server">
<inputclass="box"id="f_pass"type="hidden"size="1"name="pwshow"runat="server">
<INPUTid="lng"type="hidden"maxLength="20"size="1"value="5"name="lng">
<INPUTid="tem"type="hidden"size="1"value="2"name="tem">
</td>
</tr>
</form>
文本框的称号必需是你要上岸的网页上的称号,假如源码不可能够用vsniffer看看。
上面是猎取用户输出的上岸信息的代码:
stringname;
name=Request.QueryString["EmailName"];
try
{
inta=name.IndexOf("@",0,name.Length);
f_user.Value=name.Substring(0,a);
f_domain.Value=name.Substring(a+1,name.Length-(a+1));
f_pass.Value=Request.QueryString["Psw"];
}
catch
{
Script.Alert("毛病的邮箱!");
Server.Transfer("index.aspx");
}
无论谁倒了对双方阵营的粉丝们也是有害无益。 能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。 ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。 主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。 如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。 市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。 虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 众所周知,Windows以易用而出名,也因此占据不少的服务器市场。 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
页:
[1]