JavaWeb基础学习(5)

JavaWeb基础学习

  • 一、Filter
    • 1.1 Filter介绍
    • 1.2 Filter快速入门
    • 1.3、Filter执行流程
    • 1.4、Filter使用细节
    • 1.5、Filter-案例-登陆验证
  • 二、Listener
    • 2.1 Listener介绍
    • 2.2、ServletContextListener使用
  • 三、AJAX
    • 3.1 AJAX介绍与概念
    • 3.2 AJAX快速入门
    • 3.3 Axios异步架构
    • 3.4 JSON-概述和基础语法
    • 3.5、JSON数据和Java对象的转换
  • 四、VUE
    • 4.1 Vue概念——基本入门
    • 4.2 Vue的快速入门
    • 4.3 Vue常用指令
    • 4.4 Vue生命周期
  • 五 Element
    • 5.1 Element快速入门
    • 5.2 Element布局
    • 5.3 Element组件

一、Filter

1.1 Filter介绍

  • 概念: Filter 表示过滤器,是JavaWeb 三大组件(Servlet、 Filter、Listener)之一.
  • 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。
  • 过滤器一般完成一些通用的操作,比如: 权限控制、统一编码处理、敏感字符处理等等.

在这里插入图片描述

1.2 Filter快速入门

1.定义类,实现Filter接口,并重写其所有方法

public class FilterDemo implements Filter {public void init(FilterConfig filterConfig)public void doFilter(ServletRequest request)public void destroy(){}
}
  1. 配置Filter拦截资源的路径:再类上定义@WebFilter注解
@WebFilter("/*")public class FilterDemo implements Filter {}
  1. 在doFilter方法中输出一句话,并放行
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("Filter....");//放行filterChain.doFilter(servletRequest,servletResponse);
}

1.3、Filter执行流程

  • 放行后访问对应资源,资源访问完成后,还会回到Filter中吗?
  • 如果回到Filter中,是重头执行还是执行放行后的逻辑呢?
    放行后逻辑

在这里插入图片描述
在这里插入图片描述

1.4、Filter使用细节

Filter拦截路径配置

  • Filter 可以根据需求,配置不同的拦截资源路径
@WebFilter("/*")
  • 拦截具体的资源:/index.jsp:只有访问index.jsp时才会被拦截。
  • 目录拦截:/user/*:访问/user下的所有资源,都会被拦截
  • 后缀名拦截: *.jsp:访问后缀名为jsp的资源,都会被拦截
  • 拦截所有:/*:访问所有资源,都会被拦截

过滤器链

  • 一个Web应用,可以配置多个过滤器,这多个过滤器被称为过滤器链
    在这里插入图片描述
    注解配置的Filter,优先级按照过滤器类名(字符串)的自然排序

1.5、Filter-案例-登陆验证

  • 需求:访问服务器资源时,需要先进行登录验证,如果没有登录,则自动跳转到登录页面
package com.huanglei.web.Filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;@WebFilter("/*")
public class loginFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {//1. 首先进行强转HttpServletHttpServletRequest req = (HttpServletRequest) servletRequest;//添加有些不需要登陆就可以放行的页面String[] urls = {"/login.jsp","/loginServlet","/css/","/img/","/register.jsp","/registerServlet"};//获取到urlString url = req.getRequestURL().toString();for (String u : urls) {if (url.contains(u)){//表示出现了该放行人员,进行放行chain.doFilter(req,servletResponse);return;}}//2. 通过req来获取到session对象,因为session里面存储着用户信息HttpSession session = req.getSession();//3.获取里面是否含有登录信息Object user = session.getAttribute("user");//4. 判断是否为空if (user != null){//已经登录到页面chain.doFilter(req,servletResponse);}else {//没有登陆,跳转到登陆页面,并且将错误信息返回req.setAttribute("login_msg","还未登录请先登录!!");req.getRequestDispatcher("/login.jsp").forward(req, servletResponse);}}@Overridepublic void init(FilterConfig filterConfig) {}@Overridepublic void destroy() {}
}

二、Listener

2.1 Listener介绍

  • 概念: Listener表示监听器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。
  • 监听器可以监听就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件
  • Listener分类: JavaWeb中提供了8个监听器
监听器分类监听器名称作用
ServletContext监听ServletContextListener用于对ServletContext对象进行监听(创建、销毁)
ServletContext监听ServletContextAttributeListener对ServletContext对象中属性的监听(增删改属性)
Session监听HttpsessionListener对Session对象的整体状态的监听(创建、销毁)
Session监听HttpSessionAttributeListener对Session对象中的属性监听(增删改属性)
Session监听HttpSessionBindingListener监听对象于Session的绑定和解除
Session监听HttpSessionActivationListener对Session数据的钝化和活化的监听
Request监听ServletRequestListener对Request对象进行监听(创建、销毁)
Request监听ServletRequestAttributeListener对Request对象中属性的监听(增删改属性)

2.2、ServletContextListener使用

  1. 定义类,实现ServletContextListener接口
public class ContextLoaderListener implements ServletContextListener {/*** ServletContext对象被创建:整个web应用发布成功* @param sce*/public void contextInitialized(ServletcintextEvent sce){}/** ServletContext对象被销毁:整个web应用卸载* @param sce*/public void contextDestroyed(ServletContextEvent sce){}}
  1. 在类上添加@WebListener注解
package com.itheima.web.Linstener;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;@WebListener
public class ContextLoaderListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {System.out.println("ContextLoaderListener.....");}@Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {}
}

三、AJAX

3.1 AJAX介绍与概念

  • 概念: AJAX(Asynchronous JavaScript And XML): 异步的JavaScript和XML

  • AJAX作用:

  1. 与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据
    使用了AJAX和服务器进行通信,就可以使用HTML+AJAX来替换JSP页面了\
  2. 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用校验,等等…

在这里插入图片描述

同步和异步
在这里插入图片描述

3.2 AJAX快速入门

  • 编写AjaxServlet,并使用response输出字符串

  • 创建XMLHttpRequest 对象:用于和服务器交换数据

var xmlhttp;
if (window.XMLHttpRequest) {
//code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}else {
//code for lE6,IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
  • 向服务器发送请求
xmlhttp.open("GET","url");
xmlhttp.send();//发送请求
  • 获取服务器响应数据
xmlhttp.onreadystatechange = function () {if (xmlhttp.readyState == 4 && xmlhttp.status == 200){alert(xmlhttp.responseText)}
};

3.3 Axios异步架构

Axios对原生的AJAX进行封装,简化书写
官网: Axios官网

  • 引入axios 的js文件
<script src="jslaxios-0.18.0.js"</script>
  • 使用axios 发送请求,并获取响应结果
axios({method:"get",url:"http://localhost:8080/brand-dome/axiosServlet?username=zhangsan"}).then(function (resp){alert(resp.data);});
axios({method:"post",url:"http://localhost:8080/brand-dome/axiosServlet",data:"username=zhangsan"}).then(function (resp){alert(resp.data);});

axiosServlet

package com.itheima.web.Servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/axiosServlet")
public class AxiosServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("get!!");//获取数据String username = req.getParameter("username");System.out.println(username);//回响数据resp.getWriter().write("hello axios !!!!!");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("Post……");this.doGet(req, resp);}
}

Axios请求方式别名

  • 为了方便起见, Axios已经为所有支持的请求方法提供了别名。
方法名作用
get(url)发起GET方式请求
post(url,请求参数)发起POST方式请求
方法名作用
get(url)发起GET方式请求
post(url,请求参数)发起POST方式请求

示范:

    axios.get("http://localhost:8080/brand_dome/axiosServlet?username=zhangsan").then(function (resp){alert(resp.data)})
axios.post("http://localhost:8080/brand_dome/axiosServlet","username=zhangsan").then(function (resp){alert(resp.data)})

3.4 JSON-概述和基础语法

概念:JavaScript Object Notation。JavaScript 对象表示法

  • 由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输
  • JSON基础语法

定义:

var 变量名 ={"key1": value1,"key2": value2,...};

value的数据类型为:

  • 数字 (整数或浮点数)

  • 字符串 (在双引号中)

  • 逻辑值 (true或false)

  • 数组 (在方括号中)

  • 对象 (在花括号中)

  • null

示例

var json ={"name": "zhangsan","age": 23,"addr":["厦门","四川","广州"]};

获取数据:

变量名.keyjson.name

3.5、JSON数据和Java对象的转换

请求数据:JSON字符串转为Java对象
响应数据:Java对象转为JSON字符串

在这里插入图片描述

  • Fastjson是阿里巴巴提供的一个Java语言编写的高性能功能完善的JSON库,是目前Java语言中最快的JSON库,可以实现Java对象和JSON字符串的相互转换。

使用:

  1. 导入坐标
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version>
</dependency>
  1. Java对象转JSON
String jsonStr = JSON.toJSONString(obj);
  1. JSON字符串转Java对象
User user = JSON.parseObject(jsonStr,User.class);
package com.huanglei.web.json;import com.alibaba.fastjson.JSON;public class jsondemo1 {public static void main(String[] args) {User user = new User("zhangsan","123456",11,21);//将对象转化为字符串String json = JSON.toJSONString(user);System.out.println(json);//将json字符串转化为对象User user = JSON.parseObject(json, User.class);System.out.println(user);}
}

四、VUE

4.1 Vue概念——基本入门

  • Vue 是一套前端框架,免除原生JavaScript中的DOM操作,简化书写
  • 基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上
  • 官网: https://cn.vuejs.org
    在这里插入图片描述

4.2 Vue的快速入门

  1. 新建HTML页面,引入 Vuejs文件
<script src="js/vue.js"></script>
  1. 在JS代码区域,创建Vue核心对象,进行数据绑定
new Vue({el:"#app",data(){return{username:""}}
});
  1. 编写视图
<div id ="app"><input name= "username" v-model="username">{{username}}
</div>
<div id="app">                                            <input type="text" name="username" v-model="username">{{username}}                                          
</div>                                                    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.<script>                                                  new Vue({                                             el:"#app",                                        data(){                                           return {                                      username:""                               }                                             }                                                 });                                                   
</script>                                                 

4.3 Vue常用指令

  • 指令:HTML 标签上带有 v- 前缀的特殊属性,不同指令具有不同含义。
  • 例如: v-if,v-for…

常用指令:

指令作用
v-bind为HTML标签绑定属性值,如设置 href,css样式等
V-model在表单元素上创建双向数据绑定
V-on为HTML标签绑定事件
v-if条件性的渲染某元素,判定为true时渲染,否则不渲染
v-else条件性的渲染某元素,判定为true时渲染,否则不渲染
V-else-if条件性的渲染某元素,判定为true时渲染,否则不渲染
V-show根据条件展示某元素,区别在于切换的是display属性的值
V-for列表渲染,遍历容器的元素或者对象的属性·

v-bind:

 <div id="app">                                                                      <input type="text" name="url" v-model="url">                                    <a v-bind:href="url">百度一下</a>                                                   <a :href="url">百度两下</a>                                                         </div>                                                                              <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>             <script>                                                                            new Vue({                                                                       el:"#app",                                                                  data(){                                                                     return {                                                                username:"",                                                        url:""                                                              }                                                                       }                                                                           });                                                                             </script>                                                                           

v-on:

        <input type="submit" value="不要点我" v-on:click="show()">                            </div>                                                                                <script src="./js/vue.js"></script>                                                       <script>                                                                                  new Vue({                                                                             el:"#app",                                                                        data:{                                                                            username:"",                                                                  url:""                                                                        }        ,                                                                        methods:{                                                                         show(){                                                                       alert("不要玷污了我")                                                           }                                                                             }                                                                                 })   ;                                                                                

v-for:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><!--v-model v-bind(可以省略) v-on(可以用@来代替)v-if v-if-else v-else v-show v-for--><div id="app"><input name="username" v-model="username" >{{username}}<input name="url" v-model="url" ><input name="count" v-model="count" ><a v-bind:href="url">小小点击跳转</a><input type="submit" value="不要点我" v-on:click="show()"><div v-if="count == 1"> 北京</div><div v-else-if="count == 2"> 陕西</div><div v-if="count == 3"> 四川</div><div v-for="addr in address">{{addr}}                    <br><hr></div><div v-for="(addrs,i) in address">{{i}}  -----     {{addrs}}<br><hr></div></div><script src="./js/vue.js"></script><script>new Vue({el:"#app",data:{username:"",url:"" ,address:["北京" , "上海"]    ,count:3}        ,methods:{show(){alert("不要玷污了我")}}})   ;
</script>
</body>
</html>

4.4 Vue生命周期

  • 生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法(钩子)
状态阶段周期
beforeCreate创建前
created创建后
beforeMount载入前
mounted载完成
beforeUpdate更新前
updated更新后
beforeDestroy销毁前
destroyed销毁后

在这里插入图片描述

  • mounted:挂载完成,Vue初始化成功,HTML页面渲染成功

发送异步请求,加载数据

用法:

new Vue({el:"#app",mounted:{alert("Vue加载完毕 , 进行异步请求加载数据")}
});

自己写的小练习:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div id="app"><input name="username" v-model="username" >{{username}}<input name="url" v-model="url" ><input name="count" v-model="count" ><a v-bind:href="url">小小点击跳转</a><input type="submit" value="不要点我" v-on:click="show()"><div v-if="count == 1"> 北京</div><div v-else-if="count == 2"> 陕西</div><div v-if="count == 3"> 四川</div><div v-for="addr in address">{{addr}}<br><hr></div><div v-for="(addrs,i) in address">{{i}}  -----     {{addrs}}<br><hr></div></div>
<script src="./js/vue.js"></script>
<script>new Vue({el:"#app",data:{username:"",url:"" ,address:["北京" , "上海"]    ,count:3}        ,methods:{show(){alert("不要玷污了我")}},mounted(){alert("Vue加载完毕 , 进行异步请求加载数据")}})   ;
</script>
</body>
</html>

五 Element

5.1 Element快速入门

  • 引入Element的css、js 和Vue.js
<script src="vue.js"></script>
<script src="element-ui/lib/indexjs"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
  • 创建Vue核心对象
<script>
new Vue({el:"#app"
})
</script>
  • 官网复制Element组件代码

5.2 Element布局

Element中有两种布局方式

  • Layout布局:通过基础的24分栏,迅速简便地创建布局
    在这里插入图片描述

  • Container布局容器:用于布局的容器组件,方便快速搭建页面的基本结构
    在这里插入图片描述

5.3 Element组件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/134178.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[管理与领导-96]:IT基层管理者 - 扩展技能 - 5 - 职场丛林法则 -10- 七分做,三分讲,完整汇报工作的艺术

目录 前言&#xff1a; 一、汇报工作的重要性 1.1 汇报的重要性&#xff1a;汇报工作是工作重要的一环 1.2 向上司汇报工作状态具有重要的意义 1.2 汇报工作存在一些误解 1.3 汇报工作中的下错误做法 1.4 汇报工作与做实际工作的关系 二、工作汇报的内容与艺术 2.1 工…

Hugging Face使用Stable diffusion Diffusers Transformers Accelerate Pipelines

Diffusers A library that offers an implementation of various diffusion models, including text-to-image models. 提供不同扩散模型的实现的库&#xff0c;代码上最简洁&#xff0c;国内的问题是 huggingface 需要翻墙。 Transformers A Hugging Face library that pr…

Ubuntu安装深度学习环境相关(yolov8-python部署)

Ubuntu安装深度学习环境相关(yolov8-python部署) 本文将从如下几个方面总结相关的工作过程&#xff1a; Ubuntu系统安装(联想小新pro16) 2.显卡驱动安装3.测试深度学习模型 1. Ubunut 系统安装 之前在台式机上安装过Ubuntu&#xff0c;以为再在笔记本上安装会是小菜一碟&…

C: . 与 -> 的区别

相同点&#xff1a; 功能相同&#xff1a;访问结构体或者类的成员。优先级相同。 不同点&#xff1a; 结构体变量用 . 来访问成员&#xff1b;结构体指针用 ->来访问成员&#xff1b; #include <stdio.h> #include<string.h> //首先定义结构体类型student&a…

查询IP地址可得到哪些信息

通过IP地址定位&#xff0c;可以获取一些基本的信息&#xff0c;包括以下内容&#xff1a; 1. 地理位置&#xff1a;你可以确定IP地址所在的地理位置&#xff0c;包括国家、州或省、城市和地理坐标。这通常是通过将IP地址与地理位置数据库进行匹配来实现的。 2. ISP&#xff…

MFC中的类继承图的基本框架

一、类继承关系 从图中可知&#xff0c;在MFC中大多数的类都派生于CObject类&#xff0c;它的主要作用是为子类提供一些基本的功能&#xff0c;这些派生类构成了MFC应用程序的基本框架&#xff0c;它们各自的功能描述如表1所示。 派生类 功能描述 CCmdTarget 用于处理用户请…

解决:Loading class `com.mysql.jdbc.Driver‘. This is deprecated.

1.在连接MySQL数据库时候会出现这个报错 Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver. The driver is automatically registered via the SPI and manual loading of the driver class is generally unneces…

基于频谱信息的图像去噪与恢复——使用约束最小二乘方滤波法

大家好&#xff0c;我是带我去滑雪&#xff01; 随着科学技术的不断发展&#xff0c;信息的交流和获取已不再受到时空的限制&#xff0c;已经成为人们日常生活中不可或缺的一部分。图像作为人类信息交流中的重要载体&#xff0c;起着不可替代的作用。频谱图像去噪复原方法是一种…

四:内核空间内存分配

目录 内核空间内存分配 伙伴系统 slab分配器 slab分配内存 主要结构体 vmalloc 内核空间内存分配 首先从内核空间开始&#xff0c;讲解内存管理模式。 主要分为三种方式&#xff1a; 伙伴系统 解决了外部碎片问题&#xff0c;针对大块内存分配设计 Linux中的内存管理…

水一下文章

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

selenium元素定位---ElementClickInterceptedException(元素点击交互异常)解决方法

1、异常原因 在编写ui自动化时&#xff0c;执行报错元素无法点击&#xff1a;ElementClickInterceptedException 具体报错&#xff1a;selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <span class"el-c…

Linux系统:OpenSSH7.4p升级到9.0p(服务器漏洞)

清华大学开源软件镜像站下载地址&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz 一、升级 0、安装Telnet &#xff08;1&#xff09;为防止安装失败&#xff0c;无法用ssh做远程连接&#xff0c;因此先安装telnet yum…

#循循渐进学51单片机#定时器与数码管#not.4

1、熟练掌握单片机定时器的原理和应用方法。 1&#xff09;时钟周期&#xff1a;单片机时序中的最小单位&#xff0c;具体计算的方法就是时钟源分之一。 2&#xff09;机器周期&#xff1a;我们的单片机完成一个操作的最短时间。 3)定时器&#xff1a;打开定时器“储存寄存器…

机器学习 day34(机器学习项目的完整周期、精确度和召回率、F1)

机器学习项目的完整周期 第一步&#xff0c;决定项目是什么。第二步&#xff0c;收集数据。第三步&#xff0c;训练模型&#xff0c;进行错误分析并改进模型&#xff0c;可能会回到第二步。第四步&#xff0c;当模型足够好后&#xff0c;部署在生产环境中&#xff0c;继续监控…

Arcgis提取点数据经纬度

Arcgis提取点数据经纬度 现已打开tiff影像和采样点的shape文件。目标是提取采样点的经纬度信息然后导出。 打开数据管理工具-要素-添加XY坐标 在点的图层上右击打开属性表时&#xff0c;经纬度信息已经添加到属性表中。 在属性表的左上角中点击导出&#xff0c;导出为文本文…

C# 模拟button按钮批量锁住与打开

项目需求&#xff1a; 当winform界面上存在多个按钮时&#xff08;大于2个&#xff09;&#xff0c;用户需求为当点击其中一个按钮后&#xff0c;其它按钮全部为禁用&#xff0c;当被点击的按钮后台逻辑执行完成后&#xff0c;再释放所有按钮。用户可再次点击其它按钮。 此案…

js实现websocket服务端和客户端

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

idea移除许可证

目录 一、介绍 二、操作步骤 一、介绍 当自己的idea日期要到了&#xff0c;又想续上&#xff0c;但是覆盖不了之前的日期&#xff0c;新的没办法生效。那么就要把原先的许可证先移除&#xff0c;再重新续上新的。 二、操作步骤 1.点击idea的右上角的这个展开 2.选择帮助…

【简单教程】利用Net2FTP构建免费个人网盘,实现便捷的文件管理

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…

tuxera ntfs 2023 破解安装包最新百度网盘下载地址

tuxera ntfs 2023 破解安装包是一个mac读写ntfs磁盘工具允许您访问&#xff0c;它允许您访问 NFTS 驱动器上的文件。该应用程序提供访问访问 Mac 设备中 NFTS 格式文件的驱动力&#xff0c;因此您有权基于格式文件进行无困难的访问 Windows 数据。在发生电力灾难或断电时使用防…