精华内容
下载资源
问答
  • 获取tomcat路径

    2019-07-18 09:42:43
    request.getSession().getServletContext() 获取的是Servlet容器对象,相当于tomcat容器了。getRealPath("/") 获取实际路径,“/”指代项目根目录,所以代码返回的是项目在容器中的实际发布运行的根路径 ...

    request.getSession().getServletContext() 获取的是Servlet容器对象,相当于tomcat容器了。getRealPath("/") 获取实际路径,“/”指代项目根目录,所以代码返回的是项目在容器中的实际发布运行的根路径

    展开全文
  • Java中获取Tomcat项目路径

    千次阅读 2018-11-23 15:09:24
    getServletContext().getRealPath("/"); //返回项目在容器中的实际发布运行的根路径。 //C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\project  
    getServletContext().getRealPath("/");
    
    //返回项目在容器中的实际发布运行的根路径。
    //C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\project

     

    展开全文
  • 最近做项目碰到个问题... 项目里面vm模版是一起打包到war包里面的,而我用的是apache的velocity引擎,这个velocity引擎有方法支持vm渲染,但是要给出vm在文件系统中的绝对路径。考虑到灵活性,将模版的绝对路径写到...
    最近做项目碰到个问题,我需要利用velocity模版来渲染一些文本内容出来。也就是用vm来做模版,设置参数,然后我用程序动态产生的参数点进去,最后把渲染好的模版作为String输出。
    项目里面vm模版是一起打包到war包里面的,而我用的是apache的velocity引擎,这个velocity引擎有方法支持vm渲染,但是要给出vm在文件系统中的绝对路径。考虑到灵活性,将模版的绝对路径写到Spring的配置文件(我利用Spring来获取apache的Velocity引擎)中肯定是行不通的。比较理想的方式肯定是制定相对路径,而我这里的这个相对路径就是一个文件夹,所有的模版都放到这个文件夹中。
    在Tomcat的web容器环境中(这里指Selevet这一层,webwork的Action也可以算入这一层),也就是我们在分层结构中通常所说的Web层中是可以通过Servlet的有关API来得到这个模版目录的绝对路径的绝对路径的(应该是通过获取web项目的根路径,然后拼接上相对路径来获得)。但是我的方法并不是在Web层的,让我的类依赖于Web环境来获取这个相对路径,并不是好的设计方法。因此需要有别的方法来获取这个相对路径。
    忙活了一阵子,在不断debug的过程中,终于发现可以用jndi来获得这个绝对路径。把方法保留下来,以备后用。
    在不能使用Servlet API的情况下,可以用Apache的org.apache.naming这个包来获得保存在tomcat运行时环境中的各种资源,这里主要是指目录和文件资源。而这些目录和文件资源都是相对于部署在tomcat中的各个web项目的项目根目录(webroot)的。为了操作jndi资源,我们要做的第一步就是获得jndi上下文,如下:

    DirContext dirContext = DirContextURLStreamHandler.get();

    在这个dirContext中,通过debug我们可以看到里面放了除了类路径下之外的所有资源,当然是相对于webroot的。现在假设我们的模版放在/webroot/templates下面。下面的代码就可以获得模版目录的绝对路径:

    //获得上下文
    DirContext dirContext = DirContextURLStreamHandler.get();
    //查询templates这个目录资源
    Object obj = dirContext.lookup("/templates");
    FileDirContext fdc;
    String webrootPath;
    // 判断取出来的对象是不是FileDirContext
    // 也就是判断这个资源名对应的资源是不是目录资源
    if (obj instanceof FileDirContext) {
    fdc = (FileDirContext) obj;
    // 获取web项目根目录的绝对路径
    webrootPath = fdc.getDocBase();
    }

    String templatesPath = webrootPath + "/tempaltes";


    上面的代码先获得目录上下文,然后获得目录资源。这里判断了一下获得Object是不是FileDirContext,在jndi中,所有的目录资源都被抽象成FileDirContext这个对象。如果是文件就会被抽象成FileDirContext.FileResource这个对象。
    如果不是目录资源,比如是一个文件资源,那返回的ProxyDirContext这个对象,获得文件资源的方法在后面讲。
    但是,看apache的api,会发现你是没有办法拿到FileResource这个对象,因为目前的api没有暴露出来。虽然在debug的时候会发现,FileDirContext里面已经有属性(具体那个属性忘了)保存着我想要的东西了,但是就是没有办法通过api来得到这个东西。着实郁闷了一把。
    我尝试了各种方法,看了几遍api,都没有找到能够从FileDirContext里面直接获取我想要的属性的方法(也就是templates目录的绝对路径)。最后发现FileDirContext有个getDocBase()方法,能够拿到web项目的根目录的绝对路径。
    后来我想了一下,其实拿到这个根目录的绝对路径基本也就足够了,因为我们在web项目中指定资源的相对路径时,通常都是从webroot开始的。估计也是因为这个,大家在制定相对路径时都从webroot开始制定。
    拿到webroot之后,就可以拼接上我的模板目录的相对路径,然后获得模板目录的绝对路径了。为了方便,可以把这个相对路径做成Bean的一个属性,然后在Spring的配置文件中设定。如果想更方便,那就用maven。在一个外部文件中设定这个值。
    下面来说说获取文件资源,获取文件资源的思路基本相同,只不过换了另外一个类而已。如果是文件资源可以用下面的代码:

    //获得上下文
    DirContext dirContext = DirContextURLStreamHandler.get();
    //查询templates这个目录资源
    Object obj = dirContext.lookup("/templates/test.vm");
    FileDirContext fdc;
    String webrootPath;
    // 判断取出来的对象是不是FileDirContext
    // 也就是判断这个资源名对应的资源是不是目录资源
    if (obj instanceof ProxyDirContext) {
    fdc = (FileDirContext) obj;
    // 获取web项目根目录的绝对路径
    webrootPath = fdc.getDocBase();
    }

    String templatesPath = webrootPath + "/tempaltes/test.vm";

    区别就在红色标注的9,15两行代码,lookup返回的类不一样了,变成ProxyDirContext了。ProxyDirContext中也有一个getDocBase方法,通过它拿到web项目的绝对路径,然后拼接上文件资源的相对路径也就拿到了完整的路径。
    展开全文
  • Java获取Tomcat路径

    2017-11-30 14:25:21
    System.getProperty("catalina.home") 文章出处:http://blog.csdn.net/kry1201/article/details/73135507

    1. System.getProperty("catalina.home")  文章出处:http://blog.csdn.net/kry1201/article/details/73135507

    展开全文
  • 如何通过Java代码获取tomcat服务器的绝对路径

    万次阅读 多人点赞 2017-06-12 21:39:38
    有时候我们可能会有这样的需求:获取tomcat的绝对路径,以便于进行一些其他的操作,看过很多老哥的方式大多都类似于这种: ①: Test.class.getResource("/") ②: System.getProperty("user.dir") 上述两种方式的...
  • tomcat容器详解

    2015-04-13 08:54:09
    tomcat下有9个目录,分别是bin,common,conf,logs,server,shared,temp,webapps,work 目录,现在对每一目录做介绍。  tomcat根目录在tomcat中叫,文章中把tomcat解压后在c:/下。  1./bin: 存放各种平台...
  • 概述: 单独用main 方法测试路径,默认是相对于工程名的目录,...既然是部署到tomcat,就以tomcat安装目录为根目录,那么怎么获取tomcat的目录呢? String dir = System.getProperty("catalina.home");  tomcat
  • Tomcat 容器与servlet的交互原理

    千次阅读 2016-05-12 14:55:21
    Tomcat 是Web应用服务器,是一个Servlet/JSP容器Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器上的组件. Servlet...
  • SpringBoot项目发布到服务器,是一件很简单的事情,但是发布到服务器上docker启动的tomcat容器中,有一些坑,需要注意。 下面完整的介绍一下:将SpringBoot web项目发布到docker启动的tomcat容器中。 Spring项目...
  • 上一篇讲完了spring cloud,Spring boot,Tomcat容器之间关系以及执行顺序,这次再继续讲当一个请求到达服务时,执行的流程: 首先我们得把Tomcat讲清楚: 综上所述,一个tomcat只包含一个Server,一个Server可以...
  • 在 CentOS 7 中安装 Docker 和创建 Tomcat 容器并部署Web应用 一般部署Web应用都需要安装数据库,比如 MySQL 和 Redis,MySQL 和 Redis 属于多个Web应用公用的系统,所以就不需要安装到 Docker 里了,直接在操作...
  • 2、 docker pull cheewai/tomcat #下载合适的tomcat镜像 3、 docker images #查看下载的镜像 4、docker run -i -t -d -v /home/chen/:/mnt/ cheewai/tomcat #创建并一直运行容器,同时把本地/home/che...
  • 在 CentOS 7 中安装 Docker 和创建 Tomcat 容器并部署Web应用 一般部署Web应用都需要安装数据库,比如 MySQL 和 Redis,MySQL 和 Redis 属于多个Web应用公用的系统,所以就不需要安装到 Docker 里了,直接在操作...
  • 由于在spring cloud启动源码加载过程中,没太弄清楚tomcat容器,spring 容器,spring cloud容器整体的加载顺序以及关系,所以想分析下这个流程,先不多说,上图 容器大致分为三层: BootStrap Spring 容器:由...
  • //相对路径 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; request.setAttribute("path",path);//一般在页面的开头进行设置...
  • 1、获取路径方式: @GetMapping("/t") @ResponseBody public String wtt(HttpServletRequest request) { File path = null; File upload =null; try { ...
  • 1、docker search tomcat #搜索tomcat相关镜像 2、docker pull cheewai/tomcat #下载合适的tomcat镜像 3、docker images #查看下载的镜像 4、docker run -i -t -d -v /home/chen/:/mnt/ cheewai/tomcat #...
  • 本文主要记录对内置容器优化和定制的方式,用于自己加深对SpringBoot理解。
  • 那么问题来了,SpringBoot没有做这些配置,是怎么做到内置Tomcat容器,并让Tomcat启动的呢? 【SpringBoot和Tomcat的初始化】 我们先来看Tomcat的启动时在SpringBoot启动的哪一步?这里只列举比较关键的几步: ...
  • 在上一遍博文中我们介绍了Nginx容器访问日志收集的方案,我们使用EFK的架构来完成对容器日志内应用日志的收集,如果不知道什么是EFK架构,那么请访问以下链接获取相关的帮助Nginx容器日志收集方案fluentd+elastic...
  • Tomcat连接池测试,获取数据源 try { //初始化查找命名空间 Context ctx = new InitialContext(); //参数java:/comp/env为固定路径 Context envContext = (Context)ctx.lookup("java:/comp/env"); ...
  • 那么问题来了,SpringBoot没有做这些配置,是怎么做到内置Tomcat容器,并让Tomcat启动的呢? 【SpringBoot和Tomcat的初始化】 我们先来看Tomcat的启动时在SpringBoot启动的哪一步?这里只列举比较关键的几步...
  • springboot项目获取resources路径(相对路径

    万次阅读 多人点赞 2019-04-29 16:44:18
    springboot文件上传保存到...(ps:不知道是不是springboot内嵌tomcat容器的原因,用网上的request.getServletContext().getRealPath("/")方法获得的路径不是项目路径,而是c盘下一个tomcat目录路径) 保存成...
  • 一般我们没有用绝对路径的话,我们的文件路径就会到
  • 深入剖析tomcat之servlet容器

    千次阅读 2015-09-01 08:54:46
    其实我们开发中经常用tomcat应用服务器,tomcat就一个servlet容器,能够运行基于serlvlet的应用程序并响应相应的http请求,开发时间长了,还是想想具体知道它是怎么运行的,尤其是servlet容器的机理,所以有幸拜读了...
  • * 因为tomcat容器下面的路径/usr/local/tomcat/webapps下的,而我们挂载的路径是在tomcat容器的 * /usr/local/tomcat/downlod/images下面的,所以我们要找到这个路径 * projectName项目的名称 */ public static...
  • Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。 连接器负责对外交流,容器负责内部处理。 最顶层是 Server 服务器,这里的 Server 指的就是一个 Tomcat 实例。一个 Server...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,422
精华内容 18,968
关键字:

获取tomcat容器路径