精华内容
下载资源
问答
  • Web项目中响应端获取文件路径的方式(tomcat服务器): 比如我在这个Web项目下有放置了这些文件,需要获取它们的路径 1.放置在Web项目下的src目录中的 d.txt 文件路径获取: ServletContext con = this....

    Web项目中响应端获取文件路径的方式(tomcat服务器):
    比如我在这个Web项目下有放置了这些文件,需要获取它们的路径

    这里写图片描述
    1.放置在Web项目下的src目录中的 d.txt 文件路径获取:
    ServletContext con = this.getServletContext(); // 获取全局域对象
    String path = con.getRealPath(“/WEB-INF/classes/d.txt”); // 获取 Web项目的src目录下的d.txt文件的路径

    2.放置在WEB-INF文件夹下的 b.txt 文件路径获取:
    ServletContext con = this.getServletContext(); // 获取全局域对象
    String path = con.getRealPath(“b.txt”); // 获取WEB-INF 下的 b.txt文件的路径

    3.放置在WEB-INF文件夹下的lib目录下的a.txt文件路径获取:
    ServletContext con = this.getServletContext(); // 获取全局域对象
    String path = con.getRealPath(“/WEB-INF/a.txt”); // 获取/WEB-INF/lib目录下的 a.txt文件的路径

    4.放置在wula文件夹下的f.txt文件路径的获取:
    ServletContext con = this.getServletContext(); // 获取全局域对象
    String path = con.getRealPath(“/WEB-INF/classes/f.txt”); // 获取f.txt文件的路径

    5.放置在wula文件下的hhe包内的zz.txt文件路径的获取:
    ServletContext con = this.getServletContext(); // 获取全局域对象
    String path = con.getRealPath(“/WEB-INF/classes/hhe/zz.txt”); // 获取zz.txt文件的路径

    为什么路径的书写不尽相同?
    因为在这整个web项目被添加到tomcat服务器后,服务器会在其所在其文件所在的webapps目录下创建我们添加的Web项目文件夹,而我们放置在 WebRoot 根目录下的文件会被放置到服务器端项目文件夹的根目录下(如:b.txt) , 但是我们在Web项目目录下的xiaoxiao.txt却并没有被添加到服务器端的目录中!(所以在服务器端无法查找xiaoxiao.txt文件因为根本就没有加载进服务器端) 而放置在 lib文件夹下的文件会被添加到服务器端Web项目下的WEB-INF文件夹的根目录中(如:a.txt),在该WEB-INF文件夹下的classes文件夹下放置着Web项目中的包文件夹下的文件(如c.txt , f.txt), 包内的文件(如zz.txt) 会被放置在classes文件夹中以包名命名的文件夹中.

    展开全文
  • 场景:当程序中需要上传很多静态文件时,不适合将存放上传文件的文件夹放在项目里面,因为每次打包部署时会将文件夹覆盖,使服务器的静态文件丢失...1. 1.1tomcat配置虚拟路径 可以参考这篇文章:https://blog.csdn...

    场景:当程序中需要上传很多静态文件时,不适合将存放上传文件的文件夹放在项目里面,因为每次打包部署时会将文件夹覆盖,使服务器的静态文件丢失。有人会每次部署时备份文件,但当文件夹很大时,备份一次很费劲。

    所以最好将文件与程序分离,将上传的文件夹放到服务器固定的位置,程序中需要访问文件统一去这个路径下访问。

    1. 1.1tomcat配置虚拟路径

    可以参考这篇文章:https://blog.csdn.net/chengp919/article/details/76552006

    基本操作就是打开 tomcat/conf/server.xml文件,在host中添加 一个context标签

    <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
    
         <!-- 这里添加以下语句-->
         <Context path="/attachments/" docBase="E:\工作项目\attachments"></Context>
    
    </Host>

    path为访问路径,docBase为真实物理路径,意思是当访问path中的路径时,tomcat会自动找docBase中的路径。

    这种适合war包在tomcat中运行的生产环境

    另外说一下,有时候部署程序时也用这种方法虚拟路径

    比如 <Context path="" docBase="E:\工作项目\zhxZone\target\zhuhuixin" reloadable="false" caseSensitive="false" debug="0"/>

    这样配置tomcat启动后会将docBase中的程序直接启动,不需要将程序放到webapp文件夹里。

    但我自己开发时,使用的是idea 启动tomcat,配置tomcat中的server就不起作用了

    1.2 idea中配置tomcat虚拟路径

    参考文章:https://blog.csdn.net/cheney550995353/article/details/70185282

    在deployment中添加并选择你需要的真实物理路径,application context配上访问路径就可以了。

    我使用配置路径成功访问了虚拟路径中的文件

    2.调用config.properties中配置的保存根路径

    因为程序部署时有时候会换服务器或者静态文件夹的路径,所以在程序中上传根路径不能写死,最好配置在config.properties中,方便调用修改。

    具体步骤可以参考这篇文章:https://blog.csdn.net/chinadim/article/details/40621671

    2.1、在spring.xml中加入context相关引用

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:context="http://www.springframework.org/schema/context"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
          http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context.xsd">

    2.2引入jdbc配置文件         

    <context:property-placeholder location="classpath:config.properties" ignore-unresolvable="true" file-encoding="UTF-8"/>

     2.3、jdbc.properties的配置如下

    basePath=E:\\工作项目

    注意路径的“\”会被当做转义字符消失,要写双反斜杠

    2.4、创建一个ConfigProperties类引用config.properties配置

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Configuration;
     
     
    @Configuration 
    public class ConfigProperties{	
    	
    	@Value("${basePath}")
    	public  String basePath; //这里变量不能定义成static
    	 
    }

    2.5、在controller中调用 

    首先在controller顶部声明

    @Autowired
    private ConfigProperties configProperties;
    
    @Value("${basePath}")
    private String basePath; //直接在Controller引用

    这样在方法中就可以随时使用basePath配置了。 

    但是实际使用时可能会出现一些问题。

    如果使用报错 如果报错:IllegalArgumentException: Could not resolve placeholder in string value "${XXXXXX}"

    参考文献:https://blog.csdn.net/aichidemao2017/article/details/76067526

    如果你在config中的配置有中文,那读取的值可能会成为乱码。

    可以在这句话中添加file-encoding="UTF-8"

    <context:property-placeholder location="classpath:config.properties" ignore-unresolvable="true" file-encoding="UTF-8"/>

    参考文献:https://blog.csdn.net/j3oker/article/details/53839210

    3.实际运用

    注意:在访问静态资源时这个配置虚拟路径可以根据访问路径寻找真实路径,但是上传文件是不能使用虚拟路径,必须写真实的物理路径

    @Controller
    @RequestMapping(value = "webmana", produces = "text/plain;charset=UTF-8")
    public class AttachmentController extends BaseController{
        @Resource
        private AttachmentService attachmentService;
    
        @Autowired
        private ConfigProperties configProperties;
    
        @Value("${basePath}")
        private String basePath; //直接在Controller引用
    
    
        // 上传图片
        @RequestMapping(value = "uploadImg", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
        @ResponseBody
        public String uploadImg(
                @RequestParam(value = "file") MultipartFile[] files,  //这样接收文件
                String classId,
                HttpServletRequest request
        ) {
            try {
                Map<String,Object> params=new HashMap<String, Object>();
                String path="/attachments/images/";
                int userId=((TSystemUser)request.getSession().getAttribute("USER")).getUserId();
                params.put("classId",classId);
                params.put("attachmentType","IMAGE");
                params.put("userId",userId);
                for (MultipartFile file : files) {    //循环保存文件
                    Map<String,String> name=uploadFile(path,file, request);
                    params.put("attachmentUrl",path+name.get("saveName"));
                    params.put("attachmentName",name.get("fileName"));
                    params.put("attachmentThumbnail","");
                    attachmentService.saveFile(params);
                   // attachmentService.saveImg(path);
                }
                // 返回前台
                return JSON.toJSONString("success");
    
            } catch (Exception e) {
                e.printStackTrace();
                return JSON.toJSONString("fail");
            }
    
        }
    
    	//上传文件
        public Map<String,String> uploadFile(String path,MultipartFile file, HttpServletRequest request) throws IOException {
            Map<String,String> result=new HashMap<String,String>();
            String fileName = file.getOriginalFilename();
            String fileType = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()).toLowerCase();
            String saveName=String.valueOf((new Date()).getTime()).substring(8)+(int)((Math.random()*999+1))+'.'+fileType;
    		//需要真实路径,加basePath
            File tempFile = new File(basePath+path, String.valueOf(saveName));
            if (!tempFile.getParentFile().exists()) {    //创建文件夹
                tempFile.getParentFile().mkdir();
            }
            if (!tempFile.exists()) {
                tempFile.createNewFile();
            }
            file.transferTo(tempFile);
            result.put("fileName",fileName);
            result.put("saveName",saveName);
            return result;
        }
    
    
        //删除文件
        @RequestMapping(value = "deleteItem", produces = "application/json;charset=utf-8")
        @ResponseBody
        public String deleteItem(
                String ids,HttpServletRequest request
        ) {
            Map<String,Object> ret=new HashMap<String, Object>();
            try {
                String[] arr=ids.split(",");
                for(String id:arr ){
                    int id1=isIntegerRight(id);
                    String url=attachmentService.getAttachmentById(id1).get(0).get("attachment_url");
                    String name=attachmentService.getAttachmentById(id1).get(0).get("attachment_name");
                    //删除文件也需要文件真实路径
                    File file = new File(basePath+url);
                    // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
                    if (file.exists() && file.isFile()) {
                        if (file.delete()) {
                            System.out.println("删除单个文件"+name+"成功!");
                        } else {
                            System.out.println("删除单个文件 "+name+"失败!");
                            ret.put("success",false);
                            ret.put("msg","删除失败");
                            return JSON.toJSONString(ret);
                        }
                    } else {
                        System.out.println("删除单个文件失败:"+name+"不存在!");
                        ret.put("success",false);
                        ret.put("msg","删除文件不存在");
                        return JSON.toJSONString(ret);
                    }
                }
                attachmentService.deleteItem(ids);
                ret.put("success",true);
                ret.put("msg","删除成功");
    
            } catch (Exception e) {
                e.printStackTrace();
                ret.put("success",false);
                ret.put("msg","删除失败");
    
            }
            return JSON.toJSONString(ret);
    
        }
    
    }

     

     

     

    展开全文
  • 文件上传到tomcat服务器上 找到应用所对应的路径: String realPath= request.getServletContext().getRealPath(“/charts/”); eg:D:\apache-tomcat-7.0.56.2\wtpwebapps\CTUDataTurbo-trunk\charts 获得...

    error:(文件名、目录名或卷标语法不正确。)

    • 将文件上传到tomcat服务器上
      找到应用所对应的路径:
      String realPath= request.getServletContext().getRealPath(“/charts/”);
      eg:D:\apache-tomcat-7.0.56.2\wtpwebapps\CTUDataTurbo-trunk\charts
    • 获得tomcat上文件时
      可以使用的路径:
     String webPath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();

    eg:http://localhost:8080/WebApp/charts

    展开全文
  • 方式1: System.getProperty(“catalina.home”),获取到的是tomcat的根路径 方式2:request.getSession().getServletContext().getRealPath(""),获取到的是当前项目所在的根路径 方式3:System.getProperty(“user.dir...

    方式1: System.getProperty(“catalina.home”),获取到的是tomcat的根路径
    方式2:request.getSession().getServletContext().getRealPath(""),获取到的是当前项目所在的根路径
    方式3:System.getProperty(“user.dir”),获取到的是不是那么准确,可能是因为我在eclipse下启动的原因

    		String tomcatPath = request.getSession().getServletContext().getRealPath("");
    		System.out.println("request.getSession().getServletContext().getRealPath(''):" + tomcatPath);
    		System.out.println("System.getProperty('catalina.home')" + System.getProperty("catalina.home"));
    		System.out.println("System.getProperty('user.dir')" + System.getProperty("user.dir"));
    		/*
    		 * request.getSession().getServletContext().getRealPath(''):G:\apache\tomcat-7.0.72-2\webapps\portal
    			System.getProperty('catalina.home')G:\apache\tomcat-7.0.72-2
    			System.getProperty('user.dir')G:\eclipse-jee-luna-SR2-win32-x86_64-portaldev\eclipse
    		 */
    
    展开全文
  • 只需要编辑%tomcathome%\conf\server.xml文件,在标签中增加如何代码即可:其中docBase属性指定的为文件实际存储路径,path属性指定的为文件访问路径;如在浏览器中访问http://lo
  • 配置Tomcat虚拟路径映射进行文件上传下载
  • 问题:APP将文件上传到服务器上并且上传到的是项目内的地址是没问题的,但是因为重新部署或Tomcat突然犯抽导致需要重装什么的,以前上传的图片和文件可能会丢失。可以将文件和图片上传到项目外,可以采用配置T...
  • Java配置Tomcat外部文件上传

    千次阅读 2018-10-31 20:22:11
    最近由于项目需求,对项目随时改动,而由于项目的热启动,导致很多图片等资源由用户方上传的东西会无法保存,所以考虑到了Tomcat的外部保存的方法防止被服务器的启动而删除文件。 首先我在网上查到一段如何配置...
  • 原来模板文件读取方式: /** * 配置文件常量 * * @author */ @Component public class PathConstants { /** * 系统配置根目录 */ public static String GLOBAL_CONF_ROOT; @Value("${ra.global.conf.pa....
  • getRealPath 为空的时候,是项目的根目录:XXX/webapps/aaa 我截取aaa前面的就是webapps的根目录   后面要获得保存的路径,我的处理是webappsPath+"...注意此时idea tomcat运行的项目包是war包...
  • 转载自:http://blog.51cto.com/meiling/1785225--------------------------------------------------------------------------------------- Tomcat默认情况下会用系统的环境变量中找到JAVA_HOME和JRE_HOME。...
  • 帮别人做的小服务器程序,整个文件夹拷贝后点击文件夹下的bat文件即可。 #设置JAVA路径,当前文件夹下面的JDK set path=%path%;...#设置TOMCAT路径,当前文件夹下的TOMCAT set CATALINA_HOME=%cd%\apache-tomca
  • tomcat8设置JAVA_HOME路径

    万次阅读 2018-07-25 11:07:03
    Tomcat默认情况下会用系统的环境变量中找到JAVA_HOME和JRE_HOME。但是有的时候我们需要不同版本的JDK共存。这时我们可以在tomcat目录下bin目录中的setclasspath.bat或setclasspath.sh中增加JAVA_HOME和JRE_HOME配置...
  • tomcat指定配置文件路径方法

    千次阅读 2019-09-27 03:42:55
    1.在catalina.sh 中设置JAVA_OPTS,例如: JAVA_OPTS='-server -Xms1024m -Xmx1024m -XX:NewSize=128m -XX:MaxPermSize=256m -XX:MaxDirectMemorySize=256m -XX:+UseConcMarkSweepGC -XX:+...
  • java获取tomcat临时文件夹路径

    千次阅读 2016-09-22 15:06:09
    /** 生成execl文件路径,tomcat临时文件夹temp **/ String path = request.getSession().getServletContext().getRealPath("/")+"../../temp/driverExecl.xls"; 转载于:...
  • 如何通过Java代码获取tomcat服务器的绝对路径

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

    千次阅读 2019-06-14 16:46:10
    在用junit测试时,假如创建文件夹: File file = new File(...若用tomcat启动时,则在服务器tomcat的bin目录下创建,D:\tomcat\apache-tomcat-7.0.93\bin FileOutputStream输出流,若在tomcat的bin...
  • 获取JAVA文件路径

    万次阅读 2013-09-12 13:41:07
    由于经常需要获取文件的路径,但是比较容易忘记,每次需要总需要...一.Java文件获取路径方式: 各种获取方式如示例代码所示: package first.second; import java.io.File; public class GetPath { public static
  • JAVA清空tomcat下temp中的.tmp临时文件

    千次阅读 2019-11-20 12:43:41
    JAVA清空tomcat下temp中的.tmp临时文件 由于引入的某些第三方jar包在tomcat下产生了大量临时文件,使用JAVA程序对其进行清除。 代码 try { File file = new File("../temp"); //找到temp文件夹,生成一个File...
  • 摘要:文件上传路径tomcat配置 传统方式:文件上传路径放在项目目录之下/WebRoot/WEB-INF下,这个目录是从外部的客户端通过URL是无法访问的,所以文件也是相对比较安全的。但是这样对于部署有一个很大的问题,...
  • 关于java上传文件tomcat后,重新部署项目,文件消失的解决方法
  • tomcat配置虚拟路径,上传图片到虚拟路径
  • linux修改tomcat日志文件路径

    千次阅读 2019-07-01 19:47:45
    tomcat默认的日志文件在 logs 目录下,如果我们要修改日志文件存放路径,需要以下两个步骤 修改 tomcat 下 conf 文件夹中的 logging.properties 文件,将 ${catalina.base} 修改为你想要存放的路径 1catalina.org....
  • Java web 项目读取src或者tomcat下class文件夹下的xml文件或者properties文件 //推荐使用此方法 String path = getClass().getClassLoader().getResource("friend.xml").getPath(); //生成一个文件对象: File...
  • 项目上使用 request.getSession().getServletContext().getRealPath("") 获取项目运行路径,发现得到...这个路径是项目启动时maven编译项目的编译文件路径,而不是Tomcat下的项目运行路径! 后来发现是i...
  • Java文件的相对路径与绝对路径

    万次阅读 多人点赞 2015-09-14 18:47:46
    通过这篇博客可以深入理解Java中相对路径与绝对路径的概念,同时对Eclipse和tomcat中的相对路径也做介绍,有助于开发。另外,getPath()、getAbsolutePath()、getCanonicalPath()的区别也做了说明。
  • Java获取.class文件路径

    万次阅读 2018-01-17 17:35:34
    为了详细说明要介绍的几种方法,本例准备了两个... tomcat路径:D:\tomcat\ Ⅰ、Thread.currentThread().getContextClassLoader().getResource(name).getPath();  name:资源名称,例如:"com/test/test.txt"。
  • 有时候在java代码中读取文件,如果文件所在路径包含空格、”+“号或者是中文的时候,由于这些特殊的... 比如文件路径如果存在空格,那么会被转译成“%20”,那么就可以利用字符串替换,把“%20”传化成空格,这样就能正

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 208,435
精华内容 83,374
关键字:

java文件路径tomcat

java 订阅