【Tomcat】加载目录改为非webapps的其他项目,及server.xml文件的几个属性详解

一、修改Server.xml文件

  在conf下的server.xml文件里找到Host标签,在里面添加如下代码:

 
  1.   reloadable ="true" debug="0" privileged="true">

path:是访问时的根地址,表示访问的路径,可以自定义,如上述例子中,访问该应用程序地址如下:http://localhost:8080/jfinal_demo;

  docbase:表示应用程序的路径,docBase可以使用绝对路径,也可以使用相对路径,相对路径相对于webapps ;

  reloadable:表示可以在运行时在classes与lib文件夹下自动加载类包。这个属性在开发阶段通常都设为true,方便开发;在发布阶段应该设置为false,提高应用程序的访问速度 ;

  其他属性参见相关文档。

二、 在conf\Catalina\localhost 目录下添加xml配置文件

  新建名为jfinal_demo.xml文件,文件内容配置如下:

 
  1. debug="0" privileged="true">

Catalina\localhost目录tomcat下载下来默认是没有的,首次启动会自动创建,也可以手动创建;

      配置中可以去掉path属性,因为访问项目时的根路径只取决于XML文件的名称,如上述例子中,访问该应用程序地址如下:http://localhost:8080/jfinal_demo ;

      推荐使用第三种方式,因为不需要修改tomcat默认配置,对Tomcat的侵入性最小,并且如果想取消部署,直接删除xml配置文件即可。

 

三、tomcat配置中的 autodeploy 和reloadable的区别是什么?

  1.替换WEB-INF/lib目录中的jar文件或WEB-INF/classes目录中的class文件时,reloadable="true"会让修改生效(但代价不小),该选项适合调试。

  2.在webapps目录中增加新的目录、war文件、修改WEB-INF/web.xmlautoDeploy="true"会新建或重新部署应用,该选项方便部署。

四、怎么去除应用名访问,以及server.xml文件中Context节点的path属性详解

  详解path之前讨论一下绝对路径:

  绝对路径在服务端和浏览器端区别:

  1) 服务端(jsp中java代码,servlet,jsp标签中的路径:因为jsp标签是在服务端解析的):绝对路径的根地址(及 / 开头代表的)是localhost:8080/webApp(应用部署名),转发是服务器端,所以绝对路径不用写应用名,绝对路径为:/ (开头) + 具体的路径;

  2) 浏览器端(jsp页面:引入css,js,图片等等,js中的绝对路径(例如ajax中的url也属于浏览器端)):绝对路径的根地址(及 / 开头代表的)是localhost:8080没有到应用名,所以浏览器端写绝对路径需要:/(开头)+应用名 + / +具体的路径,如果使用request.getContextPath()获得的应用名为:/+应用名,第一个斜杠就不用写了,从第二个 / 开始写;链接(a标签,图片img标签),表单提交,重定向都属于浏览器端,所以这些url的绝对路径为 (/  + 应用名)开始写,也就是request.getContextPath() + / +具体的路径;

       springmvc中@RequestMapping注解中的url可以以 '/' 开头,则是绝对路径,也可以不要 '/' 则是相对路径,推荐使用绝对路径; 

  下面讲解path属性:

  1)tomcat 不要应用名访问设置(server.xml修改中的子节点) 

  

  path 设置为 “” 就不需要应用名可以访问,当然有应用名newWap也可以访问。

  如果path="newWeiXin",则既可以通过newWap访问,也可以通过newWeiXin访问。

  path相当于设置了另一个额外的应用名。

  每部署一个项目到tomcat中,就会自动增加一个context,但是只能一个context的path可以为空,默认不要应用名访问的项目唯一。context的path不能重复,不然启动tomcat会报错。

注意:设置了path为“”后,浏览器端(jsp页面:引入css,js,图片等等,js)中使用绝对路径必须的应用名就可以省略,因为path设置为“”后不要应用名一样可以访问资源。(已测试)

     

      在项目开发中,有时候从svn检出的别人开发的项目中的js、css文件的引入,jsp中图片,链接,ajax等浏览器端的url绝对路径都是没有写应用名,而是直接写 / + 具体路径,这个时候访问系统报错404,就需要修改path为空,才能正常访问;

  所以我们项目开发中不要这么做,要加上应用名访问资源,因为加上了应用名,即使别人部署项目后,改变了path的值,也可以访问的。

你可能感兴趣的:(Tomcat,tomcat)