07 JavaWeb

软件开发的两种架构:c/s和b/s         

* C/S     client/server     客户端/服务器     例子:QQ     快播     暴风影音...
          * 优点:交互性非常好,服务器压力小。
          * 缺点:客户端软件,下载客户端软件。
                   
     * B/S     Browser/server     浏览器/服务器     例子:购物网站     12306购票     淘宝
          * 缺点:交互性不好(ajax),服务器压力大。
          * 优点:服务器端进行更新,打开浏览器刷新。


Web开发的相关知识                    
          * 静态的WEB资源
               * HTML CSS JAVASCRIPT              
          * 动态的WEB资源    
               * Servlet/JSP     SUN提供了
               * ASP               微软
               * PHP               模板(mysql php )
               * RUBY             日本              
               * JAVA:           处理大数据。淘宝。

* 服务器的概念:
               * 底层原理:网络编程。
               * 硬件:一台主机。
               * 软件:安装服务器软件。
              
               * 访问:
                    * ip+端口号
                    * 119.75.217.56 -- 域名
                   
          * 常见的服务器
               * WebLogic     BEA的公司开发     但收费  支持JAVAEE的所有规范。被oracle收购(sun(java) mysql(数据库) WebLogic)
               * WebSphere     IBM的公司开发     但收费     支持JAVAEE的所有规范。
               * Tomcat     apache(开源组织,非常伟大)支持Servlet/JSP的规范。

使用tomcat的6.x的版本
               * 前提条件:安装JDK,配置JAVA_HOME
               * 安装tomat,(解压版),启动服务器:tomcat/bin/startup.bat。双击启动了。C:\Program Files (x86)\Java\jdk1.6.0_16
               * 如果黑色窗口一闪而过,需要配置JAVA_HOME。              
              
          * 常见的启动问题
               * 安装JDK,配置JAVA_HOME
              
               * 端口占用的问题。
                    * 端口被占用。
                    * java.net.BindException: Address already in use: JVM_Bind
                    * 解决问题:
                         * 在dos窗口中输入 netstat -ano命令,查找8080端口,找到PID
                         * 任务管理器结束PID就OK了。
                        
                         * 修改tomcat服务器的端口号。修改tomcat的配置文件。
                         * tomcat/conf/server.xml修改tomcat的端口号。
                              <Connector port="80" protocol="HTTP/1.1"
                                 connectionTimeout="20000"
                                 redirectPort="8443" />
                         * 重新启动服务器。                               
                         * 带 World wide web publish IIS服务。                        
                             
          * tomcat的目录结构
               * bin(**)               存放批处理的文件
               * conf(*****)          tomcat配置文件
               * lib(***)               存放jar包
               * logs(***)           日志
               * temp(**)               临时文件
               * webapps(*****)     web applications存放项目的
               * work(*****)          jsp的时候,翻译serlvet

* 开发一个动态的WEB资源,固定的目录结构
               * 在webapps的目录下,创建一个目录。
               website
                    | --- 静态的页面(HTML CSS JAVASCIPT JSP)
                    | --- WEB-INF
                              | --- web.xml     配置文件                              必须有的
                              | --- lib          (文件夹,第三方的jar包)          可选的
                              | --- classes     (文件夹,存放.class文件)          可选的

myeclipse配置tomcat
               * window -- 选择 -- (搜索servers)MyEclipse -- Servers -- tomcat -- 选择tomcat6.x的版本
                   
                    * 选择Enable -- 配置tomcat的路径 -- 选择tomcat的根路径 
                    * 配置JDK(点tomcat的+号) -- 配置JDK -- 选择JDK就ok了。
                   
               * 新建的WEB项目,部署tomcat服务器中,启动服务器。
              
               * 虚拟路径:访问路径(项目名称)。
               * 直接复制web项目,修改虚拟路径。
                    * 右键 -- 属性 -- MyEclipse -- web -- 修改虚拟路径。                

* tomcat管理员的配置(了解)
     * 在tomcat/conf/tomcat-user.xml
          <role rolename="manager"/>
          <user username="admin" password="admin" roles="manager"/>              
              
     * 部署web应用程序(三种方式)(重点)
               * 直接复制项目到webapps目录下。
                   
     * 通过conf/server.xml中配置虚拟路径的方式(开发中使用,但是tomcat不推荐使用)
                    * 标签<Context docBase="项目的真实路径" path="访问路径" ></Context>
                    * Context需要配置Host标签下。
                   
     * 在指定的文件夹下编写 xxx.xml,把xxx作为访问路径。(推荐使用的)
          * 在哪个文件夹下:($CATALINA_HOME/conf/[enginename]/[hostname]/ directory.)
          * tomcat/conf/Catalina/localhost/xxx.xml
          * 编写的xml:
               * <Context docBase="项目的真实路径" ></Context>
     //访问时直接http://localhost/xxx/

* 通信
               * 百度的ip:119.75.217.56
               * 翻译ip,先去自己的电脑hosts文件,如果找不到,网络上。
                   
          * 了解配置虚拟主机。
               * 先找到hosts文件。C:\WINDOWS\system32\drivers\etc\hosts   修改为: 127.0.0.1 www.baidu.com           
              
               <Host name="www.taobao.com"  appBase="C:\taobao"
                         unpackWARs="true" autoDeploy="true"
                         xmlValidation="false" xmlNamespaceAware="false">
              
                    <Context docBase="\mytaobao" path="/" ></Context>
               </Host> 
          接下来配好index.html页面即可直接www.taobao.com访问


HTTP的协议
          * 协议:遵循一定规范的数据格式。
          * 特点:
               * 基于请求和响应的模式。(先有请求再有响应)
               * 基于tcp的链
               * 默认端口是80
              
          * 使用telnet命令完成http入门
               * 开启telnet命令。
               * telnet localhost 80
               * 会产生乱码,解决问题:ctrl+],回车。
               * telnet命令,不支持删除。
              
          * 服务器发送一次请求    
               GET /aa/1.html HTTP/1.1
               host:localhost
              
          * 服务器做出了响应
               HTTP/1.1 200 OK
               Server: Apache-Coyote/1.1
               ETag: W/"20-1413703905727"
               Last-Modified: Sun, 19 Oct 2014 07:31:4
               Content-Type: text/html
               Content-Length: 20
               Date: Sun, 19 Oct 2014 07:37:51 GMT
              
               <h1>hello world</h1>
              
          * HTPP协议的版本(面试题)
               * HTTP/1.0
                    * 发送一次请求,拿到web资源后,链接会自动断开。
                   
               * HTTP/1.1
                    * 发送一次请求,拿到web资源后,链接不会断开,如果长时间不操作,会自动断开。
                   
                   
                    GET /aa/1.html HTTP/1.0
                    host:localhost    
                    GET /aa/1.html HTTP/1.1
                    host:localhost         
         
          * 请求:
               * 请求行:
                    * 请求方式
                         * POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT、CONNECT
                         * 常用post和get
                         * 区别:....
                             
                    * 请求路径
                         *
                    * 协议版本
                         * HTTP/1.1
               * 请求头
                    Accept: text/html,image/*   
                    Accept-Charset: ISO-8859-1
                    Accept-Encoding: gzip
                    Accept-Language:zh-cn
                    Host: www.itcast.com:80
                    If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
                    Referer: http://www.itcast.com/index.jsp
                    User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
                    Connection: close/Keep-Alive  
                    Date: Tue, 11 Jul 2000 18:23:51 GMT
                   
                    * 重点的头
                         * If-Modified-Since          可以控制缓冲,需要和响应的头一起来使用。
                         * Referer                    记住当前网页的来源。(防止盗链)
                         * User-Agent               判断当前的浏览器类型
                        
               * 空行
               * 请求体:就是post提交时,保存参数列表的。              
              
          * 响应:
               * 响应行
                    * 协议版本
                    * 状态吗
                        
                         200 :请求成功处理,一切OK
                         302 :请求重定向
                         304 :服务器端资源没有改动,通知客户端查找本地缓存
                         404 :客户端访问资源不存在
                         500 :服务器内部出错
                        
                    * 状态码描述
                        
               * 响应头
                    Location: http://www.it315.org/index.jsp
                    Server:apache tomcat
                    Content-Encoding: gzip
                    Content-Length: 80
                    Content-Language: zh-cn
                    Content-Type: text/html; charset=GB2312
                    Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
                    Refresh: 1;url=http://www.it315.org
                    Content-Disposition: attachment; filename=aaa.zip
                    Expires: -1
                    Cache-Control: no-cache 
                    Pragma: no-cache  
                    Connection: close/Keep-Alive  
                    Date: Tue, 11 Jul 2000 18:23:51 GMT
                   
                    * 重点:
                         * Location                    可以与302完成重定向的操作
                         * Content-Type    
                         * Last-Modified               根请求头一起来完成控制缓冲的操作
                         * Refresh                    完成页面的定时刷新
                         * Content-Disposition     做下载功能时,必须使用该头。
                             
                              Expires: -1
                              Cache-Control: no-cache 
                              Pragma: no-cache
                                   * 禁用浏览器的缓冲。
                   
               * 空行
               * 响应体:服务器向客户端响应的所以内容。
上一篇:.NET CORE学习笔记系列(2)——依赖注入[5]: 创建一个简易版的DI框架[下篇]


下一篇:python网络编程之开启进程的方式