谁有留言板或者表白墙的PHP源码

谁有留言板或者表白墙的PHP源码,第1张

js是javascript的缩写。以下是JSP与JS的区别和联系:

名字:JS:JavaScriptJSP:JavaServerPages

执行过程:JSP先翻译,翻译成Servlet执行如:testjsp要变成test_jspjava然后编译成test_jspclass而test_jspjava本身就是一个servlet所以jsp只是servlet的一个变种,方便书写html内容才出现的。servlet是根本,所有jsp能做的,servlet全能做。

JS:是一种基于对象的客户端脚本语言。目的是解决服务器端语言。如:Perl,遗留的速度问题,为客户提供更流畅的浏览效果。JS可以直接嵌入到html代码中进行解析执行,非常简单易学,可以产生很多动态的效果。

形象比较:JS是在客户端执行的,需要浏览器支持JavaScript。JSP是在服务器端执行的,需要服务器上部署支持Servlet的服务器程序。JS代码能够直接从服务器上download得到,对外是可见的,jsp(和翻译后的Servlet代码)是对外不可见的。

JS和JSP相比较:虽然JS可以再客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务。如:访问数据库和图像处理等等。JSP在HTML中用<%%>里面实现。JS在HTML中用实现。

执行过程:JSP:1、JSP文件在用户第一次请求时,会被编译成Servlet,然后由这个Servlet处理用户的请求,所以Servlet可以看成是运行时的Servlet。

2、JSP容器也就是Servlet容器管理JSP页面生命周期分为两个阶段,即转换阶段和执行阶段。

3、转换阶段:当有一个对JSP页面的请求到来时,JSP容器检查JSP页面的语法是否正确,将JSP页面转换为Servlet源文件,然后调用javac命令编译Servlet源文件生成字节码文件。

4、执行阶段:Servlet容器加载转换后的Servlet类。JS:JavaScript通常是运行在前台,即运行于用户浏览器的,通常不需要服务器的后台支持(AJAX交互例外),混合在HTML中的JavaScript脚本程序直接被浏览器解释执行,以提高页面的美观性和UI操作响应速度为基本目标。

运行位置不同:JSP运行在后台服务器上,混合在HTML中的java程序段用于控制HTML的动态生成,并且通常负责调用后台数据库中的数据,形成能够根据使用情况的变化的,具有丰富数据交互效果的页面。

扩展资料:

JSP全名为JavaServerPages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。

JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(htm,html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(jsp)。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行

按照你的要求编写的输出日期属于该年的第几天的Javascript程序如下

<html>

<head>

<script type=text/javascript> 

function check(){

 var year=parseInt(documentgetElementById("year")value);

 var month=parseInt(documentgetElementById("month")value);

 var day=parseInt(documentgetElementById("day")value);

 if(year<2000 || year>2018){

  alert("输入年份要求在2000到2018之间");

  var t = documentgetElementById("year");

      tfocus();

      return false;

 }

 var days=0;

 for(var i=1;i<month;i++){

  switch(i){

   case 1:

   case 3:

   case 5:

   case 7:

   case 8:

   case 10:

   case 12:days=days+31;break;

   case 4:

   case 6:

   case 9:

   case 11:days=days+30;break;

   case 2:

    if(year%4==0&&year%100!=0||year%400==0)

     days=days+29;

    else

     days=days+28;

    break;

  }

 }

 days=days+day;

 documentgetElementById("result")innerHTML="该日期是"+year+"年的第"+days+"天";

}

</script>

</head>

<body>

 年份<input type="text" name="year" id="year" value=""><br>

 月份<input type="text" name="month" id="month" value=""><br>

 日期<input type="text" name="day" id="day" value=""><br>

 <input type="button" value="确定" onclick="check();"><br>

 <div id="result"></div>

</body>

</html>

这个需要通过微软的ActiveX控件来实现,所以只能在ie浏览器生效,具体代码如下:

var objShell = new ActiveXObject("wscriptshell");

objShellRun('notepad');

objShell = null;

上面的notepad也可以换成其他应用程序,或者直接用exe文件所在的路径,如file:///C:/WINDOWS/system32/notepadexe

 概要 本文结合示例讲述了在应用程序中如何利用客户端的Javascript脚本提高程序的执行效率并实现更多的功能

  一 ASP Net与Javascript

  Net是微软公司下一代的战略核心 ASP Net是 Net战略在Web开发方面的具体实现 它继承了ASP的简单性和易用性 同时克服了ASP程序结构化较差 难于阅读和理解的缺点 特别是服务器端控件和事件驱动模式的引入 使得Web应用程序的开发更接近于过去桌面程序的开发

 在各种各样介绍ASP Net的文章和书籍中 都把重点放在了服务器控件和 Net Framework SDK上 因为这是ASP Net中最新和最具革命性的改进 与此相反 在过去的Web开发中占据重要地位的客户端脚本Javascript(也包括VBScript)则鲜有提及 似乎有了服务器端程序 已经不需要客户端脚本了 但是 服务器端的程序毕竟需要一次浏览器与Web服务器的交互 对于ASP Net来说 就是一次页面的提交 需要来回传送大量的数据 而很多工作 比如输入验证或者删除确认等 完全可以用Javascript来实现 因此 探讨在ASP Net中如何使用Javascript仍然很有必要

  二 Javascript的应用示例

  为页面上的某个服务器控件添加Javascript事件

 服务器控件最终生成的仍然是普通的HTML 比如<asp textbox>生成input text 表单中的每个HTML控件都有它自己的Javascript事件 比如Textbox有onchange事件 Button有onclick事件 Listbox有onchange事件等 要想为服务器控件添加客户端的事件 需要用到Attributes属性 Attributes属性是所有的服务器控件都有的一个属性 它用来为最终生成的HTML添加自定义的一些标记 假设Web Form上有一个保存按钮btnSave 希望在用户点此按钮时提示用户是否确实要保存(比如一旦保存就无法恢复等) 则应在Page_Load事件中添加如下代码

 if not page isPostBack() then

 btnSave Attributes Add( onclick Javascript return confirm( Are you sure to save? ) )

 end if

 要注意的是 return 这是不可省的 否则即使用户点了取消 数据仍然会保存

  为Datagrid中的每一行添加Javascript事件

 假设Datagrid的每一行有一个删除按钮 希望在用户点此按钮时提示用户是否确实要删除此条记录 以防用户点错了行 或仅仅是无意中点了删除按钮

 无论这个删除按钮是什么名字 都不能象上个例子那样直接引用 因为每一行都有这样一个按钮 它们是Datagrid中的子控件 在这种情况下 需要用到Datagrid的OnItemDataBound事件 OnItemDataBound事件发生在Datagrid的每一行数据绑定到Datagrid之后(即一行激发一次) 首先在Datagrid的声明中添加如下代码

 <asp datagrid id= grd runat= server OnItemDataBound = ItemDataBound >

 …Columns definition here

 </asp datagrid> 此处说明OnItemDataBound事件发生时调用ItemDataBound方法 在代码后置文件中添加此方法的定义

 Sub ItemDataBound(ByVal sender As Object ByVal e As DataGridItemEventArgs)

 If e Item ItemType <> ListItemType Header And e Item ItemType <> ListItemType Footer Then

 Dim oDeleteButton As LinkButton = e Item Cells( ) Controls( )

 oDeleteButton Attributes( onclick ) = javascript return Confirm ( Are you sure you want to delete & DataBinder Eval(e Item DataItem m_sName ) & ? )

 End If

 End Sub

 由于Datagrid的标题行和脚注行也会激发此事件 所以首先判断激发此事件的行不是标题行和脚注行 这里假设Delete按钮位于Datagrid的第 列(第一列是 ) 且Datagrid的Datasource中包含名为 m_sName 的列

  引用编辑状态下的Datagrid中的控件

 Datagrid的内置编辑功能使得当记录的字段较少时的一种编辑方法 用户不必进入一个单独的页面编辑记录 而是直接点编辑按钮就可以使当前行进入编辑模式 而另一方面 有一些Javascript程序需要引用控件的名称 比如 很多程序在需要用户输入日期时都提供一个日期控件以保证日期格式的合法性 当用户点控件图标时弹出一个新窗口供用户选择日期 此时需要把显示日期的文本框的ID提供给新窗口 以便当用户选择日期后值可以回填到文本框中

 如果是普通的服务器文本框控件 它的ID与生成的HTML输入框的ID是相同的 但是在Datagrid的编辑状态下 两个ID并不相同(其道理与上例相同) 这就需要用到控件的ClientID属性

 Protected Sub ItemEdit(ByVal source As Object ByVal e As System Web UI WebControls DataGridCommandEventArgs)

 Dim sDateCtrl as string

 sDateCtrl = grd Items (e Item ItemIndex) Cells( ) FindControl( txtDate ) ClientID

 End Sub

 这里假设ItemEdit方法是Dategrid的OnItemEdit事件处理程序 同时在Datagrid的第三列包含一个名为txtDate的服务器文本框控件

  引用ASP Net自动生成的Javascript程序

 所谓的 服务器端控件 是针对开发人员的 在生成的HTML源程序中并没有服务器和客户端之分 都是标准的HTML DHTML和Javascript 它之所以能响应用户的输入是因为每个控件的事件处理程序最终都生成了一段脚本 此脚本重新提交页面使得Web Server有机会再次响应并作出处理 通常情况下我们不必知道此脚本是什么也不必直接调用此脚本 但在有些情况下 适当地调用此脚本可以简化许多工作 请看下面两个例子

 ● 点Datagrid的任一位置以选中一行

 Datagrid提供了一种内置的选择按钮 当点此按钮时选中当前行(可以设置SelectedItemStyle属性以使当前行有不同的外观) 但用户可能更习惯于点任意一个位置都能选中一行 如果完全自己实现这个功能相当烦琐 一个好的思路是添加一个选择按钮 但使此列隐藏 当点任一行时调用此按钮产生的Javascript脚本

 Sub Item_Bound(ByVal sender As Object ByVal e As DataGridItemEventArgs )

 Dim itemType As ListItemType

 itemType = CType(e Item ItemType ListItemType)

 If (itemType <> ListItemType Header) And _

 (itemType <> ListItemType Footer) And _

 (itemType <> ListItemType Separator) Then

 Dim oSelect As LinkButton = CType(e Item Cells( ) Controls( ) LinkButton)

 e Item Attributes( onclick ) = Page GetPostBackClientHyperlink (oSelect )

 End Sub

 这里假设选择按钮位于第 列 e Item代表了一行 从生成的HTML上看就是在每个<tr>里增加了一个onclick事件 Page GetPostBackClientHyperLink方法返回页面中LinkButton控件产生的客户端脚本 其中第一个参数是Linkbutton控件 第二个参数是传递给此控件的参数 通常为空 如果不是LinkButton控件 有一个类似的函数GetPostBackClientEvent 读者可以参考MSDN

 ● 服务器产生的脚本与手工添加的脚本冲突

 服务器控件的服务器事件一般对应到客户端控件的相应事件 如Dropdownlist的SelectedIndexChanged事件对应HTML <Select>的onchange事件 如果你要手工增加一个onchange事件 则会在客户端产生两个onchange 浏览器就会忽略掉一个 比如用户希望每当改变了Dropdownlist中的选项就保存到数据库(虽然不是很常见 但确实有这种需要) 但同时还希望提醒用户是否确实要做保存 显然 保存的代码应该放在SelectedIndexChanged事件中 而提醒的工作应该手工加一段onchange事件 结果就是两个onchange只能执行一个 正确的方法应该是添加一个不可见的保存按钮 在手工增加的onchange事件中调用此按钮生成的程序

 Page_Load方法如下

 Dim sCmd as string

 sCmd=Page GetPostBackClientHyperlink(btnUpdate )

 If not page isPostback then

 Dropdownlist Attributes add( onchange ConfirmUpdate( & sCmd & ) )

 End if

 ConfirmUpdate函数如下

 <Script language= javascript >

 function ConfirmUpdate(cmd){

 if confirm( Are you sure to update? )

 eval(cmd)

 }

 </Script>

 这里利用了Javascript eval函数来调用一个字符串中包含的命令 需注意的是包含命令的字符串不能用单引号括起来 因为自动生成的脚本中包括单引号 所以这里用两个双引号表示字符串本身的双引号

  三 结束语

lishixinzhi/Article/program/net/201311/11989

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/4114686.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-17
下一篇2024-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存