zoukankan      html  css  js  c++  java
  • Web应用基础

    • B-S架构

    架构的发展

    1,c/s架构 (client客户端-server服务端)         (胖客户端:要求客户端运行业务;把业务放到服务器端,则是瘦客户端)         典型的c/s应用:ftp工具、QQ、邮件系统、杀毒软件...

            1.建立在tcp/ip协议之上,有自己的通信规则(建立业务) 
            2.需要相互配合才能完成一个完整业务逻辑
            3.允许多个客户端程序同时接入一个server程序(并发) 
            4.每一个client(机器)都必须安装客户软件
            5.修改了server程序,通常client程序都要修改(升级) 
    优点:利用客户端的计算能力,分担服务器的负荷(大型网络游戏就利用这点) 
    缺点:用户必须安装客户端程序;客户端需要升级(麻烦) 
    2,b/s架构 (browser - web server(cluster集群))         (极瘦客户端:最低限度地减少客户端程序,只需要browser(浏览器))         1.基于http协议(应用层) 
            2.几乎所有的业务逻辑处理都在server完成
            3.支持并发
            4.client要求很少,只需要安装browser(浏览器) 
            5.修改server之后,client不需要任何变化
            6.server端开发技术:html/js,xhtml,... php,asp,jsp,servlet
    缺点:所有业务都在服务器端完成,服务器负荷大。

    优点:支持高并发访问;不需另外安装软件(只需浏览器),免去更新的麻烦。

    关于web中常见的名词或者概念,在我前面的博客里面有整理到,这里只是大致的罗列下复习一下。


    • 开发一个静态的Web应用
    1,下载一个tomcat服务器
    2,web服务器-Tomcat的启动和配置,运行新版本的(5之后)tomcat只需要配置上JAVA_HOME就可以。
        先进入Tomcat主目录下的bin目录      // %catalina_home%/bin
        window平台:启动---startup.bat               关闭---shutdown.bat
        Linux平台:    启动---startup.sh               关闭---shutdown.sh 或 Ctrl+C
        测试: 打开浏览器,访问 Tomcat 首页:http://localhost:8080 或者 http://127.0.0.1:8080/
        获取进程Id强行杀死tomcat进程:
           ps ef|grep tomcat ---查看tomcat的进程id

           kill -9 tomcat进程Id号 --- 强行杀死tomcat进程

    3,介绍Web应用的结构,严格定义为两部分:

        ① Web应用的根目录下有一个特定的子目录称为WEB-INF,其中包含不能被客户访问的专用Web应用程序软件, 包括Servlet类文件、部署描述符web.xml、外部库以及其他任何由此应用程序使用的专用文件。
        ② 所有位于WEB-INF之外的文件都被看作是公共的,它们可以从客户端被访问。资源包括HTML页面、JSP页面和图像等。
        web.xml的模板(一个web.xml中可以配置多个Servlet):
    <?xml version="1.0" encoding="UTF-8"?>
            <web-app version="2.5" 
             xmlns="http://java.sun.com/xml/ns/javaee" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
             http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
              <servlet>
                <servlet-name>servlet的名字1</servlet-name>   //servlet的逻辑名
                <servlet-class>servlet类全名1</servlet-class> //类的完全限定名
              </servlet>
              <servlet>
                <servlet-name>servlet的名字2</servlet-name>
                <servlet-class>servlet类全名2</servlet-class>
              </servlet>
             
              <servlet-mapping>
                <servlet-name>servlet的名字1</servlet-name> //要和servlet标签中的相同
                <url-pattern>指定servlet相对于应用目录的路径</url-pattern> //servlet的访问路径
              </servlet-mapping>
              <servlet-mapping>
                <servlet-name>servlet的名字2</servlet-name>
                <url-pattern>指定servlet相对于应用目录的路径</url-pattern>
              </servlet-mapping>
              <welcome-file-list>
                <welcome-file>index.jsp</welcome-file>//指定默认的欢迎页面
              </welcome-file-list>
            </web-app>


    • Web服务器的一些特点  
    什么是静态内容?什么是动态内容?
    静态:返回页面每个客户端都相同。  动态:各个客户端的页面各不相同。产生动态内容的Web辅助应用:CGI & Servlet
        
    CGI(Common Gateway Interface): 可以产生动态内容,跨语言(C/C++, Perl, python...) 
    1.本身是一个进程(数据共享,跨进程调用) --性能较差
    2.可移植性很差(本地语言) 
    3.安全性差--可以访问本地的操作系统,容易受黑客攻击
    web server / servlet container
    1.性能好 --多线程(而不是进程) 
    2.可移植性 --相对好
    3.安全性


    • Http基础
    HTTP(Hyper Text Transfer Protocol)是超文本传输协议的缩写,它用于传送 WWW 方式的数据。  HTTP 协议采用了请求/响应模型。基于 TCP/IP 之上的协议,在 Web 上广泛使用。无状态。  如果来自服务器的响应是 html 页面,那么 html 内容会嵌入到 Http 响应中。  Http 会话:是一个简单的请求-响应序列。
    1)请求响应模型
        请求的关键要素:1.http方法(要完成的动作) 2.要访问的页面(URL请求) 3.表单参数
        响应的关键要素:1.状态码(请求是否成功) 2.内容类型(txt,img,html等) 3.返回内容(具体资源:html,图片等) 
    2)URL的分析
        URL(Uniform Resoure Locator)统一资源定位器。Web 上的每一个资源都有唯一的地址,采用的就是 url 格式
    3)使用Http Monitor截获http的请求与响应信息
        Http 请求方法包括:Get()方法;Post()方法; 其他方法:Head, Trace, Put, Delete, Connect 等
        Get()方法: Http 最简单的方法,其最主要的任务:从服务器上获取资源
        Post()方法:更强大的请求方法,不仅可以请求资源,还可以向服务器发送表单数据
    4)分析http请求的信息
        客户端向服务器发送一个请求,请求头包含:1.请求的方法; 2.URI; 3.协议版本; 4.以及包含请求修饰符; 5.客户信息和内容的类似于 MIME 的消息结构

    5)分析http响应的信息。截获内容:

    HTTP/1.1 200 OK      // HTTP/1.1 是web服务器使用的版本;200 是状态码;OK 是状态码的文本版本
            ETag: W/"472-1198101802343"
            Last-Modified: Wed, 19 Dec 2007 22:03:22 GMT
            Content-Type: text/html  // MIME类型:告诉浏览器所要接收的是哪一类型的数据。以供浏览器显示。
            Content-Length: 472
            Date: Wed, 19 Dec 2007 22:05:44 GMT
            Server: Apache-Coyote/1.1
            //以上是Http响应的首部
            //响应体中包含了Html以及其他要显示的内容
            <html><head><title>User Login</title></head>
            <body><center>……</center></body></html>

           
    • Http 响应状态码分析(具体代码含义参看 http 代码对照表):
            1xx:信息响应类,表示接收到请求并且继续处理
            2xx:处理成功响应类,表示动作被成功接收、理解和接受
            3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
            4xx:客户端错误,客户请求包含语法错误或者是不能正确执行。 如:404——无法找到,表示无法找到指定位置的资源。
            5xx:服务端错误,服务器不能正确执行一个正确的请求
  • 相关阅读:
    如何修改Myeclipse的JSP模板
    解决----------“win10,不能打字了,已禁用IME”
    Scala学习之For、Function、Lazy(4)
    Scala学习之Tuple、Map、Array
    PHP Cookies
    PHP Cookies
    PHP 文件处理
    PHP include 和 require
    sqlserver2012 评估期已过问题处理
    PHP preg_match正则表达
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5233031.html
Copyright © 2011-2022 走看看