初学JavaWeb需要知道的目录结构与配置
JavaWeb目录结构
Java Resource
- src:存放Java源代码的目录。
- Libraries:存放的是Tomcat及JRE中的jar包。
build:自动编译.java文件的目录
WebContent(WebRoot):存放的是需要部署到服务器的文件
MEAT-INF:是存放工程自身相关的一些信息,元文件信息,通常由开发工具和环境自动生成。
- MANIFEST.MF:配置清单文件
WEB-INF:这个目录下的文件,是不能被客户端直接访问的。
- classes:存放Java字节码文件的目录。
- lib:用于存放该工程用到的库。
- web.xml:web工程的配置文件,完成用户请求的逻辑名称到真正的servlet类的映射。
- 凡是客户端能访问的资源(*html或*.jpg)必须跟WEB-INF在同一目录,即放在Web根目录下的资源,从客户端是可以通过URL地址直接访问的。
Tomcat的目录结构
- bin:存放的是可执行文件
- conf:存放的是Tomcat服务器的各种全局配置文件,其中包括server.xml(Tomcat的主要配置文件)、tomcat-users.xml和web.xml等配置文件。
- lib:存放tomcat服务器所需的各种jar文件。
- logs:存放Tomcat的日志文件目录,记录了Tomcat启动和关闭的信息,以及异常信息等。
- temp:存放Tomcat的临时文件,这个目录下的东西可以停止后删除。
- webapps:存放web项目的目录,其中每个文件夹都是一个项目。
- work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的。删除后再次运行会重新生成。
- LICENSE:许可证。
- NOTICE:说明文件。
Tomcat中conf目录下的server.xml文件解释
Server元素:代表了Catalina Servlet容器,它是Tomcat实例的顶层元素,可包含一个或多个元素。
<Server port="8005" shutdown="SHUTDOWN">
port:指定Tomcat服务器监听shutdown命令的端口,终止Tomcat服务运行时,必须在Tomcat服务所在的机器上发出Shutdown命令,该属性是必须设定的。
shutdown:指定Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串。该属性是必须设置的。
Service元素:包含一个元素,以及一个或多个元素,这些元素共享同一个元素。
<Service name="Catalina">
- name:定义Service的名称
Contentor元素:代表与客户程序实际交互的组件,它负责接收客户的请求,以及向客户返回响应结果。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
- port:端口号
- protocol:协议
- connectionTimeout:超时时间,如果设置为-1,表示不限制连接时间
- redirectPort:指定转发端口(如果当前端口只支持non-SSL请求,在需要安全通信的场合,把客户端请求转发到基于SSL的redirectPort的端口)
其他属性:
- enableLookups:如果设置为true,表示支持域名解析,默认为true。
- className:指定实现org.apache.catalina.Connector接口的类
Engine元素:每个元素只能包含一个元素,元素处理在同一个中所有元素接收到的客户端请求。
<Engine name="Catalina" defaultHost="localhost">
- name:Engine的名字
- defaultHost:默认主机名
在元素下还有这些子标签:
Host元素:一个元素可以包含多个元素,每个元素定义了一个虚拟主机,它可以包含一个或多个Web应用。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
name:虚拟主机名称
appBase:指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于的相对目录,如果此项没有设定,默认值为/webapps。
- unpackWARs:如果此项设为true,表示将把Web应用的WAR文件先展开为开放目录结构后再运行。如果设为false。将直接运行WAR文件。
- autoDeploy:如果此项设为true,表示当Tomcat服务器处于运行状态时,能够监测appBase下文件,如果有新的Web应用加入进来。会自动发布这个Web应用。
- alias:指定虚拟主机别名,可以指定多个别名。
其他属性:
deployOnStartUp:如果此项设置true,表示Tomcat服务器启动时会自动发appBase目录下所有的Web应用,默认为true。
在Host元素中可以包含如下子元素:
Context元素:每个元素代表了运行在虚拟主机上的单个Web应用。一个元素中可以包含多个元素。
<Context path="/sample" docBase="sample" debug="0" reloadable="true">
path:指定访问该Web应用的URL入口
docBase:指定Web应用的文件路径,可以是绝对路径,也可以给定相对于的appBase属性的相对路径。
- reloadable:如果设置为true,Tomcat服务器在运行状态下会监视在WEB-INF/class和WEB-INF/lib目录下CLASS文件的改动。如果检测到class文件被更新,服务器会自动加载Web应用。
- cookie:指定是否通过Cookie来支持Session,默认为true。
- useNaming:指定是否支持JNDI,默认true
Tomcat部署Web应用
将JavaWeb项目中的WebContent(WebRoot)下的文件拷贝至Tomcat/webapps目录下对应的Javaweb项目(如果没有,就新建一个文件夹,命名项目名)中
将JavaWeb项目中的WebContent(WebRoot)打成war包,放入Tomcat/webapps目录下
打成war包的方法: 1.命令行: 在web项目的WebContent目录下输入jar cvf 项目名.war *.* .命令。 2.eclipse: 右击项目,选择Export,选择Web,选择WAR file
通过IDE工具绑定Tomcat来进行部署。示例
配置虚拟目录
在Tomcat中的server.xml中的Host的子标签下的Context标签中,更改docBase属性,指定项目路径。
原:tomcat的webapps中
<Context
docBase="D:\dsoftinstall\Tomcat\apache-tomcat-9.0.0.M15\webapps\TomcatDemo"
path="/TomcatDemo"
reloadable="true"
source="org.eclipse.jst.jee.server:TomcatDemo"/>
改:将项目放入F盘
<Context
docBase="F:\TomcatDemo"
path="/TomcatDemo"
reloadable="true"
source="org.eclipse.jst.jee.server:TomcatDemo"/>
docBase可以是绝对路径,也可以是相对路径,如果是相对路径,那么是相对标签中的appBase中的目录。
虚拟目录可以指定多个,也就是指定多个标签。
配置默认端口、默认应用和默认主页
配置默认端口
Tomcat默认端口是8080,当然,我们可以自己修改端口号,修改完之后,需要重启Tomcat。如:
原:
<Connector
connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"/>
改:
<Connector
connectionTimeout="20000"
port="80"
protocol="HTTP/1.1"
redirectPort="8443"/>
- 配置默认应用
在Tomcat中修改server.xml文件中的标签中的path,将path的值设置”“,就不需要写项目名称了。如:
原:
<Context
docBase="D:\dsoftinstall\Tomcat\apache-tomcat-9.0.0.M15\wtpwebapps\TomcatDemo"
path="\TomcatDemo"
reloadable="true"
source="org.eclipse.jst.jee.server:TomcatDemo"/>
改:
<Context
docBase="D:\dsoftinstall\Tomcat\apache-tomcat-9.0.0.M15\wtpwebapps\TomcatDemo"
path=""
reloadable="true"
source="org.eclipse.jst.jee.server:TomcatDemo"/>
这样原本需要输入localhost:8080/TomcatDemo/1.html,现在只需要localhost:8080/1.html就可以。
- 配置默认主页
在Tomcat中修改项目中的web.xml文件,如:
原:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
改:(将welcome-list标签的文件文称改成你的默认主页)
<welcome-file-list>
<welcome-file>1.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
之前访问1.html,需要localhost:8080/TomcatDemo/1.html,现在只需要localhost:8080/TomcatDemo,就可以。
一般默认应用与默认主页同时使用,如果默认应用和默认主页都设置了,我们之前访问的localhost:8080/TomcatDemo/1.html网址就可以简写localhost:8080。