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是请求响应的模型,服务器不会读取浏览器的内容,只能读取客户端网页提交过来的数据。


     

        

  • 相关阅读:
    加载第三方Cocoapod库时到项目时
    IOS seachbar 收回键盘
    设置tableView 的Section的title问题
    UISearchView
    UICollectionView 头视图、 尾视图以及Cell自定制
    UICollectionView
    Tomcat上java.lang.IllegalStateException: Optional int parameter 'id' is not present
    格式化p6spy的输出日志
    bootstrap fileinput添加上传成功回调事件
    条件注释判断浏览器<!--[if !IE]>
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3111819.html
Copyright © 2011-2022 走看看