Servlet第一篇【Tomcat的使用】
webapps目录
用来管理web应用
案例:1(访问html页面)
在webapps目录下新建hello目录
在hello目录下创建hello01.html
运行Tomcat
localhost:8080/hello/hello01.html(默认端口8080)
案例:2(自定义主页)
在webapps目录下新建hello目录
在hello目录下创建WEB-INF目录
在WEB-INF目录下新建web.xml(可以复制ROOT/WEB-INF目录下的web.xml)
<welcome-file-list>
<welcome-file>hello02.html</welcomefile>
</welcome-file-list>
在hello目录下分别创建hello01.html,hello02.html
运行Tomcat
localhost:8080/hello
虚拟目录
为什么要使用虚拟目录?
答:防止磁盘不够用;为了更好的管理
什么叫虚拟目录?
答:把web应用所在目录交给web服务器管理,这个过程称之为虚拟目录的映射
案例:1(访问其它磁盘的web应用,方式一)
D盘下新建test目录(这是一个web应用)
test目录下新建test.html
在config下的server.xml文件里添加
<!--在<Host></Host>标签内添加--->
<Context path="/test" docBase="D:\test" reloadable="true" crossContext="true" debug="0"/>
运行Tomcat
localhost:8080/test/test.html
-
path:指定访问该 Web 应用的 URL 入口。
-
docBase:指定 Web 应用的文件路径,可以给定绝对路径,也可以给定相对于
的appBase 属性的相对路径,如果 Web 应用采用开放目录结构,则指定 Web 应用的根目录,如果 Web 应用是个 war 文件,则指定 war 文件的路径。(指定项目所在地址) -
reloadable:如果这个属性设为 true,tomcat 服务器在运行状态下会监视在WEB-INF/classes 和 WEB-INF/lib 目录下 class 文件的改动,如果监测到有 class 文件被更新的,服务器会自动重新加载 Web 应用。
-
crossContext:如果想在应用内调用 ServletContext.getContext()来返回在该虚拟主机上运行的其他 web application 的 request dispatcher,设为 true。在安全性很重要的环境中设为 false,使得 getContext()总是返回 null。缺省值为 false。
-
debug:与这个 Engine 关联的 Logger 记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为 0。
这个方式一般在设置后都需要重启服务器才有效(有时候即使设置了reloadable=“true” 也需要重新启动)
案例:2(访问其它磁盘的web应用,方式二,推荐使用,不需要重启服务器)
在D:\test目录下创建hello.html
在conf\Catalina\localhost新建a.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--注意此文件名将作为Context中path的属性值,不管文件里的path属性值如何设置也是无效的-->
<Context docBase="D:\test"/>
运行Tomcat
localhost:8080/a/hello.html
如果需要分层虚拟站点,可以将文件名改成a#b#c,访问分层虚拟站点时用localhost:8080/a/b/c
临时域名
在C:\Windows\System32\drivers\etc下hosts配置临时域名
127.0.0.1 longhuanzhu
longhuanzhu:8080/a/hello.html
虚拟主机
什么是虚拟主机?
答:多个不同域名的网站共存在一个tomcat服务器中
在D:\a(该目录即为虚拟主机目录)下新建b\hello.html(hello.html不能直接放在虚拟主机目录下)
127.0.0.1 www.woaini.com
在config目录下的server.xml下配置
<Host name="www.woaini.com" appBase="D:\a" unpackWARs="true" autoDeploy="true">
</Host>
www.woaini.com:8080/b/hello.html
控制台日志乱码问题
java.util.logging.ConsoleHandler.encoding = UTF-8
修改为
java.util.logging.ConsoleHandler.encoding = GBK
get/post乱码问题


浙公网安备 33010602011771号