第一个Java Web应用
- Tomcat启动时乱码问题
- 情景:当使用Tomcat的 startup.bat启动Tomcat时,启动的控制台对于中文信息出现乱码。
- 原因:乱码出现的原因是因为字符的编码方式和解码方式不一致导致的。在windows电脑中,系统默认的编码方式为GBK,而Tomcat默认的控制台的编码方式UTF-8,我们只要将其更换为一致即可。
- 解决:从Tomcat安装目录中打开 conf/logging.properties 文件,更改 java.util.logging.ConsoleHandler.encoding = UTF-8 该属性,将编码方式值替换为我们指定的编码方式即可。
//更改前
java.util.logging.ConsoleHandler.encoding = UTF-8
//更改后
java.util.logging.ConsoleHandler.encoding = GBK
- 作用:Tomcat启动时控制台显示的信息是Tomcat启动时一些相关信息,如启动所花时间、端口号等,正确的文字信息有便于我们从中获取Tomcat启动时的一些信息。
2.更改Tomcat服务器默认端口号
HTTP协议规定Web服务器使用的默认FTP端口为80,而Tomcat服务器默认情况下采用的是FTP端口为8080。这就导致了在Tomcat服务器启动后,在浏览器上访问服务器中的资源输入的URL路径为http://localhost:8080/,而让Tomcat改为使用80端口来监听HTTP请求后,访问Tomcat中的资源的URL只需http://localhost/即可。
- 修改配置:从Tomcat安装目录中打开conf/server.xml配置文件,将其中元素的port属性值改为"80"。
<!--修改前-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!--修改后-->
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
3.Java Web应用的目录结构
- 注意:浏览器端不可以直接请求访问WEB-INF目录下的文件。对于那些不希望外界访问而只允许内部访问的文件可放在此目录下。
4.配置Tomcat的元素
-
概念:Context代表一个Web应用,它运行在某个指定的虚拟主机(Host)上;每个Web应用都是一个WAR文件,或是一个包含WAR解压后的文件的目录。Connector组件接收到http请求后,通过将请求URI的最长可能前缀与每个Context的path进行匹配,然后选择相应的Web应用来处理这个http请求。之后,Context会根据web application deployment descriptor文件中定义的servlet映射,会选择一个正确的Servlet来处理请求。Servlet映射必须定义在该Web应用目录层次结构中的/WEB-INF/web.xml中。
-
Tomcat加载一个Web应用时,会按照一下顺序查找Web应用的元素
(1)到Tomcat安装目录中conf/context.xml文件中查找元素。这个文件的元素的信息适用于所有Web应用。
(2)到Tomcat安装目录中conf/[enginename]/[hostname]/context.xml.default文件中查找元素。[enginename]表示的name属性,[hostname]表示的name属性。在context.xml.default文件中的元素的信息适用于当前虚拟主机中的所有Web应用。
(3)到Tomcat安装目录中conf/[enginename]/[hostname]/[contextpath].xml文件中查找元素。[contextpath]表示单个Web应用的URL入口。在[contextpath].xml文件中的元素的信息只适用于单个Web应用。
(4)到Web应用的MATA-INF/context.xml文件中查找元素。这个文件中的元素的信息适用于当前Web应用。 -
配置元素的三种方法
(1)将应用文件夹或war文件直接copy到tomcat的webapps目录下,这样tomcat启动的时候会将webapps目录下的文件夹或war文件的内容当成应用部署。这种方式最简单且无须书写任何配置文件。
(2)在tomcat的server.xml配置文件中的Host节点下增加Context子节点,如:
<Context path="/helloapp" docBase="D:\private\tomcat\helloapp.war" />
其中path属性表明访问helloapp应用的URL入口为"/helloapp",docBase属性为helloapp应用的绝对路径
(3)在tomcat的conf/[Enginename]/[Hostname]目录下新建xml文件,文件名为contextpath,内容如下:
<Context path="/helloapp"
docBase="D:\private\tomcat\helloapp.war"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
其中path属性表明访问helloapp应用的URL入口为"/helloapp",docBase属性为helloapp应用的绝对路径
5.部署Web应用
- 将Web应用直接复制到Tomcat安装目录中webapps文件中,Tomcat会默认加载此虚拟主机中的Web应用。其实该目录文件代表Tomcat默认虚拟主机localhost主机,该文件中Web应用即是部署在localhost中的Web应用。
- 对于Web应用不在Tomcat中,则需要配置元素