首页 > 编程语言 >java功能需要

java功能需要

时间:2023-09-14 19:45:39浏览次数:54  
标签:功能 需要 java String oss jwt public inputStream properties

1.上传图片功能需要

pom文件阿里云oss依赖

<!--        阿里云oss文件存储依赖-->
<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.15.1</version>
</dependency>

application配置文件

#OSS????
oss.endpoint=oss-cn-hangzhou.aliyuncs.com
oss.accessKeyId=LTAI5t6ijtMwjLXkaEPeDJPw
oss.accessKeySecret=x5oKEyjxl7GW2Va1knuOJW5e43cBqq
oss.bucketName=updata-test
oss.url=https://updata-test.oss-cn-hangzhou.aliyuncs.com

配置文件

<!--文件上传解析器-->
<bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设定文件上传的最大值为5MB,5*1024*1024 -->
    <property name="maxUploadSize" value="5242880"></property>
    <!-- 设定文件上传时写入内存的最大值,如果小于这个参数不会生成临时文件,默认为10240 -->
    <property name="maxInMemorySize" value="40960"></property>
</bean>

OssUtil工具类

public class OssUtil {
    //实例化Map的子类 Properties
    private static Properties properties =new Properties();

    static {
        //任意一个类的Class对象中都存在一个方法getResourceAsStream   可以把properties读成输入字节流
        InputStream inputStream = OssUtil.class.getResourceAsStream("/oss.properties");
        try {
            properties.load(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public static  String uploadFile(String filePath, MultipartFile multipartFile){
        InputStream inputStream = null;
        OSS ossClient = null;
        try {
            //   springmvc中提供文件处理对象   multipartFile获取到上传文件的原始名称 filePath=a/b/c/   aaa.png
            String originalFilename = multipartFile.getOriginalFilename();
            //获取原文件名称的后缀   aaa.png     suffix=.png
            String suffix = originalFilename.substring(originalFilename.
                    lastIndexOf("."));
            //为了防止后上传的请求与先上传请求的文件名称一致,内容不同  ,被覆盖,所以一定要让保存到服务器上的文件名称不同
            String newFileName = UUID.randomUUID()+suffix;//uuid + 后缀
            //springmvc中提供文件处理对象   multipartFile 直接获取上传文件的输入流
            inputStream = multipartFile.getInputStream();
            // 创建OSSClient实例。
            ossClient = new OSSClientBuilder().build(properties.getProperty("oss.endpoint")
                    , properties.getProperty("oss.accessKeyId"),
                    properties.getProperty("oss.accessKeySecret"));
            // InputStream inputStream = new FileInputStream(filePath);
            // 创建PutObject请求。  //filePath+"/"+newFileName = a/b/c/8e3f7b40-41bc-4125-bbcf-97b38dad4a2d.docx
            ossClient.putObject( properties.getProperty("oss.bucketName"), filePath+"/"+newFileName, inputStream);
            //https://qy1681.oss-cn-hangzhou.aliyuncs.com/pzydir/pzy.txt
            return properties.getProperty("oss.url")+"/"+filePath+"/"+newFileName;
        } catch (Exception oe) {
            oe.printStackTrace();
        }  finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
            try {
                if(inputStream!=null){
                    inputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

}

Controller层功能调用

//    使用阿里云控制上传
@RequestMapping("/fileUpload")
public String fileUpload(MultipartFile file) throws IOException {
    String orname = file.getOriginalFilename();
    System.out.println(orname);
    System.out.println("上传文件成功");
    //上传到阿里云
    String url = OssUtil.uploadFile("ossTest", file);
    System.out.println(url);
    if(url !=null){
        return url;
    }
    return "上传失败";
}

 

 2. JWT令牌生成(Token)

 pom依赖需要

<!--        JWT令牌依赖-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>

JWTUtil工具类

public class JwtUtils {
private static String signKey = "ixwixw";
private static long expire = 43200000L;
    /**
     * 生成jwt令牌
     */
    public static String generateJwt(Map<String, Object> claims){

      String jwt = Jwts.builder()
                .addClaims(claims)
              .signWith(SignatureAlgorithm.HS256,signKey)
              .setExpiration(new Date(System.currentTimeMillis() + expire))
              .compact();
      return jwt;
    }

 /**
     * 解析jwt令牌
     */
    public static Claims parseJWT(String jwt){
       Claims claims = Jwts.parser()
               .setSigningKey(signKey)
               .parseClaimsJws(jwt)
               .getBody();
       return claims;
    }
}

 

Controller层调用

HashMap<String, Object> jwt = new HashMap<>();
jwt.put("user",use);        //将对象user放入到JWT令牌中
String token = JwtUtils.generateJwt(jwt);
return ResultUtils.success(token);

 

3. 后端跨域需要

打开idea创建springboot项目中,创建config配置层,创建GlobalCorsConfig配置文件

@Configuration
public class GlobalCorsConfig implements WebMvcConfigurer{
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowCredentials(true)
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .maxAge(3600);
    }


}

 

 4.Redis配置使用需要

 https://www.cnblogs.com/9--1/p/17668139.html

【注:这篇文章会带领配置使用Redis】

 

 


 

标签:功能,需要,java,String,oss,jwt,public,inputStream,properties
From: https://www.cnblogs.com/9--1/p/17703221.html

相关文章

  • Java生成Json字符串
    publicclassTest01{publicstaticvoidmain(String[]args){//StringBuilderresponseMsg=newStringBuilder();//responseMsg.append("");//responseMsg.append("");//System.out.println(responseMsg.leng......
  • 无涯教程-JavaScript - IF函数
    描述如果条件为TRUE,则IF函数返回一个值,如果条件为FALSE,则返回另一个值。语法IF(logical_test,value_if_true,[value_if_false])争论Argument描述Required/Optionallogical_testTheconditionyouwanttotest.Requiredvalue_if_trueThevaluethatyouwan......
  • 【Java入门】交换数组中两个元素的位置
    在Java中,交换数组中的两个元素是基本的数组操作。下面我们将详细介绍如何实现这一操作,以及在实际应用中这种技术的重要性。一、使用场景在编程中,我们经常需要交换数组中的两个元素。例如,当我们需要对数组进行排序或者在某种算法中需要交换元素的位置。这种操作在数据结构、算法、......
  • 【Java入门】交换数组中两个元素的位置
    在Java中,交换数组中的两个元素是基本的数组操作。下面我们将详细介绍如何实现这一操作,以及在实际应用中这种技术的重要性。一、使用场景在编程中,我们经常需要交换数组中的两个元素。例如,当我们需要对数组进行排序或者在某种算法中需要交换元素的位置。这种操作在数据结构、算法......
  • 百度地图GL javascript API 如何绘制流动箭头的线?
    要使用百度地图GLJavaScriptAPI绘制流动箭头线,可以使用Polyline和Symbol样式来实现。下面是一个示例代码://创建地图实例varmap=newBMapGL.Map("mapContainer");map.centerAndZoom(newBMapGL.Point(116.404,39.915),11);//创建折线varpoints=[newBMapG......
  • EasyGBS国标视频综合管理平台监控功能及技术优势概述
    随着安防行业的高速发展,传统视频监控平台也逐渐与前沿技术、互联网技术相融合,如5G通信、GIS、大数据、云计算、边缘计算AI识别、智能分析、视频直播等技术,形成了集中管理、多级联网共享、互联互通、多业务融合、多端融合的综合性视频监控管理平台。EasyGBS国标视频综合管理平台面......
  • vue3 elementplus 列表中添加排序功能,移动的时候修改背景色
    <el-tablesize="medium":border="true":data="branchTableData":row-style="changeColor":stripe=falsestyle="width:100%;">......
  • 什么是 JavaScript?它是如何工作的?可以用它做什么
    什么是JavaScript?JavaScript是一种编程语言,最初由BrendanEich于1995年在NetscapeCommunicationsCorporation工作时开发。最初名为“Livescript”,后来更名为“JavaScript”。用JavaScript编写的命令可以直接执行,无需任何编译或准备。因此,JavaScript与其他编程语言有很......
  • Java集成开发环境(IDE)-IntelliJ IDEA 2023 mac+win版
    IntelliJIDEA是一款由JetBrains开发的集成开发环境(IDE),用于Java、Kotlin和其他编程语言的开发。它是一款功能强大、灵活且易于使用的IDE,被广泛认为是Java开发的首选工具之一。→→↓↓载IntelliJIDEA2023mac/win版 首先,IntelliJIDEA2023引入了更强大的代码分析和智能提......
  • 为什么企业需要视频会议私有部署?
    随着全球化和数字化的快速发展,企业必须不断适应新的沟通方式,以满足不断变化的市场需求。互联网技术的普及使得远程办公成为可能,这意味着员工分散在不同的地理位置,需要一种高效的方式来进行协作和沟通。此外,全球供应链的日益复杂也使企业需要与合作伙伴和客户保持紧密联系,以确保生产......