zoukankan      html  css  js  c++  java
  • asp中实现网络打印功能

    文件aspprint.asp代码如下:

      <%@ language=vbscript %> 

      <% 

      option explicit

      dim strsubmit         'form中用来保存提交按钮的值 

      dim strprinterpath    'form中保存网络打印机路径的值 

      dim strusername       'form中用户名的值 

      dim strpassword        'form中密码的值 

      dim strmessage        'form打印内容的值 

      dim objfs             'vbscript中的文件系统对象 

      dim objwshnet         'wsh中的网络对象 

      dim objprinter        '打印对象

      strsubmit = request.form("submit") 

      %>

      <html> 

      <head> 

      <meta name="generator" content="microsoft visual studio 6.0"> 

      </head> 

      <body>

      <% 

      if strsubmit = "" then 

      %>

      注意的是: 

          由于我是演示起见,其中有关nt的帐号和密码都是使用了不加密的手段在 

    asp中传递的 

      真正的运用中应该对该登录过程进行安全处理。 

      <form action="aspprint.asp" method=post id=form name=form> 

         <table width=100% align=center border=0 cellspacing=1 cellpadding 

    =1> 

            <tr> 

               <td align=right nowrap>网络打印机路径:</td> 

               <td align=left nowrap><input type="text" id=printerpath nam 

    e=printerpath  

                  value="\< domain >< printer >"></td> 

            </tr> 

            <tr> 

               <td align=right nowrap>登录帐号:</td> 

               <td align=left nowrap><input type="text" id=username name=u 

    sername  

                  value="<% = strusername %>"></td> 

            </tr> 

            <tr> 

               <td align=right nowrap>登录口令:</td> 

               <td align=left nowrap><input type="password " id=password   

                  name=password ></td> 

            </tr> 

            <tr> 

               <td align=right nowrap>请输入你想打印的文字:</td> 

               <td align=left nowrap><textarea rows=2 cols=20 id=message 

                  name=message></textarea></td> 

            </tr> 

            <tr> 

               <td align=right nowrap> </td> 

               <td align=left nowrap><input type="submit" value="submit" 

                  id=submit name=submit></td> 

            </tr> 

         </table> 

      </form>

      当以上信息被提交后,就可以按照下面的代码进行打印了。 

      <% 

      else 

         ' 从form中取得响应信息。 

         strprinterpath = request.form("printerpath") 

         strusername = request.form("username") 

         strpassword = request.form("password ") 

         strmessage = request.form("message")

      we will now use the vbscript filesystemobject object and the wsh net 

    work object. the network object will 

      give us the methods we need to open a printer connection, and the fi 

    lesystemobject will allow us to stream our 

      output to the printer. we create these objects in the following code 

     example: 

         set objfs = createobject("scripting.filesystemobject") 

         set objwshnet = createobject("wscript.network") 

         ' 使用wsh连接网络打印机 

         objwshnet.addprinterconnection "lpt1", strprinterpath, false, str 

    username, strpassword 

         ' 使用文件系统对象将打印设备作为一个文件使用 

         set objprinter = objfs.createtextfile("lpt1:", true) 

         ' 给打印设备送出文本 

         objprinter.write(strmessage) 

         '关闭打印设备对象并进行错误陷阱处理 

         on error resume next 

         objprinter.close 

         ' 如果发生错误,关闭打印连接,并输出错误信息 

         if err then 

            response.write ("error # " & cstr(err.number) & " " & err.desc 

    ription) 

            err.clear     

         else 

            ' 操作成功,输出确认信息 

            response.write("<center>") 

            response.write("<table width=100% align=center border=0 cellsp 

    acing=1 cellpadding=1>") 

            response.write("<tr><td align=right><b>打印消息送出:</b></td>" 

            response.write("<td align=left>" & strmessage & "</td></tr>")

            response.write("<tr><td align=right><b>网络打印机路径:</b></td 

    >") 

            response.write("<td align=left>" & strprinterpath & "</td></tr 

    >") 

            response.write("<tr><td align=right><b>登录帐号:</b></td>") 

            response.write("<td align=left>" & strusername & "</td></tr>")

            response.write("</table>") 

            response.write("</center>") 

         end if 

         ' 取消打印连接 

         objwshnet.removeprinterconnection "lpt1:" 

         set objwshnet  = nothing 

         set objfs      = nothing 

         set objprinter = nothing 

      end if 

      %> 

      </body> 

      </html>

    response_buffer.asp 

    <%'response.buffer=true%> 

    <a href="a">a</a> 

    <%response.redirect "request_form.htm"%>

    效果: 

    ①.当关闭iis的缓冲功能,访问该页面时出错 

    答复对象 错误 'asp 0156 : 80004005' 

    头错 

    /course/response_buffer.asp,行3 

    http 头已经写入到 客户浏览器。任何 http 头的修改必须在写入页内容之前。 

    ②.当关闭iis的缓冲功能,去掉文件第一行的注释,则页面重定向成功 

    ③.当打开iis的缓冲功能,无论是否去掉文件第一行的注释,页面重定向都成功

    问题:如何保护自己的asp源代码不泄露?

      答:下载微软的windows script encoder,对asp的脚本和客户端javascript、vbscript脚本进行加密。客户端脚本加密后,只有ie5以上的版本才能执行,服务器端脚本加密后,只有服务器上安装有script engine 5(装ie5即可)才能解释执行。

      问题:为什么global.asa文件总是不起作用?

      答:只有把global.asa文件放在web发布目录某个站点的根目录下它才有效,放在发布目录的某个子目录下不起作用。另外,也可以使用iis4的internet service manager把某个子目录设置为站点。

      问题:为什么asp文件总不解释执行?

      答:在iis服务器上没有给asp文件以脚本解释的权限,所以asp文件没有被其他web服务器 作为脚本代码进行解释执行,而被当成一般页面文件了。建议在web发布目录中建立一个asp目录,把所有asp文件存放在此目录下,把asp目录赋予脚本解释权限。

      问题:asp文件中使用response.redirect(url)时导致错误“the http headers are already written to the client browser. any http header modifications must be made before writing page content”,请问如何解决?

      答:此错误为http标题在写入页内容之后,写到了客户浏览器中。任何http标题的修改必须在写入页内容之前进行,解决的方法为在asp文件最开头加入response.buffer = true,在文件的结尾加入response.flush。

      问题:为什么session有时候会消失?

      答:session很像临时的cookie,只是其信息保存在服务器上(客户机上保存的是sessionid)。session变量消失有几种可能,如:使用者的浏览器不接受cookie,因为session依赖于cookie才能跟踪用户;session在一段时间后过期了,缺省为20分钟,如果希望更改,可以通过设置microsoft management console的web directory→properties→virtual directory→application settings→configuration→app options→session timeout选项来改变session的超时时间,也可以在asp脚本中设定,如session.timeout=60,可设定超时时间为60分钟。

      问题:怎样才能知道访问者的一些信息?

      答:通过request.servervariables("http—user—agent")获得访问者浏览器的类型;request.servervariables("remote—addr")可获得访问者的ip地址;而访问者的语言环境可通过request.servervariables("http—accept—language")来获得。

      问题:怎样才能将query string从一个asp文件传送到另一个asp文件?

      答:前一个asp文件加入下列代码:response.redirect("second.asp?"&request.servervariables("query—string"))即可。

      问题:asp中如何控制cookies?

      答:若想写入cookies可用:response.cookies("待写入的coookies名称")=待写入数据。读取cookies则使用:读取数据=request.cookies("待读的cookies名称")。

      注意,写入cookies的response.cookies程序段必须放在〈html〉标记之前,且不可以有任何的其它html代码。另外,cookies中必须使用expires设定有效期,cookies才能真正地写入客户端硬盘中,否则只是临时的。

      问题:怎样实现用asp发送邮件?

      答:用户需装上windows nt option pack的smtp service功能。实现代码如下:

      〈%

      set mail = server.createobject("cdonts.newmail")

      mail.to ="abc@xxx.com"

      mail.from ="yourmail@xxx.com"

      mail.subject ="主题"

      mail.body ="e-mail内容"

      mail.send

      %〉

      问题:asp与其他数据库 连接一定要在服务器端设置dsn吗?

      答:不一定,asp与服务器的其他数据库 连接有两种方法,一种为通过dsn建立连接,另一种不用dsn建立连接。通过dsn连接其他数据库 需要服务器的系统管理员在服务器的控制面板中的odbc中设置一个dsn。如果没有在服务器上设置dsn,只要知道数据库文件名(比如access、paradox、foxpro的其他数据库 )或者数据源名(如sqlserver的其他数据库 )就可以访问其他数据库 ,直接提供连接所需的参数即可。

      连接代码如下:

      set conn=server.createobject("adodb.connection")

      connpath="dbq="&server.mappath("yourtable.mdb")

      conn.open"driver={microsoft access driver (�.mdb)};"&connpath

      set rs=conn.execute("select�from authors")

      问题:如何从一页到另一页传递变量?

      答:用hidden表单类型来传递变量。

      〈form method="post"action="mynextpage.asp"〉

      〈% for each item in request.form %〉

      〈input namee="〈%=item%〉"type="hidden"

      value="〈%=server.htmlencode(request.form(item)) %〉"〉

      〈% next %〉

      〈/form〉

      用session来保存变量。

      〈%session("bh")= request.form ("bh")%〉

      用querystring保存变量。

      〈a herf="action.asp?bh=10"〉查询〈/a〉

      〈%request. querystring ("bh")%〉

      问题:如何用asp实现在线人数统计?

      答:在线人数是指一个时段内的访客人数统计,时间的长短是由设计者设定的。

      在这个时段内,各个不同ip访问本站点的总数,就是当前的线上人数。在asp中,使用session对象来实现统计,实现代码如下:

      golobal.asa文件

      〈script language="vbscript"runat="server"〉

      sub session—onstart 

      application("online")=application("online")+1 

      end sub 

      sub session—onend 

      application("online")=application("online")-1 

      end sub 

      sub application—onstard 

      application("online")=0 

      end sub 

      sub application—onend 

      application("online")=0 

      end sub 

      〈/script〉

      online.asp文件内容

      〈% tmp=application("online") 

      tmp=cstr(tmp) 

      dim disp(20) 

      dim images(20) 

      dbbits=len(tmp) 

      for i= 1 to dbbits 

      disp(i)=left(right(tmp,i),i-(i-1)) 

      next 

      for i=dbbits to 1 step -1 

      images(i)="〈img src="&"http://xxxx.com.cn/pic"&"/"&disp(i)&".gif〉"

      response.write"document.write(′"&images(i)&"′);"

      next %〉

      问题:asp程序运行的时间如何计算?

      答:确定asp程序的执行时间的代码如下所示:

      〈%

      dim t1,t2

      t1=now()

      ′被检测的asp代码

      t2=now()

      response.write"运行这段asp代码用了"&cstr(cdbl((t2-t1)*24*60*60))&"秒"

      %〉

    文件aspprint.asp代码如下:

     
      <%@ language=vbscript %> 
      <% 
      option explicit

      dim strsubmit         'form中用来保存提交按钮的值 
      dim strprinterpath    'form中保存网络打印机路径的值 
      dim strusername       'form中用户名的值 
      dim strpassword        'form中密码的值 
      dim strmessage        'form打印内容的值 
      dim objfs             'vbscript中的文件系统对象 
      dim objwshnet         'wsh中的网络对象 
      dim objprinter        '打印对象

      strsubmit = request.form("submit") 
      %>

      <html> 
      <head> 
      <meta name="generator" content="microsoft visual studio 6.0"> 
      </head> 
      <body>

      <% 
      if strsubmit = "" then 
      %>

      注意的是: 
          由于我是演示起见,其中有关nt的帐号和密码都是使用了不加密的手段在 
    asp中传递的 
      真正的运用中应该对该登录过程进行安全处理。 
      <form action="aspprint.asp" method=post id=form name=form> 
         <table width=100% align=center border=0 cellspacing=1 cellpadding 
    =1> 
            <tr> 
               <td align=right nowrap>网络打印机路径:</td> 
               <td align=left nowrap><input type="text" id=printerpath nam 
    e=printerpath  
                  value="\< domain >< printer >"></td> 
            </tr> 
            <tr> 
               <td align=right nowrap>登录帐号:</td> 
               <td align=left nowrap><input type="text" id=username name=u 
    sername  
                  value="<% = strusername %>"></td> 
            </tr> 
            <tr> 
               <td align=right nowrap>登录口令:</td> 
               <td align=left nowrap><input type="password " id=password   
                  name=password ></td> 
            </tr> 
            <tr> 
               <td align=right nowrap>请输入你想打印的文字:</td> 
               <td align=left nowrap><textarea rows=2 cols=20 id=message 

                  name=message></textarea></td> 
            </tr> 
            <tr> 
               <td align=right nowrap> </td> 
               <td align=left nowrap><input type="submit" value="submit" 

                  id=submit name=submit></td> 
            </tr> 
         </table> 
      </form>

      当以上信息被提交后,就可以按照下面的代码进行打印了。 
      <% 
      else 
         ' 从form中取得响应信息。 
         strprinterpath = request.form("printerpath") 
         strusername = request.form("username") 
         strpassword = request.form("password ") 
         strmessage = request.form("message")

      we will now use the vbscript filesystemobject object and the wsh net 
    work object. the network object will 
      give us the methods we need to open a printer connection, and the fi 
    lesystemobject will allow us to stream our 
      output to the printer. we create these objects in the following code 
     example: 

         set objfs = createobject("scripting.filesystemobject") 
         set objwshnet = createobject("wscript.network") 
         ' 使用wsh连接网络打印机 
         objwshnet.addprinterconnection "lpt1", strprinterpath, false, str 
    username, strpassword 
         ' 使用文件系统对象将打印设备作为一个文件使用 
         set objprinter = objfs.createtextfile("lpt1:", true) 
         ' 给打印设备送出文本 
         objprinter.write(strmessage) 
         '关闭打印设备对象并进行错误陷阱处理 
         on error resume next 
         objprinter.close 
         ' 如果发生错误,关闭打印连接,并输出错误信息 
         if err then 
            response.write ("error # " & cstr(err.number) & " " & err.desc 
    ription) 
            err.clear     
         else 
            ' 操作成功,输出确认信息 
            response.write("<center>") 
            response.write("<table width=100% align=center border=0 cellsp 
    acing=1 cellpadding=1>") 
            response.write("<tr><td align=right><b>打印消息送出:</b></td>" 

            response.write("<td align=left>" & strmessage & "</td></tr>")

            response.write("<tr><td align=right><b>网络打印机路径:</b></td 
    >") 
            response.write("<td align=left>" & strprinterpath & "</td></tr 
    >") 
            response.write("<tr><td align=right><b>登录帐号:</b></td>") 
            response.write("<td align=left>" & strusername & "</td></tr>")

            response.write("</table>") 
            response.write("</center>") 
         end if 
         ' 取消打印连接 
         objwshnet.removeprinterconnection "lpt1:" 
         set objwshnet  = nothing 
         set objfs      = nothing 
         set objprinter = nothing 
      end if 
      %> 
      </body> 
      </html>
     


    response_buffer.asp 
    <%'response.buffer=true%> 
    <a href="a">a</a> 
    <%response.redirect "request_form.htm"%>

    效果: 
    ①.当关闭iis的缓冲功能,访问该页面时出错 

    答复对象 错误 'asp 0156 : 80004005' 
    头错 
    /course/response_buffer.asp,行3 
    http 头已经写入到 客户浏览器。任何 http 头的修改必须在写入页内容之前。 
    ②.当关闭iis的缓冲功能,去掉文件第一行的注释,则页面重定向成功 
    ③.当打开iis的缓冲功能,无论是否去掉文件第一行的注释,页面重定向都成功



    问题:如何保护自己的asp源代码不泄露?

      答:下载微软的windows script encoder,对asp的脚本和客户端javascript、vbscript脚本进行加密。客户端脚本加密后,只有ie5以上的版本才能执行,服务器端脚本加密后,只有服务器上安装有script engine 5(装ie5即可)才能解释执行。

      问题:为什么global.asa文件总是不起作用?

      答:只有把global.asa文件放在web发布目录某个站点的根目录下它才有效,放在发布目录的某个子目录下不起作用。另外,也可以使用iis4的internet service manager把某个子目录设置为站点。

      问题:为什么asp文件总不解释执行?

      答:在iis服务器上没有给asp文件以脚本解释的权限,所以asp文件没有被其他web服务器 作为脚本代码进行解释执行,而被当成一般页面文件了。建议在web发布目录中建立一个asp目录,把所有asp文件存放在此目录下,把asp目录赋予脚本解释权限。

      问题:asp文件中使用response.redirect(url)时导致错误“the http headers are already written to the client browser. any http header modifications must be made before writing page content”,请问如何解决?

      答:此错误为http标题在写入页内容之后,写到了客户浏览器中。任何http标题的修改必须在写入页内容之前进行,解决的方法为在asp文件最开头加入response.buffer = true,在文件的结尾加入response.flush。

      问题:为什么session有时候会消失?

      答:session很像临时的cookie,只是其信息保存在服务器上(客户机上保存的是sessionid)。session变量消失有几种可能,如:使用者的浏览器不接受cookie,因为session依赖于cookie才能跟踪用户;session在一段时间后过期了,缺省为20分钟,如果希望更改,可以通过设置microsoft management console的web directory→properties→virtual directory→application settings→configuration→app options→session timeout选项来改变session的超时时间,也可以在asp脚本中设定,如session.timeout=60,可设定超时时间为60分钟。

      问题:怎样才能知道访问者的一些信息?

      答:通过request.servervariables("http—user—agent")获得访问者浏览器的类型;request.servervariables("remote—addr")可获得访问者的ip地址;而访问者的语言环境可通过request.servervariables("http—accept—language")来获得。

      问题:怎样才能将query string从一个asp文件传送到另一个asp文件?

      答:前一个asp文件加入下列代码:response.redirect("second.asp?"&request.servervariables("query—string"))即可。

      问题:asp中如何控制cookies?

      答:若想写入cookies可用:response.cookies("待写入的coookies名称")=待写入数据。读取cookies则使用:读取数据=request.cookies("待读的cookies名称")。

      注意,写入cookies的response.cookies程序段必须放在〈html〉标记之前,且不可以有任何的其它html代码。另外,cookies中必须使用expires设定有效期,cookies才能真正地写入客户端硬盘中,否则只是临时的。

      问题:怎样实现用asp发送邮件?

      答:用户需装上windows nt option pack的smtp service功能。实现代码如下:
      〈%
      set mail = server.createobject("cdonts.newmail")
      mail.to ="abc@xxx.com"
      mail.from ="yourmail@xxx.com"
      mail.subject ="主题"
      mail.body ="e-mail内容"
      mail.send
      %〉
      问题:asp与其他数据库 连接一定要在服务器端设置dsn吗?

      答:不一定,asp与服务器的其他数据库 连接有两种方法,一种为通过dsn建立连接,另一种不用dsn建立连接。通过dsn连接其他数据库 需要服务器的系统管理员在服务器的控制面板中的odbc中设置一个dsn。如果没有在服务器上设置dsn,只要知道数据库文件名(比如access、paradox、foxpro的其他数据库 )或者数据源名(如sqlserver的其他数据库 )就可以访问其他数据库 ,直接提供连接所需的参数即可。

      连接代码如下:
      set conn=server.createobject("adodb.connection")
      connpath="dbq="&server.mappath("yourtable.mdb")
      conn.open"driver={microsoft access driver (�.mdb)};"&connpath
      set rs=conn.execute("select�from authors")

      问题:如何从一页到另一页传递变量?

      答:用hidden表单类型来传递变量。

      〈form method="post"action="mynextpage.asp"〉
      〈% for each item in request.form %〉
      〈input namee="〈%=item%〉"type="hidden"
      value="〈%=server.htmlencode(request.form(item)) %〉"〉
      〈% next %〉
      〈/form〉

      用session来保存变量。

      〈%session("bh")= request.form ("bh")%〉

      用querystring保存变量。

      〈a herf="action.asp?bh=10"〉查询〈/a〉
      〈%request. querystring ("bh")%〉
      问题:如何用asp实现在线人数统计?

      答:在线人数是指一个时段内的访客人数统计,时间的长短是由设计者设定的。

      在这个时段内,各个不同ip访问本站点的总数,就是当前的线上人数。在asp中,使用session对象来实现统计,实现代码如下:
      golobal.asa文件

      〈script language="vbscript"runat="server"〉
      sub session—onstart 
      application("online")=application("online")+1 
      end sub 
      sub session—onend 
      application("online")=application("online")-1 
      end sub 
      sub application—onstard 
      application("online")=0 
      end sub 
      sub application—onend 
      application("online")=0 
      end sub 
      〈/script〉

      online.asp文件内容

      〈% tmp=application("online") 
      tmp=cstr(tmp) 
      dim disp(20) 
      dim images(20) 
      dbbits=len(tmp) 
      for i= 1 to dbbits 
      disp(i)=left(right(tmp,i),i-(i-1)) 
      next 
      for i=dbbits to 1 step -1 
      images(i)="〈img src="&"http://xxxx.com.cn/pic"&"/"&disp(i)&".gif〉"
      response.write"document.write(′"&images(i)&"′);"
      next %〉

      问题:asp程序运行的时间如何计算?

      答:确定asp程序的执行时间的代码如下所示:

      〈%
      dim t1,t2
      t1=now()

      ′被检测的asp代码

      t2=now()
      response.write"运行这段asp代码用了"&cstr(cdbl((t2-t1)*24*60*60))&"秒"
      %〉

  • 相关阅读:
    Redis 的 5 个常见使用场景
    当别人给你一个wsdl或者webservice接口时
    Java事务
    Java分布式锁的三种实现方案(redis)
    使用Redis数据库(String类型)
    超详细Redis数据库入门教程
    java对redis的基本操作(初识)
    String、StringBuffer与StringBuilder之间区别
    java正则表达式替换空格和换行符
    Linux 批量管理工具
  • 原文地址:https://www.cnblogs.com/ince/p/9156674.html
Copyright © 2011-2022 走看看