一、引入
接下来讲解可以在Tomcat中进行发布的项目的目录结构是怎么样的?
我们可以先来查看Tomcat自带的结构,然后再来总结一下就行了。
找到 D:\develop\apache-tomcat-10.1.26\webapps
,这里面就通过 examples
来了解。
我们在webapps下新建app目录,这个目录就是我们要发布的我们自己的项目,即部署目录。
由于css、img、js在外面散着也挺糟心的,于是就会在它们外面再创建一个static目录,名字是可以随便起的,但是建议叫做static。
一个标准的可以用于发布的WEB项目标准结构如下
二、app 本应用根目录
1)static
非必要目录,约定俗成的名字,一般在此处放静态资源 ( css js img)
2)WEB-INF
必要目录,必须叫WEB-INF,受保护的资源目录,浏览器通过url不可以直接访问的目录
- classes 必要目录,字节码根路径,我们所写的java文件,经过编译后转成
.class文件
,这个.class文件
就是放到WEB-INF
的classes目录
中的,src下源代码、配置文件,编译后会在该目录下,web项目中如果没有源码,则该目录不会出现 - lib 必要目录,项目依赖的jar编译后会出现在该目录下,web项目要是没有依赖任何jar,则该目录不会出现
- web.xml 必要文件,当前项目的基本配置文件,较新的版本中可以没有该文件,但是学习过程中还是需要该文件
面三个都是固定的,其他目录都是后面项目在开发时单独添加的。
如下图,访问webapps除WEB-INF目录下的任何文件都可以
但如果访问 WEB-INF
下的资源就访问不到了,原因就是因为 WEB-INF
是受保护的,你想通过浏览器的url直接来访问是不允许的。
那为什么不允许直接访问呢?是因为WEB-INF里面放的东西都非常非常重要。
3)index.html
非必要文件,index.html/index.htm/index.jsp为默认的欢迎页
三、url的组成部分和项目中资源的对应关系
浏览器:
-
输入网址:
http://127.0.0.1:8080/app/inex.html
-
http:代表的是请求的协议
-
通过IP地址192.168.100.11定位到网络上的一台计算机
在浏览器中输入的localhost,就是127.0.0.1(本机)
-
通过端口号8080找到计算机上运行的程序,这里就是:通过8080找到Tomcat这款软件
localhost:8080
, 意思是在本地计算机中找到正在运行的8080端口的程序 -
/app
是上下文路径。通过这个上下文路径,找到webapps中的某个项目PS:如果没有设置上下文访问路径,那么访问路径和项目目录名字是一致的,如果设置了,那么就是你设置的那个路径
-
/inex.html
是请求资源位置,即某个项目里面具体的资源了 -
资源:对计算机而言资源就是数据
- web资源:通过网络可以访问到的资源(通常是指存放在服务器上的数据)
localhost:8080/hello
,意思是向本地计算机中的8080端口程序,获取资源位置是/hello的数据- 8080端口程序,在服务器找/hello位置的资源数据,发给浏览器
PS:如果就写到
http://127.0.0.1:8080/app
,它默认就是去找index.html | index.htm | index.jsp
-
如果想要访问ROOT,这个项目部署的目录名和你访问的上下文的路径是不一样的
如果直接输入 http://127.0.0.1:8080/ROOT/index.jsp
是访问不到的
ROOT是一个特殊的项目,访问它的时候是不需要上下文的,在地址栏中访问:http://127.0.0.1:8080。所以没有给出项目目录时,对应的就是ROOT项目。
另外 manager
和 host-manager
也是特殊的,访问的时候是需要输入Tomcat账号密码才能进行访问的。
设置Tomcat访问的账号密码就需要对 conf/tomcat-users.xml
进行配置。
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin"
password="admin"
roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"
/>
</tomcat-users>
保存后,此时就可以使用 账号admin
,密码 admin
去访问了。
这里面就可以看到Tomcat部署了哪些项目,并且还可以看见这个项目是启动状态还是停滞状态、是否在运行中。
并且还可以看见有多少人在访问这个项目,由于我们现在访问的就是 /manager/html
,所以会话就是1。
另外还有一个 host-manager
,这个也是Tomcat自带的一个管理项目