zoukankan      html  css  js  c++  java
  • 2.网站的运行原理

    我们在用高级语言建立动态网页时,是放在服务器上运行,然后会在客户端请求时显示于客户端,当客户端提交后会提交到服务器,然后服务器会把相关结果传给客户端。

    就如同在银行开户时一样,你先写个请求表单,把表单交给工作人员后进行处理,处理完成后工作人员给你反馈结果,网站的原理也是如此。

    本例中我们探询网站的原理:

      1.建立一个表单,为登录使用。放上一textbox,及sumbit。sumbit用于提交表单。我们建立的是htm页面。

        

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns=http://www.w3.org/1999/xhtml>
    <head>
        <title></title>
        <script type="text/javascript">
            function checkUserName() {
                var i = document.getElementById("user").value.length;
                if (i <= 0)
                    window.event.returnValue = false;
                 
          };
        </script>
    </head>
    <body>
      姓名:<input type="text" name="userName" id="user" />
      <input type="submit" value="提交"<!-- onclick="checkUserName();-->" />
    </body>
    </html>

    当点击submit时,会把名称为userName的value提交给服务器,服务器进行处理。

    2.建立处理程序

      在本项目中新建一个一般处理程序,后缀名为ashx,如下图:

    下面为我们在此模板中写的处理过程 :

    <%@ WebHandler Language="C#" Class="Handler" %>
    
    using System;
    using System.Web;
    //此为处理程序
    public class Handler : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/html";//用html才能正常显示,用plain不行
            string returnVale = context.Request["userName"];
            //重绘客户端的信息,即感觉还在同一页面上
    
            context.Response.Write(@"<form action='Handler.ashx'>
      姓名:<input type='text' name='userName' id='user' value='"+returnVale+@"' />
      <input type='submit' value='提交' />
    </form>");
            context.Response.Write("Hello World: " + returnVale);
            
            context.Response.Write("欢迎你的到来。");
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

    这个处理程序的原理就是读取客户处传来的userName名称,然后把登录页面拷贝一份并输入欢迎信息后再发送给客户端显示。

    你运行登录窗体,输入信息后再点击按钮,但发现没有反应,即服务端没有返回结果,是什么原因呢?

    我们把登录窗体加上表单(form)试下,如下代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript">
            function checkUserName() {
                var i = document.getElementById("user").value.length;
                if (i <= 0)
                    window.event.returnValue = false;
                 
          };
        </script>
    </head>
    <body>
    <form action="Handler.ashx">
       姓名:<input type="text" name="userName" id="user" />
      <input type="submit" value="提交"<!-- onclick="checkUserName();-->" />
    </form>
    </body>
    </html>

    form action="Handler.ashx"表明 表单提交给Handler.ashx进行处理,即Handler.ashx进行返回结果。

    这时你运行登录页面再点击按钮,会发现它可以得到服务端的处理结果了。

    能过以上的过程我们会发现开发网站时有一些东西必须谨记:

      1.只有 有表单的页面才能提交给服务器

      2.表单中的穿件一定要有Name属性才能传给服务器,即name属性是给服务器用的。没有Name属性的元素是不会被传给服务器的。 id是给客户端用的。

      3.Request表示请求,是客户端发给服务端的。服务端得到客户端的值为: Request["name"]

      4.Respone表示响应,是服务端发给客户端的。服务端写给客户端为:Respone.write("sss");

    网站程序的原理就是:客户表单--(提交)-->服务端程序处理--(响应)-->返回给客户端.

    HTTP是请求响应的模型,服务器不会读取浏览器的内容,只能读取客户端网页提交过来的数据。


     

        

  • 相关阅读:
    Java 第十一届 蓝桥杯 省模拟赛 梅花桩
    Java 第十一届 蓝桥杯 省模拟赛 梅花桩
    Java 第十一届 蓝桥杯 省模拟赛 梅花桩
    Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量
    Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量
    Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量
    Java 第十一届 蓝桥杯 省模拟赛 最大的元素距离
    Java 第十一届 蓝桥杯 省模拟赛 递增序列
    Java 第十一届 蓝桥杯 省模拟赛 递增序列
    Java 第十一届 蓝桥杯 省模拟赛 最大的元素距离
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3111819.html
Copyright © 2011-2022 走看看