精华内容
下载资源
问答
  • Java接口实现文件上传

    万次阅读 2019-05-09 12:51:25
    因工作需要,在后台管理页面加入一个上传文件的模块,虽然接口的代码很简单,但实现期间遇到了一些比较有趣的坑,特记录下来。 需求 实现文件上传,并提供一个可供下载的路径。 想法 文件上传代码暂且不谈,先说说...

    因工作需要,在后台管理页面加入一个上传文件的模块,虽然接口的代码很简单,但实现期间遇到了一些比较有趣的坑,特记录下来。

    需求

    实现文件上传,并提供一个可供下载的路径。

    想法

    文件上传代码暂且不谈,先说说文件放在服务器什么位置比较合适。我首先想到的是两个地方:

    1. tomcat的webapps/ROOT目录下,如果放在这个目录下,数量少了还好,一旦数量多了,必定会影响tomcat本身的运行速度。这个虽然可用但不可行。
    2. nginx的静态目录下,放在这个目录下则不会有什么影响。只需要在nginx中进行相应的配置即可。可用也可行。

    java代码实现:

    由于我们使用的是SSM框架,首先需要配置文件上传解析器。

    <!-- 实例化部件解析器,解析二进制流,上传文件-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    	<!-- 设置上传文件的最大值为20M 不能写20*1024*1024 -->
    	<property name="maxUploadSize" value="20971520"></property>
    	<!-- 设置上传文件的编码 -->
    	<property name="defaultEncoding" value="utf-8"></property>
    </bean>
    

    虽然简单,但依旧遵从三层架构,Controller实现如下:

    
    @Controller
    @RequestMapping("/upload")
    public class UploadApkController {
    
    	@Resource
    	private UploadApkService uploadApkService;
    
    	/**
    	 * 上传Apk文件
    	 * @param file
    	 * @return
    	 */
    	@RequestMapping("/uploadApk")
    	@ResponseBody
    	public Map<String, Object> uploadApk(@RequestParam("file") CommonsMultipartFile file){
    
    		Map<String, Object> resultMap = new HashMap<>();
    		try {
    			uploadApkService.uploadApk(file);
    			resultMap.put("msg", "上传成功");
    		} catch (IOException e) {
    			e.printStackTrace();
    			resultMap.put("msg", "上传失败");
    		}
    		return resultMap;
    	}
    
    }
    
    

    Service接口:

    
    public interface UploadApkService {
    
        /**
         * 上传Apk文件
         * @param file
         * @throws IOException
         */
        public void uploadApk(CommonsMultipartFile file) throws IOException;
    }
    

    Service实现类:

    
    public class UploadApkServiceImpl implements UploadApkService {
    
        /**
         * 上传Apk文件
         * @param file
         * @throws IOException
         */
        public void uploadApk(CommonsMultipartFile file) throws IOException {
        	//这是我的nginx静态路径,使用时需改为自己的对应路径
            String path="/data2/fphone/static/apk/"+file.getOriginalFilename();
            File newFile=new File(path);
            file.transferTo(newFile);
        }
    }
    

    代码部分完成。

    对接口进行测试。

    在这里插入图片描述
    这是之前测试的截图,状态为OK即为上传成功。
    下面进行下载测试,输入nginx静态地址,显示如下:
    在这里插入图片描述
    出现问题。思考后认为可能是权限不够,进入nginx静态目录下,执行命令:

    ls -all apk
    

    显示如下:
    在这里插入图片描述
    发现zrx.apk权限为640,对于其他人并没有读的权限。我nginx的配置如下:
    在这里插入图片描述
    所以通过nginx并没有读取这个文件的权限。有些人可能会说将nginx的user调整为root,但我建议不要给nginx太大的权限。所以采用另一种方式解决这个问题。

    解决权限问题

    既然不决定提高nginx的权限,那么只能将上传文件的权限由640改为644。查看tomcat的bin目录下的catalina.sh文件:
    在这里插入图片描述
    将这里的0027改为0022即可,0022代表权限为644。
    权限修改完成,再次进行测试,调用接口上传文件,检查文件权限:

    在这里插入图片描述
    发现文件权限为644。继续尝试输入路径进行下载:
    在这里插入图片描述
    文件果然开始正常下载,验证了我们的思路是正确的。到此问题解决。如果有什么不明白或者发现问题的,欢迎评论或者私信我,谢谢各位!

    展开全文
  • java接口实现多态

    千次阅读 2019-03-05 16:35:49
    或者是 接口类型的引用类型变量指向了接口实现类 的对象。 这里主要讲第二种,接口的对象指向了实现类的对象 实现关系下的多态: 接口 变量 = new 接口实现类的对象。 interface Dao{ //接口的方法全部都是非...

    https://blog.csdn.net/oguro/article/details/53086720

    多态: 父类的引用类型变量指向了子类的对象
    或者是 接口类型的引用类型变量指向了接口实现类 的对象。
    这里主要讲第二种,接口的对象指向了实现类的对象

    实现关系下的多态:

    接口 变量 = new 接口实现类的对象。

    这样接口的对象就可以访问实现类中的方法。

    interface Dao{  //接口的方法全部都是非静态的方法。
    
    	public void add();
    
    	public void delete();
    }
    
    //接口的实现类
    class UserDao implements Dao{
    	
    	public void add(){
    		System.out.println("添加员工成功!!");
    	}
    
    	public void delete(){
    		System.out.println("删除员工成功!!");
    	}
    }
    
    class Demo3 
    {
    	public static void main(String[] args) 
    	{
    		//实现关系下的多态
    		Dao d = new UserDao(); //接口的引用类型变量指向了接口实现类的对象。
    		d.add();
    	}
    }
    
    

    输出结果:添加员工成功!

    展开全文
  • java接口实现树状结构列表

    千次阅读 2020-08-03 11:44:04
    } 2.service层代码 查询除所有的数据,然后在java 方法体里,利用父子id组装成树状结构的列表 /** * 获取设备分类树 * @return */ public ResponseDTO> listEquipmentTypeTree() { Map map = new HashMap();...

    1.controler层代码

      /**
         * 获取所有的设备类型树
         * @return
         */
        @GetMapping("/equipmentType/tree")
        @ApiOperation(value ="设备类型树 @author tarzan Liu")
        public ResponseDTO<Map<String, Object>> listEquipmentTypeTree(){
            return  equipmentCompanyTypeService.listEquipmentTypeTree();
        }

     

    2.service层代码

    查询除所有的数据,然后在java 方法体里,利用父子id组装成树状结构的列表

    
        /**
         * 获取设备分类树
         * @return
         */
        public ResponseDTO<Map<String, Object>> listEquipmentTypeTree() {
            Map<String, Object> map = new HashMap<>();
            List <EquipmentCompanyTreeDTO>treeList = Lists.newArrayList();
            List<EquipmentCompanyTypeBaseDTO> listTree =equipmentCompanyTypeDao.listDataByCompany(DeletedEnum.NO_DELETED.getValue());
            List <EquipmentCompanyTreeDTO> treeListType = SmartBeanUtil.copyList(listTree,EquipmentCompanyTreeDTO.class);
            for(EquipmentCompanyTreeDTO parent :treeListType){
                if(parent.getPid()==null || parent.getPid()==0) {
                    treeList.add(findChildren(parent, treeListType));
                }
            }
            Long id=equipmentCompanyTypeDao.getDefaultTypeId(listTree.get(0).getId());
            map.put("defaultTypeId",id);
            map.put("treeList",treeList);
            return ResponseDTO.succData(map);
    
        }
    
    /**
         * 寻找子节点
         */
        private static EquipmentCompanyTreeDTO findChildren(EquipmentCompanyTreeDTO parent, List<EquipmentCompanyTreeDTO> listCategory) {
            List<EquipmentCompanyTreeDTO> childList = listCategory.stream().filter(e->parent.getId().equals(e.getPid())).collect(Collectors.toList());
            if(CollectionUtils.isNotEmpty(childList)){
                for (EquipmentCompanyTreeDTO child : childList){
                    findChildren(child,listCategory);
                }
                parent.setChildren(childList);
            }
            return parent;
        }

    3.接收对象treeDTO 

    package com.tulian.colliery.module.equipment.company.domain.dto.company;
    
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    
    import java.util.List;
    
    
    /**
     * @Description: 设备信息树形DTO
     * @Author: tarzan Liu
     * @Date: 2019/11/8 10:35
     */
    @Data
    public class EquipmentCompanyTreeDTO {
    
    	@ApiModelProperty("专业/设备类别id/设备id/空间id/状态值")
    	private Long id;
    
    	@ApiModelProperty("名称")
    	private String name;
    
    	@ApiModelProperty("父id")
    	private Long pid;
    
    	@ApiModelProperty("设备编号")
    	private String number;
    
    	@ApiModelProperty("树节支类型(0:空间/设备类型;1:设备)")
    	private Integer treeType;
    
    	@ApiModelProperty("空间包围盒")
    	private String spaceBox;
    
    	@ApiModelProperty("单体id")
    	private String modelId;
    
    	@ApiModelProperty("构件id")
    	private String guid;
    
    	@ApiModelProperty("子分类")
    	private List<EquipmentCompanyTreeDTO> children;
    
    }
    

     

     

    展开全文
  • 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口并不是类,编写接口的方式和类很相似,但是...

    基础知识

    接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

    接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
    除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
    接口无法被实例化,但是可以被实现。

    💡一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

    💡在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

    💡一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。

    在这里插入图片描述

    显式的实现接口

    package hdfs;
    
    interface car
    {
        public void carname();
    }
    
    class Person implements car{
    
    	@Override
    	public void carname() {
    		// TODO Auto-generated method stub
    		System.out.println("mercedes-benz");
    	}
    	
    }
    
    
    public class TryInterface {
    	public static void main(String[] args) {
    		Person zhao = new Person();		// 类➕变量
    		car he = new Person();			// 接口➕变量
    		zhao.carname();
    		he.carname();
    	}
    	
    }
    
    

    在这里插入图片描述

    隐式的实现接口

    package hdfs;
    
    
    interface caranonymity
    {
        public void carname();
    }
    
    
    public class TryInterfaceAnonymity {
    	public static void main(String[] args) {
    		caranonymity he = new caranonymity() {
    			
    			@Override
    			public void carname() {
    				// TODO Auto-generated method stub
    				System.out.println("我是匿名的,但我也是mercedes-benz");
    			}
    		};
    		he.carname();
    	}
    }
    
    
    

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • Java 接口实现(详细版)】

    千次阅读 多人点赞 2021-03-31 09:00:37
    接口实现1 接口二级目录三级目录2 实现接口3 理解接口 1 接口 二级目录 三级目录 2 实现接口 3 理解接口
  • java 实现接口

    千次阅读 2018-06-30 10:11:19
    6.2 实现接口 1 类实现接口 在Java语言中,接口由类来实现以便使用接口中的方法。 一个类需要类声明中使用关键字implements声明该类实现个或多个接口。 如果实现多个接口,用逗号隔开接口名,例如A类实现Pintable...
  • Java实现接口(打印机)

    千次阅读 2019-12-12 18:50:22
    打印机实现接口 需求说明以及实现效果 实现方式: 从需求中提炼出所有的名词:彩色,黑色,墨盒; A4, B5, 纸张; 打印机其中墨盒可以有一种标准, 所以可以将墨盒设置为接口, 让彩色和黑色墨盒使用这个接口...
  • java 接口实现防盗门功能

    千次阅读 2019-04-02 21:06:00
    Door; package locker; public abstract class Door { public abstract void open(); public abstract void close(); } View Code Lock: package locker;...public interface Lo...
  • java 接口 三种实现方式

    万次阅读 2018-09-29 09:42:15
    无论第一种还是第二种还是,如果我们想要从接口中拿到数据,我们就必须得调用HttpClient或者其他的方式从接口获取信息,这个项目中我使用到的是HttpClient。 HttpClient特性以及使用方法 ...
  • Java实现加减乘除运算

    万次阅读 2018-11-08 14:40:50
    ** 利用接口做参数,写...(2)设计四个类分别实现接口,完成加减乘除运算。 (3)设计一个类UseCompute,类中含有方法:public void useCom(Compute com, int one, int two),此方法能够用传递过来的对象调用comp...
  • JAVA 实现Runnable接口

    千次阅读 2017-12-11 09:10:45
    如有侵权,请作者联系我删除博客,谢谢 //仅作为学习笔记 ...创建线程的第二种方式:实现Runnable接口 步骤: 1,定义类实现Runnable接口 2,覆盖Runnable接口中的run方法 将线程要运
  • JAVA案例之使用接口实现手机功能

    千次阅读 2020-06-28 23:42:27
    JAVA案例之使用接口实现手机功能 这次小星星说一下接口案例之实现手机功能,话不多说,上案例 这是案例的效果图 案例大致类图 由上图类图中可以看出,我们需要3个接口,2个实现类,以及1个 抽象类大致的案例创建如下...
  • Java接口以及接口简单实现计算器

    千次阅读 2019-03-22 20:01:56
    接口:就是全局常量与抽象方法的集合,在Java中使用interface关键字定义
  • java 接口 实现和继承关系

    万次阅读 多人点赞 2009-05-20 17:37:00
    java允许一个接口继承多个父接口,也允许一个类实现多个接口,而这样的多继承有上面提到的缺点马? 答案是没有,这是由接口的抽象性决定的。 正如前面介绍的,在接口中不能有实例变量,只能有静态的常量,不能有...
  • Java接口interface的实现方法

    千次阅读 2018-11-24 22:17:36
    JDK1.8中为了加强接口的能力,使得接口可以存在...1.定义一个接口 TestInterface,我们在定义两个具体实现的方法,分别用static和default修饰 package test; public interface TestInterface { static void s...
  • java一个接口拥有多个实现类,调用指定实现
  • Java接口实现与方法的调用

    万次阅读 2019-05-10 23:29:50
    //定义一个接口 interface Animals4{ int ID=1;//定义全局变量 //定义抽象方法 void breathe(); //定义一个默认方法 default void getType(String type) { System.out.println("该动物属于:"+type); } ...
  • 最近在写项目接口,涉及到文件下载、打包压缩下载,单个文件下载还是比较简单的,多文件下载涉及到打包和压缩知识,之前也没做过,写篇博客做个简单的记录一下。闲言少叙,上代码: 如下代码是精简过后的测试代码,...
  • JAVA实现多个接口

    千次阅读 2019-10-17 16:26:18
    因为这种情况下,我们需要让一个类同时继承多个父类,这件事情在有些编程语言中可以通过多继承的方式来实现,但是JAVA中只支持单继承,一个类只能继承一个父类,但是可以同时实现多个接口,这样也就可以达到类似于多...
  • Java接口

    千次阅读 多人点赞 2018-12-24 12:00:36
    Java接口也表示IS-A关系。它不能像抽象类一样被实例化。 q) Java为什么需要接口 通过接口实现多继承 用于实现耦合 如下图所示,一个类扩展了另一个类,一个接口扩展了另一个接口,一个类实现了一个接口。 接...
  • Java中类实现接口

    万次阅读 2018-09-05 17:39:49
    Java中类实现接口实例: (方便查看) 设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,为了便于扩展采用面向接口的编程思想来实现,编写想应的类以及主类,并且能够调用模拟器发出两种不同动物的...
  • Java的API接口实现例子

    万次阅读 2019-05-28 14:20:02
    java发一个http请求过去,带上参数就可以了,跟我们在浏览器上访问资源是一样的 只是它返回的是json格式的数据而已。 比如以下有两个方法: public static String do_post(String url, List<NameValuePair> ...
  • Java实现对支付宝即时到账接口调用。
  • java8之默认接口实现

    千次阅读 2019-03-31 17:41:28
    java8之默认接口实现简介Predicate源码代码演示冲突解决 简介 定义:申明方法的同时提供实现 允许在接口内声明静态方法 指定接口方法的默认实现 Predicate源码 /* * Copyright (c) 2010, 2013, Oracle and/or its...
  • Java 接口作为方法参数

    千次阅读 2020-09-18 14:27:18
    Java 接口作为方法参数好处: 1 可以很方便封装起来,供调用者使用; 2 参数为接口类型可以实现代码解耦; 3 对调用者而言, 无需关心内部构造逻辑 , 只要实现调用相关方法 实现自己的下部逻辑即可,做到开箱即...
  • /* 使用接口的时候,需要注意: 1. 接口是没有静态代码块或者构造方法的。 2. 一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。...3. 如果实现类所实现的多个接口当中,存在重复的抽象方法,那...
  • //定义一个汽车接口 interface Car { String name(); int price(); } //定义一个BMW类 class BMW implements Car { public String name() { return "BMW"; } public int price() { return 3500000; } } /...
  • java接口编写规则

    千次阅读 2019-01-28 10:11:12
    所有接口提供统一入口,不同接口传递不同参数。 优点:便于控制请求参数和返回结果; 既然写了接口,还需要写一个接口查询功能。记录接口的信息:请求参数,请求结果,成功还是失败,失败原因。方便查询。否则,如果...
  • Java接口实现

    千次阅读 2018-06-24 22:16:19
    转自:https://blog.csdn.net/qq_33518744/article/details/52673782接口声明:interface 接口名字接口体:接口体中包含常量的声明(没有变量)和抽象方法两部分。常量是public, static,final型常量,方法是public...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,826,953
精华内容 730,781
关键字:

java接口实现

java 订阅