阿帕奇官网:http://poi.apache.org/

POI3.17下载:http://poi.apache.org/download.html#POI-3.17

POI操作Excel教程(易百教程):https://www.yiibai.com/apache_poi/

1.数据库连接:https://www.cnblogs.com/feipengting/p/7606042.html

 package com.gdin.util;

 import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; public class DBUtil { private static Connection con;
private static String url;
private static String user;
private static String pwd; public DBUtil() { }
static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");/*如果是MySQL就改为Class.forName("com.mysql.jdbc.Driver");*/
InputStream is = DBUtil.class.getResourceAsStream("/db.properties");//db.properties 是一个用户配置文件传用户名密码
Properties prop=new Properties();
prop.load(is);
url=prop.getProperty("url");
user=prop.getProperty("user");
pwd=prop.getProperty("password");
con = DriverManager.getConnection(url, user, pwd);
}catch (Exception e){
System.out.println("数据库连接失败!");
}
}
public static ResultSet find(String sql){
con=getCon();
try {
Statement smt=con.createStatement();
ResultSet rs=smt.executeQuery(sql);
return rs;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
public static ResultSet find(String sql,Object ...pram){//...pram数组
con=getCon();
try {
PreparedStatement smt=con.prepareStatement(sql);
for (int i=0;i<pram.length;i++){
smt.setObject(i+1,pram[i]);
}
ResultSet rs=smt.executeQuery();
return rs;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
public static void insert(String sql,Object ...pram){//...pram数组
con=getCon();
try {
PreparedStatement smt=con.prepareStatement(sql);
for (int i=0;i<pram.length;i++){
smt.setObject(i+1,pram[i]);
}
smt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getCon(){
try {
if(con==null||con.isClosed())
con = DriverManager.getConnection(url, user, pwd);
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
}

重要的类以及接口:Workbook、Sheet、Row、Cell(对应HSSF和XSSF具体的类)

2.读取本地两种格式的Excel文件:

     public static void main(String[] args) throws Exception, IOException {
File file=new File("C:\\Users\\Administrator\\Desktop\\rjl.xlsx");
// File file=new File("C:\\Users\\Administrator\\Desktop\\123.xls"); Workbook workBook=null;
System.out.println(file.getName());
if(file.getName().endsWith("xlsx")){
workBook = new XSSFWorkbook(file);
}else if(file.getName().endsWith("xls")){
workBook=new HSSFWorkbook(new FileInputStream(file));
} Sheet sheet = workBook.getSheetAt(0);
int lastRowNum = sheet.getLastRowNum();
System.out.println(lastRowNum);
for(int i=0;i<=lastRowNum;i++){
Row row = sheet.getRow(i);
short lastCellNum = row.getLastCellNum();
for(int j=0;j<lastCellNum;j++){
if(row.getCell(j).getCellTypeEnum().equals(CellType.NUMERIC)){
System.out.print(row.getCell(j).getNumericCellValue()+"###");
}else if(row.getCell(j).getCellTypeEnum().equals(CellType.STRING)){
System.out.print(row.getCell(j).getStringCellValue()+"###");
}
}
System.out.println();
} }

3.poi操作Excel

  poi执行Excel中的公式:https://blog.csdn.net/l362696422/article/details/41700057

     public static void ExportExcel(){
Workbook wb=new XSSFWorkbook();
try {
FileOutputStream fos = new FileOutputStream(new File("C:\\Users\\Administrator\\Desktop\\信息.xlsx"));
//单元格样式
CellStyle cellStyle = wb.createCellStyle();
//字体
Font font = wb.createFont();
font.setItalic(true);
cellStyle.setBorderBottom(BorderStyle.DASHED);
cellStyle.setFont(font);
//设置旋转角度
cellStyle.setRotation((short) 270);
Sheet sheet = wb.createSheet("info");
Row row = sheet.createRow(0);
//设置该行的行高
row.setHeight((short) 800);
Cell cell = row.createCell(0);
cell.setCellValue("myvalue");
cell.setCellStyle(cellStyle);
//同上
CellStyle cellStyle2 = wb.createCellStyle();
Row row2 = sheet.createRow(1);
row2.setHeight((short) 1000);
Cell cell2 = row2.createCell(1);
cellStyle2.setRotation((short) 180);
cell2.setCellValue(true);
cell2.setCellStyle(cellStyle2);
//row行和cell列都是从0开始的
Cell cell3 = row2.createCell(7);
Cell cell4 = row2.createCell(8);
Cell cell5 = row2.createCell(9);
Cell cell6 = row2.createCell(10);
cell3.setCellValue(11);
cell4.setCellValue(22);
cell5.setCellValue(33);
//设置单元格的类型为:公式类型FORMULA
cell6.setCellType(CellType.FORMULA);
cell6.setCellFormula("SUM(H2:J2)");
//求出工作部所有的已设置使用公式的值
wb.getCreationHelper().createFormulaEvaluator().evaluateAll();
//在确定xls或xlsx对象类型时也可这样使用求公式值
//XSSFFormulaEvaluator.evaluateAllFormulaCells(wb);
//超链接
CellStyle style = wb.createCellStyle();
Font font2 = wb.createFont();
//设置字体格式为单下划线
font2.setUnderline(Font.U_SINGLE);
//font2.setColor(Font.COLOR_RED);
font2.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
style.setFont(font2);
Cell cell12 = row2.createCell(12);
cell12.setCellValue("跳转网站");
cell12.setCellStyle(style);
CreationHelper creationHelper = wb.getCreationHelper();
Hyperlink hyperlink = creationHelper.createHyperlink(HyperlinkType.URL);
hyperlink.setAddress("http://www.baidu.com");
//单元格设置超链接
cell12.setHyperlink(hyperlink);
//////////设置打印区域/////////
wb.setPrintArea(0, 0, 8, 0, 5);
sheet.getPrintSetup().setPaperSize(PrintSetup.A4_PAPERSIZE);
sheet.setDisplayGridlines(true);
sheet.setPrintGridlines(true); wb.write(fos);
fos.close();
wb.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }

4.poi导入Excel文件的兼容性以及数字自动加小数点的问题解决方案

  http://www.cnblogs.com/qiujiababy/p/9371786.html

  https://www.jianshu.com/p/a7eca64237bd

    /**
* 处理导入小数点
*/
public static String numOfImport(Cell cell) {
String value = cell.toString();
int i = cell.getCellType();
if (i == 1) {//字符串类型
return value;
} else {
String[] str = value.split("\\.");
if (str.length > 1) {
String str1 = str[1];
int m = Integer.parseInt(str1);
if (m == 0) {
return str[0];
} else {
return value;
}
}else{
return value;
}
}
}
<form name="form1" action="handle.jsp" method="post" enctype="multipart/form-data">
<input type="file" name="excel">
<input type="submit" value="上传"> </form>
 public static String ImportExcel(InputStream is){
Workbook workBook=null;
/*try {
System.out.println("create1");
workBook = new XSSFWorkbook(is); } catch (Exception e) {
System.out.println("create2");
try{
System.out.println("create22222");
workBook=new HSSFWorkbook(is);
System.out.println("nonono");
}catch(Exception e2){
System.out.println("无法处理!");
} }*/ try {
workBook=WorkbookFactory.create(is);
} catch (EncryptedDocumentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InvalidFormatException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} Sheet sheet = workBook.getSheetAt(0);
int lastRowNum = sheet.getLastRowNum();
System.out.println(lastRowNum);
for(int i=0;i<=lastRowNum;i++){
Row row = sheet.getRow(i);
short lastCellNum = row.getLastCellNum();
for(int j=0;j<lastCellNum;j++){
if(row.getCell(j).getCellTypeEnum().equals(CellType.NUMERIC)){
//System.out.print(row.getCell(j).getNumericCellValue()+"###");
System.out.print(numOfImport(row.getCell(j))+"###");
}else if(row.getCell(j).getCellTypeEnum().equals(CellType.STRING)){
System.out.print(row.getCell(j).getStringCellValue()+"###");
}
}
System.out.println();
}
System.out.println("nono33333333333");
try {
workBook.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("nono44444444444444");
return "ok";
}

使用apach的fileupload.jar包上传Excel,主要处理流(直接request.getInputStream()的流是没经过处理的,所以采用该jar包处理流问题)

<%
if(request.getMethod().equalsIgnoreCase("post")){ try {
FileItemFactory factory = new DiskFileItemFactory();
// 文件上传核心工具类
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(10 * 1024 * 1024); // 单个文件大小限制
upload.setSizeMax(50 * 1024 * 1024); // 总文件大小限制
upload.setHeaderEncoding("UTF-8"); // 对中文文件编码处理 if (ServletFileUpload.isMultipartContent(request)) {
List<FileItem> list = upload.parseRequest(request);
// 遍历
for (FileItem item : list) {
if (!item.isFormField()) {
TestExcel.ImportExcel(item.getInputStream());
}
}
}
out.print("成功");
} catch (Exception e) {
out.print("失败");
} } %>

5.导出(下载)Excel(jsp需要使用 response.reset() 来清除首部的空白行)

  https://www.cnblogs.com/zml-java/p/6146421.html

  https://blog.csdn.net/xingkong22star/article/details/39207015

<button><a href="exportExcel.jsp">下载</a></button>
<body>
<%
TestExcel.xiazai(response);
%>
</body>
 public static void xiazai(HttpServletResponse response) throws IOException{
Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet();
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("well down 我的测试结果"); ServletOutputStream outputStream = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment; filename="+URLEncoder.encode("容杰龙测试", "UTF-8")+".xlsx");
response.setContentType("application/msexcel");
wb.write(outputStream); outputStream.flush();
outputStream.close();
wb.close(); }

6.XSSFWorkbook、HSSFWorkbook导出EXCEL数据和图片

  https://blog.csdn.net/sun_cherish/article/details/79712975

  https://blog.csdn.net/chenssy/article/details/20524563

  https://blog.csdn.net/joyous/article/details/8780112

  https://blog.csdn.net/joyous/article/details/9664739

     public static void ExportPic() throws IOException{
XSSFWorkbook wb = new XSSFWorkbook();
String sheetName = "excel导出图片测试";
XSSFSheet RZ_TXSheet = wb.createSheet(sheetName); ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
//图片绝对路径
BufferedImage user_headImg = ImageIO.read(new File("C:\\Users\\Administrator\\Desktop\\boy.jpg"));
ImageIO.write(user_headImg, "jpg", byteArrayOut);
//sheet只能获取一个
XSSFDrawing patriarch = RZ_TXSheet.createDrawingPatriarch();
//设置图片的属性
XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 255, 255,(short) 0, 0, (short) 5, 8);
anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_DONT_RESIZE);
//插入图片
patriarch.createPicture(anchor,wb.addPicture(byteArrayOut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_JPEG)); FileOutputStream fileOut = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\测试Excel.xlsx");
// 写入excel文件
wb.write(fileOut);
wb.close();
}
     public static void ExportTest() throws FileNotFoundException, IOException{
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet xssfSheet = workbook.createSheet("abc");
XSSFDrawing patriarch = xssfSheet.createDrawingPatriarch();
XSSFClientAnchor anchor=new XSSFClientAnchor(0, 0, 255, 255, 2, 2, 8, 8);
byte[] by=IOUtils.toByteArray(new FileInputStream(new File("C:\\Users\\Administrator\\Desktop\\boy.jpg")));
int pictureIndex = workbook.addPicture(by, Workbook.PICTURE_TYPE_JPEG);
patriarch.createPicture(anchor, pictureIndex); FileOutputStream fileOutputStream = new FileOutputStream(new File("C:\\Users\\Administrator\\Desktop\\tupian.xlsx"));
workbook.write(fileOutputStream);
fileOutputStream.close();
workbook.close();
}

  多张图片示例:

     public static void ExportPic() throws IOException{
XSSFWorkbook wb = new XSSFWorkbook();
String sheetName = "excel导出图片测试";
XSSFSheet RZ_TXSheet = wb.createSheet(sheetName); ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
//图片绝对路径
BufferedImage user_headImg = ImageIO.read(new File("C:\\Users\\Administrator\\Desktop\\boy.jpg"));
ImageIO.write(user_headImg, "jpg", byteArrayOut);
//sheet只能获取一个
XSSFDrawing patriarch = RZ_TXSheet.createDrawingPatriarch();
//设置图片的属性
XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 255, 255,(short) 0, 0, (short) 5, 8);
anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_DONT_RESIZE);
//插入图片
patriarch.createPicture(anchor,wb.addPicture(byteArrayOut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_JPEG));
//插入第二张图片
int pictureIndex = wb.addPicture(byteArrayOut.toByteArray(), Workbook.PICTURE_TYPE_JPEG);
XSSFClientAnchor anchor2 = patriarch.createAnchor(0, 0, 255, 255, 1, 10, 10, 15);
patriarch.createPicture(anchor2, pictureIndex); FileOutputStream fileOut = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\测试Excel.xlsx");
// 写入excel文件
wb.write(fileOut);
wb.close();
}

7.poi获取excel中的图片

  https://blog.csdn.net/delongcpp/article/details/8833995

  https://www.cnblogs.com/colaclicken/p/8058719.html

    public static void ReadPictureFromExcel() throws Exception{
FileInputStream fileInputStream = new FileInputStream("C:\\Users\\Administrator\\Desktop\\tupian.xlsx");
Workbook workbook = WorkbookFactory.create(fileInputStream);
List<? extends PictureData> pictures = workbook.getAllPictures();
int i=1;
for (PictureData pictureData : pictures) {
byte[] bs = pictureData.getData();
FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\"+i+".jpg");
fileOutputStream.write(bs);
fileOutputStream.close();
i++;
}
}

8.poi读取一个excel中的图片到另一个excel中

     public static void main(String[] args) throws Exception, IOException {

         WritePicToExcel(ReadPictureFromExcel2());
} public static Map<String, XSSFPictureData> ReadPictureFromExcel2() throws Exception {
Map<String, XSSFPictureData> map = new HashMap<String, XSSFPictureData>();
FileInputStream fileInputStream = new FileInputStream("C:\\Users\\Administrator\\Desktop\\tupian.xlsx");
XSSFWorkbook workbook = (XSSFWorkbook) new XSSFWorkbook(fileInputStream);
// List<? extends PictureData> pictures = workbook.getAllPictures();
XSSFSheet sheet = workbook.getSheetAt(0);
List<POIXMLDocumentPart> list = sheet.getRelations();
System.out.println(list.size());
for (POIXMLDocumentPart poixmlDocumentPart : list) {
System.out.println(poixmlDocumentPart instanceof XSSFDrawing);
if (poixmlDocumentPart instanceof XSSFDrawing) {
XSSFDrawing drawing = (XSSFDrawing) poixmlDocumentPart;
List<XSSFShape> shapes = drawing.getShapes();
System.out.println("图的数量:"+shapes.size());
for (XSSFShape shape : shapes) {
XSSFPicture picture = (XSSFPicture) shape;
XSSFClientAnchor anchor = picture.getPreferredSize();
//CTMarker marker = anchor.getFrom();
//String key = marker.getRow() + "-" + marker.getCol();
String key =anchor.getDx1()+"-"+anchor.getDy1()+"-"+anchor.getDx2()+"-"+anchor.getDy2()+"-"+anchor.getCol1()+"-"+anchor.getRow1()+"-"+anchor.getCol2()+"-"+anchor.getRow2();
System.out.println(key);
//System.out.println(anchor.getDx1()+"-"+anchor.getDy1()+"-"+anchor.getDx2()+"-"+anchor.getDy2()+"-"+anchor.getCol1()+"-"+anchor.getRow1()+"-"+anchor.getCol2()+"-"+anchor.getRow2());
map.put(key, picture.getPictureData());
}
}
}
workbook.close();
return map;
} public static void WritePicToExcel(Map<String, XSSFPictureData> map) throws Exception{
FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\图片print.xlsx");
XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
XSSFSheet xssfSheet = xssfWorkbook.createSheet("print");
Set<Entry<String, XSSFPictureData>> entrySet = map.entrySet();
//注意!!!
XSSFDrawing patriarch = xssfSheet.createDrawingPatriarch();
for (Entry<String, XSSFPictureData> entry : entrySet) {
String key = entry.getKey();
System.out.println(key);
String[] strings = key.split("-");
//int row = Integer.parseInt(strings[0]);
//int column = Integer.parseInt(strings[1]);
//System.out.println("row:"+row+" column:"+column);
int dx1=Integer.parseInt(strings[0]);
int dy1=Integer.parseInt(strings[1]);
int dx2=Integer.parseInt(strings[2]);
int dy2=Integer.parseInt(strings[3]);
int col1=Integer.parseInt(strings[4]);
int row1=Integer.parseInt(strings[5]);
int col2=Integer.parseInt(strings[6]);
int row2=Integer.parseInt(strings[7]); XSSFPictureData xssfPictureData = entry.getValue();
//XSSFRow xssfRow = xssfSheet.createRow(row); //XSSFClientAnchor anchor=new XSSFClientAnchor();
XSSFClientAnchor anchor = new XSSFClientAnchor(dx1, dy1, dx2, dy2, col1, row1, col2, row2);
anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_DONT_RESIZE);
//anchor.setRow1(row);
//anchor.setCol1(column);
int pictureIndex=xssfWorkbook.addPicture(xssfPictureData.getData(), Workbook.PICTURE_TYPE_JPEG);
patriarch.createPicture(anchor, pictureIndex);
//FileOutputStream outputStream = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\图片print"+row+".jpg");
//outputStream.write(xssfPictureData.getData());
//outputStream.close();
}
xssfWorkbook.write(fileOutputStream);
fileOutputStream.close();
xssfWorkbook.close();
}

POI操作Excel(xls、xlsx)的更多相关文章

  1. POI操作Excel

    POI和Excel简介 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作 ...

  2. poi操作excel的基本用法

    这周公司要用excel作为数据存储格式做一个文具申请的功能,感觉以前本来很简单的功能变复杂了不少,但是还是记录一下一些excel的基本用法. 写在最前面:这里只介绍一些excel的基本存储方式(读,写 ...

  3. 自己封装的poi操作Excel工具类

    自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完 ...

  4. 自己的包poi操作Excel工具

    在前面的文章<使用poi读写Excel>中分享了一下poi操作Excel的简单演示样例.这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完毕的功能是:读取Excel.汇总E ...

  5. java使用POI操作excel文件,实现批量导出,和导入

    一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...

  6. java里poi操作excel的工具类(兼容各版本)

    转: java里poi操作excel的工具类(兼容各版本) 下面是文件内具体内容,文件下载: import java.io.FileNotFoundException; import java.io. ...

  7. 利用Apache POI操作Excel

    最近在做接口,有个功能是利用Excel导入汽车发动机所需零件信息到线上系统中.简单回顾一下之前学过的用java操作Excel. 1.maven配置Apache POI pom.xml中配置POIjar ...

  8. Java POI操作Excel注意点

    excel的行索引和列索引都是从0开始,而行号和列号都是从1开始 POI·操作excel基本上都是使用索引 XSSFRow对象的 row.getLastCellNum() 方法返回的是当前行最后有效列 ...

  9. 使用POI操作Excel时对事先写入模板的公式强制执行

    场景:POI读取Excel模板. 当使用POI操作Excel时,发现由POI生成的公式能够在打开Excel是被执行, 而事先手工写入Excel模板文件的公式则不自动被调用,必须手动双击该Cell才能生 ...

随机推荐

  1. linux添加磁盘空间

    首先你要关掉系统,把分配的硬盘空间变大,或者重新建立一个虚拟硬盘(这时下面的就不是sda了,而是sdb1了).这两种方法都可行,我都试过了.其次用root用户登录到你的linux系统,查看你系统的分区 ...

  2. Java 回调函数例子

    首先定义一个类Caller,按照上面的定义就是程序员A写的程序a,这个类里面保存一个接口引用. public class Caller { private MyCallInterface callIn ...

  3. M100(3) 无线数传

    本文记录了无线数传配合地面Windos qt写的飞机控制SDK软件的使用过程 使用了两种类型无线数传 遇到问题 1 界面卡死问题 1.1 数传问题 问题描述: 使用非官方数传,点击active按键和一 ...

  4. HTTPS_SSL apache认证、配置的、步骤以及原理说明

    一 .1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址,想要用系统的人没有证书就访问不了系统HTTP ...

  5. Mysql千万级数据删除实操-企业案例

    某天,在生产环节中,发现一个定时任务表,由于每次服务区查询这个表就会造成慢查询,给mysql服务器带来不少压力,经过分析,该表中绝对部分数据是垃圾数据 需要删除,约1050万行,由于缺乏处理大数据的额 ...

  6. 初学者在Mysql8.0连接时的几个常见基本问题

    最近在做一些java web整合时使用的最新版Mysql8.0.3,发现Mysql连接中的几个问题,总结如下: package db; import java.sql.*; public class ...

  7. PAT B1045 快速排序 (25 分)

    著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的 N 个互不相同的正整数的排列,请问 ...

  8. Python3入门(十一)——IO编程

    一.文件读写 python的文件操作和C是兼容的 1.读文本文件 读文件操作如下: f = open("F:/1.txt", "r") data = f.rea ...

  9. 《网络对抗》Exp7 网络欺诈防范

    20155336<网络对抗>Exp7 网络欺诈防范 实验内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 简单应用SET工具建立冒名网站 (1分 ...

  10. 20155338 《网络攻防》 Exp7 网络欺诈防范

    20155338 <网络攻防> Exp7 网络欺诈防范 基础问题回答 通常在什么场景下容易受到DNS spoof攻击 在一些公共场所,看到有免费的公用WIFI就想连的时候就容易受到 在日常 ...