在tomcat的server.xml中配置上下文:
<Context path="/test" docBase="E:/中文测试/WebRoot" debug="0" reloadable="true">
</Context>
配置好后tomcat报如下错误,无法启动:
严重: Parse Fatal Error at line 130 column 56: Invalid byte 2 of 2-byte UTF-8 sequence.
org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.
原因,xml文件编码问题,在解析时因为编码不正确抛异常。
解决方法:
将server.xml中的<?xml version='1.0' encoding='utf-8'?>改为<?xml version='1.0' encoding='gbk'?>
关于虚拟目录配置中的属性
<Context path="/test" docBase="E:/中文测试/WebRoot" debug="0" reloadable="true">
</Context>
其中的path中是不能包含中文的,因为java不支持中文package
常用属性:
className
指定实现了org.apache.catalina.Context接口的类名。如果没有指定类名,将使用标准的实现。标准的实现类是org.apache. catalina.core.StandardContext
cookies
指示是否将Cookie应用于Session,默认值是true
crossContext
如果设置为true,在应用程序内部调用ServletContext.getContext()将成功返回运行在同一个虚拟主机中的其他Web应用程序的请求调度器。在注重安全的环境中,将该属性设为false,那么getContext()将总是返回null。默认值是false
docBase
指定Web应用程序的文档基目录或者WAR文件的路径名。可以指定目录的或WAR文件的绝对路径名,也可以指定相对于Host元素的appBase目录的路径名。该属性是必需的
path
指定Web应用程序的上下文路径。在一个特定的虚拟主机中,所有的上下文路径都必须是唯一的。如果指定一个上下文路径为空字符串(""),则定义了这个虚拟主机的默认Web应用程序,负责处理所有的没有分配给其他Web应用程序的请求
reloadable
如果设置为ture,Tomcat服务器在运行时,会监视WEB-INF/classes和WEB-INF/lib目录下类的改变,如果发现有类被更新,Tomcat服务器将自动重新加载该Web应用程序。这个特性在应用程序的开发阶段非常有用,但是它需要额外的运行时开销,所以在产品发布时不建议使用。该属性的默认值是false
unpackWAR
如果为true,Tomcat在运行Web应用程序前将展开所有压缩的Web应用程序。默认值是true