zoukankan      html  css  js  c++  java
  • 六、web应用与Tomcat

    软件系统体系结构

    常见软件系统体系结构B/SC/S

    1.1 C/S

    l C/S结构即客户端/服务器(Client/Server),例如QQ

    需要编写服务器端程序,以及客户端程序,例如我们安装的就是QQ的客户端程序;

    l 缺点:软件更新时需要同时更新客户端和服务器端两端,比较麻烦;

    l 优点:安全性比较好。

    1.2 B/S*****

    l B/S结构即浏览器/服务器(Browser/Server);

    l 优点:只需要编写服务器端程序;

    l 缺点:安全性较差。

    2 WEB资源

    2.1 Web资源介绍

    l html:静态资源

    l JSP/Servlet:动态资源。

    当然,除了JavaWeb程序,还有其他Web程序,例如:ASPPHP等。

    2.2 静态资源和静态资源区别

    2.3 访问Web资源

    打开浏览器,输入URL

    协议名://域名:端口/路径,例如:http://www.itcast.cn:80/index.html

    3 Web服务器

    Web服务器的作用是接收客户端的请求,给客户端作出响应。

    对于JavaWeb程序而已,还需要有JSP/Servlet容器,JSP/Servlet容器的基本功能是把动态资源转换成静态资源,当然JSP/Servlet容器不只这些功能,我们会在后面一点一点学习。

    我们需要使用的是Web服务器和JSP/Servlet容器,通常这两者会集于一身。下面是对JavaWeb服务器:

    l TomcatApache):当前应用最广的JavaWeb服务器;

    l JBossRedhat红帽):支持JavaEE,应用比较广;EJB容器

    l GlassFishOrcale):Oracle开发JavaWeb服务器,应用不是很广;

    l ResinCaucho):支持JavaEE,应用越来越广;

    l WeblogicOrcale):要钱的!支持JavaEE,适合大型项目;

    l WebsphereIBM):要钱的!支持JavaEE,适合大型项目;

    Tomcat(有重点)

    1 Tomcat概述

    Tomcat服务器由Apache提供,开源免费。由于Sun和其他公司参与到了Tomcat的开发中,所以最新的JSP/Servlet规范总是能在Tomcat中体现出来。当前最新版本是Tomcat8,我们课程中使用Tomcat7Tomcat7支持Servlet3.0,而Tomcat6只支持Servlet2.5

    2 安装、启动、配置Tomcat

    下载Tomcat可以到http://tomcat.apache.org下载。

    Tomcat分为安装版和解压版:

    安装版:一台电脑上只能安装一个Tomcat

    l 解压版:无需安装,解压即可用,解压多少份都可以,所以我们选择解压版。

    2.1 Tomcat目录结构

    安装版Tomcat的安装过程请参考day03_res/Tomcat安装.doc文件。

    把解压版Tomcat解压到一个没有中文,没有空格的路径中即可,建议路径不要太深,因为我们需要经常进入Tomcat安装目录。例如:F:apache-tomcat-7.0.42

    2.2 启动和关闭Tomcat

    在启动Tomcat之前,我们必须要配置环境变量:

    l JAVA_HOME:必须先配置JAVA_HOME,因为Tomcat启动需要使用JDK

    l CATALANA_HOME:如果是安装版,那么还需要配置这个变量,这个变量用来指定Tomcat的安装路径,例如:F:apache-tomcat-7.0.42。

    启动:进入%CATALANA_HOME%in目录,找到startup.bat,双击即可;

    关闭:进入%CATALANA_HOME%in目录,找到shutdown.bat,双击即可;

    startup.bat会调用catalina.bat,而catalina.bat会调用setclasspath.batsetclasspath.bat会使用JAVA_HOME环境变量,所以我们必须在启动Tomcat之前把JAVA_HOME配置正确。

    启动问题:

    点击startup.bat后窗口一闪即消失:检查JAVA_HOME环境变量配置是否正确;

    2.3 进入Tomcat主页

      访问:http://localhost:8080

    2.4 配置端口号

    打开%CATALANA_HOME%confserver.xml文件:

    http默认端口号为80,也就是说在URL中不给出端口号时就表示使用80端口。当然你也可以修改为其它端口号。

    当把端口号修改为80后,在浏览器中只需要输入:http://localhost就可以访问Tomcat主页了。

    2.5 Tomcat的目录结构

    l bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe、tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口启动Tomcat;如果是解压版,那么会有startup.batshutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat

    l conf:这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:

    • server.xml:配置整个服务器信息。例如修改端口号,添加虚拟主机等;下面会详细介绍这个文件;
    • tomcatusers.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;
    • web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!
    • context.xml:对所有应用的统一配置,通常我们不会去配置它。

    l libTomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar所有项目都可以共享之,但这样你的应用放到其他Tomcat下时就不能再共享这个目录下的Jar包了,所以建议只把Tomcat需要的Jar包放到这个目录下;

    l logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。

    l temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!

    l webapps:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的。项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。http://localhost:8080/examples,进入示例项目。其中examples就是项目名,即文件夹的名字。

    l work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的javaclass文件都会存放到这个目录下。

    l LICENSE:许可证。

    l NOTICE:说明文件。

    Web应用(重点)

    静态网站:

    webapps目录下创建一个目录(命名必须不包含中文和空格),这个目录称之为项目目录;

    在项目目录下创建一个html文件;

    动态网站:

    webpass目录下创建一个项目目录;

    l 在项目目录下创建如下内容:

    • WEB-INF目录;

    ¨ WEB-INF目录下创建web.xml文件

    • 创建静态或动态页面
    1 创建静态应用

    webapps下创建一个hello目录;

    webappshello下创建index.html

    启动tomcat

    打开浏览器访问http://localhost:8080/hello/index.html

    index.html

    <html>

      <head>

        <title>hello</title>

      </head>

      <body>

        <h1>Hello World!</h1>

      </body>

    </html>

    2 创建动态应用

    webapps下创建hello1目录;

    webappshello1下创建WEB-INF目录;

    webappshello1WEB-INF下创建web.xml

    webappshello1下创建index.html

    打开浏览器访问http://localhost:8080/hello/index.html

    web.xml

    <?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">

    </web-app>

    完整的Web应用还需要在WEB-INF目录下创建:

    l classes

    l lib目录;

    webapps

    |- hello

    |-index.html

    |-WEB-INF

    |-web.xml

    |-classes

    |-lib

    l hello:应用目录,hello就是应用的名称;

    l index.html:应用资源。应用下可以有多个资源,例如cssjshtmljsp等,也可以把资源放到文件夹中,例如:hellohtmlindex.html,这时访问URL为:http://localhost:8080/hello/html/index.html

    l WEB-INF:这个目录名称必须是大写,这个目录下的东西是无法通过浏览器直接访问的,也就是说放到这里的东西是安全的;

    l web.xml:应用程序的部署描述符文件,可以在该文件中对应用进行配置,例如配置应用的首页:

      <welcome-file-list>

        <welcome-file>index.html</welcome-file>

      </welcome-file-list>

    l classes:存放class文件的目录;

    l lib:存放jar包的目录;

    3 配置外部应用(了解)

      原来我们的项目放到webapps下,现在我放到外面,也希望tomcat可以找到它!

    也可以把应用放到Tomcat之外,这就是外部应用了。例如我们把上面写的hello应用从webapps目录中剪切到C盘下,即C:/hello。现在hello这个Web应用已经不在Tomcat中了,这时我们需要在tomcat中配置外部应用的位置,配置的方式一共有两种:

    l conf/server.xml:打开server.xml文件,找到<Host>元素,在其中添加<Context>元素,代码如下:

    server.xml

    1) path:指定当前应用的名称;

    2) docBase:指定应用的物理位置;

    3) 浏览器访问路径:http://localhost:8080/itcast_hello/index.html

    l conf/catalana/localhost:在该目录下创建itcast_hello.xml文件,在该文件中编写<Context>元素,代码如下:

    1) 文件名:指定当前应用的名称;

    2) docBase:指定应用的物理位置;

    3) 浏览器访问路径:http://localhost:8080/itcast_hello/index.html

    4 理解server.xml(了解)

    <Server>

      <Servier>

        <Connector>

        <Engine>

          <Host>

            <Context>

    l <Server>:根元素,表示整个服务器的配置信息;

    l <Service><Server>的子元素,在<Server>中只能有一个<Service>元素,它表示服务;

    l <Connector><Service>的子元素,在<Service>中可以有N<Connector>元素,它表示连接。

    l <Engine><Service>的子元素,在<Service>中只能有一<Engine>元素,该元素表示引擎,它是<Service>组件的核心。

    l <Host><Engine>的子元素,在<Engine>中可以有N<Host>元素,每个<Host>元素表示一个虚拟主机。所谓虚拟主机就像是真的主机一样,每个主机都有自己的主机名和项目目录。例如<Host name=”localhost” appBase=”webapps”>表示主机名为localhost,这个主机的项目存放在webapps目录中。访问这个项目下的主机时,需要使用localhost主机名,项目都存放在webapps目录下。

    l <Context><Host>元素的子元素,在<Host>中可以有N<Context>元素,每个<Context>元素表示一个应用。如果应用在<Host>appBase指定的目录下,那么可以不配置<Context>元素,如果是外部应用,那么就必须配置<Context>。如果要为应用指定资源,也需要配置<Context>元素。

    我们可以把<Server>看作是一个大酒店:

    l <Service>:酒店的服务部门;

    l <Connector>:服务员;

    l <Engine>:后厨;

    l <Host>:后厨中的一个区,例如川菜区是一个<Host>、粤菜区是一个<Host>

    l <Context>:后厨的一个厨师。

    用户发出一个请求:http://localhost:8080/hello/index.jsp。发现是http/1.1协议,而且还是8080端口,所以就交给了处理这一请求的“服务员(处理HTTP请求的<Connector>)”,“服务员”再把请求交给了“后厨(<Engine>)”,因为请求是要一盘水煮鱼,所以由“川菜区(<Host>)”负责,因为“大老王师傅<Context>”做水煮鱼最地道,所以由它完成。

    l <Connector>:关心请求中的http、和8080

    l < Host>:关心localhost

    l <Context>:关心hello

    5 映射虚拟主机(了解)

    我们的目标是,在浏览器中输出:http://www.itcast.cn就可以访问我们的项目。

    完成这一目标,我们需要做三件事:

    修改端口号为80,这一点应该没有问题吧;

    在本机上可以解析域名为127.0.0.1,这需要修改C:WINDOWSsystem32driversetchosts文件,添加对http://www.itcast.cn127.0.01的绑定关系;

    server.xml文件中添加一个<Host>(主机)。

    1) 修改端口号为80

    2) 绑定http://www.itcast.cn127.0.01的绑定关系

    3) server.xml文件中添加一个<Host>

    l name=”www.itcast.cn”:指定虚拟主机名为www.itcast.cn

    l appBase=”F:/itcastapps”:指定当前虚拟主机的应用程序存放目录为F:/itcastapps

    itcastapps目录下创建名为ROOT的应用,因为一个主机只可以有一个名为ROOT的应用,名为ROOT的应用在浏览器中访问是可以不给出应用名称。

     

    现在访问:http://www.itcast.cn看看是什么页面!

    请注意,只有本机可以通过http://www.itcast.cn来访问,而其他电脑不可以!

    6 MyEclipse创建JavaWeb应用

    6.1 配置Tomcat

    使用MyEclipse配置服务器后,就可以使用MyEclipse来启动和停止服务器了。当然,你需要先安装好服务器(Tomcat),才能配置。

    MyEclipse自带了一个Tomcat,强烈建议不要使用它。所以,我们需要先把MyEclipse自带的Tomcat关闭,然后再来配置我们自己的Tomcat

    关闭MyEclipse自带Tomcat

    在工具栏中找到,点击下箭头,点击Configure Server Connector

    后续查看Javaweb day08

    动态资源:需要转换成静态资源后再响应给客户端,例如:jsp、servlet,其他语言的动态资源有:asp、php
    静态资源:无需转发即可直接响应给客户端,例如:html、css、javascript

    ------------------------

    Tomcat:
    1. 开源免费的web服务器
    2. jsp/servlet容器,支持Servlet规范
    3. Tomcat默认端口为8080,可以在server.xml文件中修改端口
    4. Tomcat启动前必须配置JAVA_HOME环境变量
    5. Tomcat不支持JavaEE规范

    ------------------------

    Tomcat主要目录结构:
    bin:二进制可执行文件,包含启动和关闭tomcat文件;
    conf:配置文件,其中包含了server.xml、context.xml、web.xml等;
    webapps:存放应用程序的目录

    ------------------------

    JavaWeb应用程序的标准目录结构

    应用目录/WEB-INF
    应用目录/WEB-INF/web.xml
    应用目录/WEB-INF/classes
    应用目录/WEB-INF/lib

    ------------------------

    创建JavaWeb应用程序流程:

    1. 创建web项目目录
    2. 设计web项目目录结构
    3. 编写web项目代码
    4. 部署web项目到Tomcat的webapps目录下
    5. 运行web项目

    ------------------------

    访问web项目资源:
    例如:项目名为hello,有index.html文件在hello目录下
    访问路径为:http://localhost:8080/hello/index.html

    ------------------------

    发布项目的三种方式:
    1. 把项目放到webapps下
    2. 在server.xml中配置项目路径
    3. 在conf/caalina/localhost/下创建xml,然后配置项目路径

    ------------------------

    http协议的格式

    1. 首行
    2. 头
    3. 空行
    4. 体

    ------------------------

    http请求头:
    * Referer:请求来自哪里,如果是在http://www.baidu.com上点击链接发出的请求,那么Referer的值为http://www.baidu.com。如果是直接在浏览器地址栏中直接输入的地址发出的请求,那么Referer为空。
      用途:
        * 统计来源:例如通过百度访问本网站的次数
        * 防盗链:例如防止非点击本站链接来直接访问本站资源的行为

    ------------------------

    http响应头:
    三种禁用浏览器缓存的响应头
    * Expires: -1
    * Cache-Control: no-cache
    * Pragma: no-cache

    ------------------------

    状态码:
    200 --> 成功
    302 --> 请求重定向
    304 --> 请求资源没有改变
    404 --> 请求的资源不存在,属性客户端错误。
    500 --> 服务器内部错误


    ------------------------

    GET请求:
    1. 请求数据长度不能超过1K
    2. 请求参数会在浏览器地址栏中显示出来
    3. GET请求没有请求体(请求正文),参数是追加在url后面

    POST请求:
    1. 请求数据没有上限
    2. 请求参数不会在浏览器地址栏中显示
    3. 有请求体(请求正文)
    4. 请求参数默认使用URL编码


     

  • 相关阅读:
    HDU 5585 Numbers
    HDU 3308 LCIS
    POJ 2991 Crane
    POJ 1436 Horizontally Visible Segments
    POJ 3667 Hotel
    HaiHongOJ 1003 God Wang
    【SDOI 2008】 递归数列
    5月19日省中提高组题解
    【HDU 1588】 Gauss Fibonacci
    【POJ 3233】Matrix Power Series
  • 原文地址:https://www.cnblogs.com/highpointengineer/p/10564928.html
Copyright © 2011-2022 走看看