tomcat是一个轻量级的web服务器,由于免费开源,在互联网web服务器中占有较大的比例,本文将介绍tomcat关于web方面的一些配置
一、tomcat项目的结构
- resource:存放资源文件目录(不是静态资源)
- src:java相关源码目录
- WEB-INF:web项目开发相关的目录(包括编译生成的.class文件,项目配置文件等,浏览器是访问不到的)
WEB-INF的目录结构大致如下:- classes:存放编译后的.class文件
- jsp:存放jsp相关页面
- lib:存放类库jar文件
- web.xml项目配置文件
二、默认页面设置
即当不指定默认的文件时,默认显示的页面,类似于nginx中的index的配置,如访问:http://localhost:8080/javaweb/
,它会默认显示index.html这个页面。
如果需要指定默认页面,可以通过修改web.xml的内容实现,具体如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<welcome-file-list>
<welcome-file>hello.html</welcome-file>
<welcome-file>index.xhtml</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
注:整个welcome-file-list段为设置部分,上述代码中共有4个,它会依次匹配,如果上面的不存在,再匹配下一个,如这里,把原来默认的index.html改成hello.html
三、配置端口
1、修改默认端口
tomcat服务器提供服务的端口(访问端口)默认为8080,如果需要修改这个端口,可以通过修改tomcat配置文件server.xml中的Connector来实现
原配置如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改配置:
<Connector port="8090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
现在可以通过http://localhost:8090
来访问了
2、使用多个端口
即不同的目录(不同的项目)对应不同的端口
这与修改默认端口略有不同,和下面要讲的虚拟主机配置很类似
server.xml默认只有一个service,一个service可以认为是一个虚拟主机,新建一个新的service段(有几个端口就新建几个service段),内容如下:
<Service name="test1">
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="test1" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/" docBase="/usr/local/tomcat/webapps/test1" reloadable="true" />
</Host>
</Engine>
</Service>
注意的主要有三个地方:
- service的name属性,即为服务的名称,可以认为是一个域名(也可以认为是一域名分组,如同个根域名)
- 第一个Connector的port为新建的端口
- Host的name为域名,这里默认为localhost
- Value中的ClassName为org.apache.catalina.valves.AccessLogValue这一段是指定访问日志的设置信息
- Context这一段指定端口对应的目录,path属性访问的URL,docBase为访问的实际目录(所以这里也可以自定义非默认的网站根目录)
四、虚拟主机配置(多域名配置)
一般来说虚拟主机就是同一台服务器运行多个项目(多个域名)
(1)修改端口号为80
这里需要注意的是:修改为80后,需要通过root来重启,否则将无法访问
(2)将Host的名称修改为域名,指定每个域名的根目录地址
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="www.test1.com" appBase="/usr/local/tomcat/webapps/test1"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="www.test2.com" appBase="/usr/local/tomcat/webapps/test2"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
注:只修改了以下几个部分:
- Connector的port,指定所有的项目开放的端口号为80
- Host的name,即为域名,这里有localhost,
www.test1.com
和www.test2.com
- appBase为域名所对应的根目录的地址
五、idea编辑器中配置tomcat
1、新建项目指定jdk和tomcat安装位置
File->New Project->Java Enterprise
分别指定jdk的安装目录和tomcat的安装目录
2、部署设置
Run->Edit Configurations,选择当前项目的存放路径
3、使用Run->Run运行项目,它会自动打开浏览器会显示
运行项目有以下几种方式:
- 使用菜单Run->Run
- 使用快捷键Alt+Shift+F10(也可以自定义热键)
- 使用头部的快捷按钮