Web应用(创建静态应用,创建动态应用,配置外部应用(了解),理解server.xml(了解),映射虚拟主机(了解))

来源:互联网 发布:java找工作好难啊 编辑:程序博客网 时间:2024/05/29 02:52

Web应用(重点)

静态网站:

注意webapps是tomcat下的文件夹下的路径


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

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

动态网站:

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

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

Ø WEB-INF目录;

¨       在WEB-INF目录下创建web.xml文件[c1] 

Ø 创建静态或动态页面

 

1 创建静态应用

l  在webapps下创建一个hello目录;

l  在webapps\hello\下创建index.html;

l  启动tomcat;

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

 

index.html

<html>

  <head>

    <title>hello</title>

  </head>

  <body>

    <h1>Hello World!</h1>

  </body>

</html>

 

2 创建动态应用

l  在webapps下创建hello1目录;

l  在webapps\hello1\下创建WEB-INF目录;

l  在webapps\hello1\WEB-INF\下创建web.xml;

l  在webapps\hello1\下创建index.html。

l  打开浏览器访问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:应用资源。应用下可以有多个资源,例如css、js、html、jsp等,也可以把资源放到文件夹中,例如:hello\html\index.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就可以访问我们的项目。

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

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

l  在本机上可以解析域名为127.0.0.1,这需要修改C:\WINDOWS\system32\drivers\etc\hosts文件,添加对http://www.itcast.cn和127.0.01的绑定关系;

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

 

1)       修改端口号为80


2)       绑定http://www.itcast.cn和127.0.01的绑定关系


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

 

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

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

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

 

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

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


web.xml文件的内容,我们可以去其他项目中借!

0 0
原创粉丝点击