From f776b88a82e38df80508fce5e9fa03f39003a803 Mon Sep 17 00:00:00 2001 From: Xi Xu Date: Tue, 2 Jul 2024 08:59:55 +0800 Subject: [PATCH] a --- src/client/Client.java | 51 +++-------------- src/server/Server.java | 6 -- src/server/dao/UserDAO.java | 16 ------ src/server/thread/HandleThread.java | 28 +--------- src/server/tools/DBConnection.java | 9 +-- src/server/tools/Encoding.java | 4 +- src/server/tools/ExportToCSV.java | 13 +---- src/server/tools/ExportToXLS.java | 4 -- src/server/tools/crawling/Book.java | 62 --------------------- src/server/tools/crawling/CrawlerTools.java | 23 ++------ src/server/tools/crawling/Driver.java | 4 -- src/server/tools/crawling/NewsThread.java | 6 -- src/server/vo/User.java | 1 - 13 files changed, 22 insertions(+), 205 deletions(-) diff --git a/src/client/Client.java b/src/client/Client.java index fa2cc00..a5ee76a 100644 --- a/src/client/Client.java +++ b/src/client/Client.java @@ -29,13 +29,11 @@ import server.tools.crawling.Driver; import server.vo.User; public class Client { - public static Scanner scan = new Scanner(System.in); public static Socket socket; public static BufferedReader buf; public static PrintWriter write; public static User currentUser; - public static Connection con = null; public static PreparedStatement ps = null; public static Statement statement = null; @@ -44,20 +42,15 @@ public class Client { public static void main(String[] args) throws Exception, IOException { String ip = "127.0.0.1"; int port = 9999; - socket = new Socket(ip, port); - InputStream is = socket.getInputStream(); buf = new BufferedReader(new InputStreamReader(is, "utf-8")); - OutputStream os = socket.getOutputStream(); write = new PrintWriter(new OutputStreamWriter(os, "utf-8")); - if (!login()) { System.out.println("登录失败,欢迎下次访问"); System.exit(0); } - int choose = menu(); while (choose != 8) { switch (choose) { @@ -87,7 +80,6 @@ public class Client { } choose = menu(); } - close(); System.out.println("您已退出程序,欢迎下次使用!"); } @@ -99,25 +91,20 @@ public class Client { System.out.println("发送给服务器:" + sendData); write.println(sendData); write.flush(); - if (write != null) { + if (write != null) write.close(); - } - if (buf != null) { + if (buf != null) buf.close(); - } - if (socket != null) { + if (socket != null) socket.close(); - } } public static boolean login() throws Exception { for (int i = 1; i <= 3; i++) { - System.out.println("请输入用户名:"); String userName = scan.nextLine(); System.out.println("请输入密码:"); String passsord = scan.nextLine(); - Map map = new HashMap<>(); map.put("code", 0); User user = new User(); @@ -127,30 +114,20 @@ public class Client { map.put("data", gson.toJson(user)); String sendData = gson.toJson(map); System.out.println("发送给服务器:" + sendData); - /** - * 2.发送数据并接收服务器返回的数据(返回数据也有格式,如可以是以下格式: - * code:0或1,data:**** - * code=0表示登录失败,data中存放失败原因 - * code=1表示登录成功,data中放当前用户相关的信息(用户名,姓名,角色等) - */ String responseData = send(sendData); System.out.println("接收到服务器端的响应:" + responseData); - JsonElement element = JsonParser.parseString(responseData); JsonObject obj = element.getAsJsonObject(); int returnCode = obj.get("code").getAsInt(); String returnData = obj.get("data").getAsString(); - if (returnCode == 0) { + if (returnCode == 0) System.out.println("登录失败:" + returnData); - } else { + else { currentUser = gson.fromJson(returnData, User.class); return true; } - } - return false; - } public static int menu() { @@ -164,18 +141,14 @@ public class Client { System.out.println("6.导出到csv文件"); System.out.println("7.导出到xls文件"); System.out.println("8.退出"); - System.out.println("请输入选项(1-8):"); int choose = scan.nextInt(); - return choose; } public static String send(String data) throws Exception { - write.println(data); write.flush(); - String response = buf.readLine(); return response; } @@ -187,36 +160,30 @@ public class Client { statement = con.createStatement(); rs = statement.executeQuery(sql); while (rs.next()) { - Book book = new Book(); book.setTitle(rs.getString(1)); - book.setAuthor(rs.getString(2)); book.setPublisher(rs.getString(3)); book.setOldprice(rs.getDouble(4)); book.setNewprice(rs.getDouble(5)); - book.setHref(rs.getString(6)); - System.out.println(book.toString()); } } catch (Exception e) { e.printStackTrace(); } - if (rs != null) { + if (rs != null) try { rs.close(); } catch (Exception e) { e.printStackTrace(); } - } - if (statement != null) { + if (statement != null) try { statement.close(); } catch (Exception e) { e.printStackTrace(); } - } DBConnection.close(con, ps); } @@ -261,7 +228,6 @@ public class Client { con = DBConnection.getConnection(); String title, author, pubilsher, oldprice, newprice, url; String inquire = scan.next(); - try { ps = con.prepareStatement(sql); ps.setString(1, '%' + inquire + '%'); @@ -313,13 +279,12 @@ public class Client { System.out.println("4.退出"); System.out.println("请输入需要修改的图书的名称"); String title = scan.next(); - System.out.println("请输入选项(1-4):"); int n = 0; n = scan.nextInt(); String name = null; switch (n) { - case 1:// + case 1: System.out.println("请输入修改后的作责姓名"); name = scan.next(); sql = "update book set author = ? where title = ?"; diff --git a/src/server/Server.java b/src/server/Server.java index debf685..101837d 100644 --- a/src/server/Server.java +++ b/src/server/Server.java @@ -6,20 +6,14 @@ import java.net.Socket; import server.thread.HandleThread; public class Server { - public static void main(String[] args) throws Exception { - int port = 9999; ServerSocket server = new ServerSocket(port); System.out.println("服务器正在 9999 端口侦听客户端请求"); - while (true) { Socket socket = server.accept(); System.out.println("客户端" + socket.getInetAddress().getHostAddress() + "成功连接"); - new HandleThread(socket).start(); } - } - } diff --git a/src/server/dao/UserDAO.java b/src/server/dao/UserDAO.java index 6a032ed..4a8b85e 100644 --- a/src/server/dao/UserDAO.java +++ b/src/server/dao/UserDAO.java @@ -9,20 +9,13 @@ import server.tools.DBConnection; import server.vo.User; public class UserDAO { - public static User get(String userName) throws Exception { User user = null; - Connection con = DBConnection.getConnection(); - String sql = "select * from user where userName=?"; - PreparedStatement pst = con.prepareStatement(sql); - pst.setString(1, userName); - ResultSet rs = pst.executeQuery(); - while (rs.next()) { user = new User(); user.setUserName(rs.getString("userName")); @@ -30,22 +23,16 @@ public class UserDAO { user.setName(rs.getString("name")); user.setRole(rs.getString("role")); } - DBConnection.close(con, pst); return user; } public static ArrayList query(User userCondition) throws Exception { ArrayList list = new ArrayList(); - Connection con = DBConnection.getConnection(); - String sql = "*******"; - PreparedStatement pst = con.prepareStatement(sql); - ResultSet rs = pst.executeQuery(); - while (rs.next()) { User user = new User(); user.setUserName(rs.getString("userName")); @@ -54,10 +41,7 @@ public class UserDAO { user.setRole(rs.getString("role")); list.add(user); } - DBConnection.close(con, pst); - return list; } - } diff --git a/src/server/thread/HandleThread.java b/src/server/thread/HandleThread.java index d4020ce..60ec2e3 100644 --- a/src/server/thread/HandleThread.java +++ b/src/server/thread/HandleThread.java @@ -27,26 +27,21 @@ public class HandleThread extends Thread { super(); this.socket = socket; try { - InputStream is = socket.getInputStream(); buf = new BufferedReader(new InputStreamReader(is, "utf-8")); - OutputStream os = socket.getOutputStream(); write = new PrintWriter(new OutputStreamWriter(os, "utf-8")); } catch (Exception e) { e.printStackTrace(); } - } @Override public void run() { while (true) { try { - String receiveStr = buf.readLine(); System.out.println("接收到客户端的请求数据:" + receiveStr); - JsonElement element = JsonParser.parseString(receiveStr); JsonObject obj = element.getAsJsonObject(); int code = obj.get("code").getAsInt(); @@ -69,43 +64,27 @@ public class HandleThread extends Thread { System.out.println("命令无效!"); break; } - write.println(response); write.flush(); - } catch (Exception e) { e.printStackTrace(); } - } - System.out.println("客户端退出!"); - } public void close() throws Exception { - if (write != null) { + if (write != null) write.close(); - } - if (buf != null) { + if (buf != null) buf.close(); - } - if (socket != null) { + if (socket != null) socket.close(); - } } public String loginHandle(String str) throws Exception { - User loginUser = new Gson().fromJson(str, User.class); - User user = UserDAO.get(loginUser.getUserName()); - /** - * 根据dao执行结果,给出相应的响应,需要设计响应字符串的协议格式 如可以这样设计:*{code:0 - * 1,data:****} - * code=0表示登录失败,data中存放失败原因 code= - * 表示登录成功,data中放当前用户相关的信息(用户名,姓名,角色等) - */ String responseData = ""; if (user == null) { Map map = new HashMap<>(); @@ -127,5 +106,4 @@ public class HandleThread extends Thread { } return responseData; } - } diff --git a/src/server/tools/DBConnection.java b/src/server/tools/DBConnection.java index 5989efb..183cd76 100644 --- a/src/server/tools/DBConnection.java +++ b/src/server/tools/DBConnection.java @@ -10,7 +10,6 @@ public class DBConnection { private final static String url = "jdbc:mysql://localhost:3306/lda?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT"; private final static String user = "root"; private final static String password = "516849"; - static { try { Class.forName(driverName); @@ -31,14 +30,12 @@ public class DBConnection { public static void close(Connection con, PreparedStatement pst) { try { - if (pst != null) { + if (pst != null) pst.close(); - } - if (con != null) { + if (con != null) con.close(); - } } catch (SQLException e) { e.printStackTrace(); } } -} \ No newline at end of file +} diff --git a/src/server/tools/Encoding.java b/src/server/tools/Encoding.java index 9090005..be5a0f5 100644 --- a/src/server/tools/Encoding.java +++ b/src/server/tools/Encoding.java @@ -9,15 +9,13 @@ import java.security.NoSuchAlgorithmException; import java.util.Base64; public class Encoding { - public static String md5(String password) { try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] digest = md.digest(password.getBytes()); StringBuilder sb = new StringBuilder(); - for (byte b : digest) { + for (byte b : digest) sb.append(String.format("%02x", b)); - } return sb.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); diff --git a/src/server/tools/ExportToCSV.java b/src/server/tools/ExportToCSV.java index 942c89e..361ca99 100644 --- a/src/server/tools/ExportToCSV.java +++ b/src/server/tools/ExportToCSV.java @@ -10,34 +10,25 @@ import java.sql.Statement; public class ExportToCSV { public static void to() { String outputFile = "图书信息.csv"; - try (Connection connection = DBConnection.getConnection(); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM book"); FileWriter fileWriter = new FileWriter(outputFile)) { - - for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) { fileWriter.append(resultSet.getMetaData().getColumnName(i)); - if (i < resultSet.getMetaData().getColumnCount()) { + if (i < resultSet.getMetaData().getColumnCount()) fileWriter.append(","); - } } fileWriter.append("\n"); - - while (resultSet.next()) { for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) { fileWriter.append(resultSet.getString(i)); - if (i < resultSet.getMetaData().getColumnCount()) { + if (i < resultSet.getMetaData().getColumnCount()) fileWriter.append(","); - } } fileWriter.append("\n"); } - System.out.println("Data exported successfully!"); - } catch (SQLException | IOException e) { e.printStackTrace(); } diff --git a/src/server/tools/ExportToXLS.java b/src/server/tools/ExportToXLS.java index 151b38a..df1336f 100644 --- a/src/server/tools/ExportToXLS.java +++ b/src/server/tools/ExportToXLS.java @@ -15,10 +15,8 @@ public class ExportToXLS { try (Connection connection = DBConnection.getConnection(); Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery("SELECT * FROM book");) { - WritableWorkbook book = Workbook.createWorkbook(new File("图书信息.xls")); WritableSheet sheet = book.createSheet("sheet1", 0); - Label label = new Label(0, 0, "title"); sheet.addCell(label); label = new Label(1, 0, "author"); @@ -39,11 +37,9 @@ public class ExportToXLS { } i++; } - book.write(); book.close(); System.out.println("Data exported successfully!"); - } catch (Exception e) { e.printStackTrace(); } diff --git a/src/server/tools/crawling/Book.java b/src/server/tools/crawling/Book.java index 8c6fc54..0599752 100644 --- a/src/server/tools/crawling/Book.java +++ b/src/server/tools/crawling/Book.java @@ -1,7 +1,6 @@ package server.tools.crawling; public class Book { - private String title; private String author; private String publisher; @@ -21,110 +20,50 @@ public class Book { this.href = href; } - /** - * 获取 - * - * @return title - */ public String getTitle() { return title; } - /** - * 设置 - * - * @param title - */ public void setTitle(String title) { this.title = title; } - /** - * 获取 - * - * @return author - */ public String getAuthor() { return author; } - /** - * 设置 - * - * @param author - */ public void setAuthor(String author) { this.author = author; } - /** - * 获取 - * - * @return publisher - */ public String getPublisher() { return publisher; } - /** - * 设置 - * - * @param publisher - */ public void setPublisher(String publisher) { this.publisher = publisher; } - /** - * 获取 - * - * @return oldprice - */ public double getOldprice() { return oldprice; } - /** - * 设置 - * - * @param oldprice - */ public void setOldprice(double oldprice) { this.oldprice = oldprice; } - /** - * 获取 - * - * @return newprice - */ public double getNewprice() { return newprice; } - /** - * 设置 - * - * @param newprice - */ public void setNewprice(double newprice) { this.newprice = newprice; } - /** - * 获取 - * - * @return href - */ public String getHref() { return href; } - /** - * 设置 - * - * @param href - */ public void setHref(String href) { this.href = href; } @@ -133,5 +72,4 @@ public class Book { return "Book{title = " + title + ", author = " + author + ", publisher = " + publisher + ", oldprice = " + oldprice + ", newprice = " + newprice + ", href = " + href + "}"; } - } diff --git a/src/server/tools/crawling/CrawlerTools.java b/src/server/tools/crawling/CrawlerTools.java index bc7005a..e5232cd 100644 --- a/src/server/tools/crawling/CrawlerTools.java +++ b/src/server/tools/crawling/CrawlerTools.java @@ -12,55 +12,43 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class CrawlerTools { - public static String get(String urlStr, String charset) { StringBuffer buf = new StringBuffer(); HttpURLConnection con = null; InputStream in = null; BufferedReader read = null; try { - URL url = new URL(urlStr); con = (HttpURLConnection) url.openConnection(); - con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53"); int code = con.getResponseCode(); if (code == 200) { in = con.getInputStream(); - read = new BufferedReader(new InputStreamReader(in, charset)); String info = ""; - while ((info = read.readLine()) != null) { + while ((info = read.readLine()) != null) buf.append(info); - } - } else { + } else System.out.println("出错:" + code); - } - } catch (Exception e) { e.printStackTrace(); } finally { - if (read != null) { + if (read != null) try { read.close(); } catch (IOException e) { e.printStackTrace(); } - } - if (in != null) { + if (in != null) try { in.close(); } catch (IOException e) { e.printStackTrace(); } - } - if (con != null) { + if (con != null) con.disconnect(); - } - } - return buf.toString(); } @@ -81,5 +69,4 @@ public class CrawlerTools { } return url; } - } diff --git a/src/server/tools/crawling/Driver.java b/src/server/tools/crawling/Driver.java index 48de4b6..789f992 100644 --- a/src/server/tools/crawling/Driver.java +++ b/src/server/tools/crawling/Driver.java @@ -6,9 +6,7 @@ public class Driver { String url = "http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1"; Thread thread1 = new Thread(new NewsThread(url)); thread1.start(); - for (int i = 2; i <= 5; i++) { - String url2 = "http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-" + i; Thread thread2 = new Thread(new NewsThread(url2)); thread2.start(); @@ -17,7 +15,5 @@ public class Driver { } catch (Exception e) { e.printStackTrace(); } - } - } diff --git a/src/server/tools/crawling/NewsThread.java b/src/server/tools/crawling/NewsThread.java index d4722ec..2ae7549 100644 --- a/src/server/tools/crawling/NewsThread.java +++ b/src/server/tools/crawling/NewsThread.java @@ -20,20 +20,17 @@ public class NewsThread implements Runnable { @Override public void run() { - String content = CrawlerTools.get(urlPath, "GB2312"); Document doc = Jsoup.parse(content); Elements elements = doc.select(".bang_wrapper .bang_list_box ul li"); Connection con = DBConnection.getConnection(); PreparedStatement ps = null; - String sql = null; int index = 0; for (Element bookelement : elements) { index++; if (index >= 20) break; - String title = bookelement.select(".name a").text(); Elements publisherInfoElements = bookelement.select(".publisher_info"); String author = null; @@ -43,8 +40,6 @@ public class NewsThread implements Runnable { Element secondPublisherInfoElement = publisherInfoElements.get(1); author = firstPublisherInfoElement.select("a").text(); publisher = secondPublisherInfoElement.select("a").text(); - } else { - } String oprice = bookelement.select(".price_r").text(); String nprice = bookelement.select(".price_n").first().text(); @@ -78,5 +73,4 @@ public class NewsThread implements Runnable { e.printStackTrace(); } } - } diff --git a/src/server/vo/User.java b/src/server/vo/User.java index 9f1d3d6..7ac16e3 100644 --- a/src/server/vo/User.java +++ b/src/server/vo/User.java @@ -46,5 +46,4 @@ public class User { public String toString() { return userName + "\t" + password + "\t" + name + "\t" + role; } - }