logo

Java工商信息查询与存储系统:从后端到Web的实现

作者:菠萝爱吃肉2025.09.18 16:00浏览量:1

简介:本文详细阐述如何使用Java实现工商信息查询并存储到数据库,以及通过JavaWeb技术构建查询功能,覆盖数据获取、存储及Web查询全流程。

一、引言

工商信息查询是企业管理、市场分析、风险控制等场景中的重要环节。传统方式依赖人工查询或第三方API,存在效率低、成本高、数据更新不及时等问题。本文将介绍如何使用Java实现工商信息的自动化查询与存储,并通过JavaWeb技术构建查询功能,提升数据获取效率与可操作性。

二、Java实现工商信息查询与存储

1. 数据获取:调用工商信息API

工商信息通常通过政府公开平台或第三方数据服务商获取。以某工商信息API为例,需先注册账号并获取API Key,然后通过HTTP请求获取数据。

示例代码:使用HttpClient调用API

  1. import org.apache.http.HttpResponse;
  2. import org.apache.http.client.methods.HttpGet;
  3. import org.apache.http.impl.client.CloseableHttpClient;
  4. import org.apache.http.impl.client.HttpClients;
  5. import org.apache.http.util.EntityUtils;
  6. public class BusinessInfoFetcher {
  7. private static final String API_KEY = "your_api_key";
  8. private static final String API_URL = "https://api.example.com/business/info?keyword=";
  9. public String fetchBusinessInfo(String keyword) throws Exception {
  10. CloseableHttpClient httpClient = HttpClients.createDefault();
  11. HttpGet request = new HttpGet(API_URL + keyword + "&apiKey=" + API_KEY);
  12. HttpResponse response = httpClient.execute(request);
  13. String result = EntityUtils.toString(response.getEntity());
  14. httpClient.close();
  15. return result;
  16. }
  17. }

说明:

  • API Key:需替换为实际API Key。
  • 请求参数keyword为查询关键词(如企业名称)。
  • 响应处理EntityUtils.toString将响应体转为字符串,后续需解析为结构化数据。

2. 数据解析:JSON转Java对象

API返回的工商信息通常为JSON格式,需解析为Java对象以便存储。

示例代码:使用Jackson解析JSON

  1. import com.fasterxml.jackson.databind.ObjectMapper;
  2. public class BusinessInfo {
  3. private String name;
  4. private String creditCode;
  5. private String legalPerson;
  6. // 其他字段...
  7. // Getter & Setter...
  8. public static BusinessInfo fromJson(String json) throws Exception {
  9. ObjectMapper mapper = new ObjectMapper();
  10. return mapper.readValue(json, BusinessInfo.class);
  11. }
  12. }

说明:

  • ObjectMapper:Jackson库的核心类,用于JSON与Java对象互转。
  • 字段映射:JSON字段需与Java类属性名一致,或通过注解配置映射关系。

3. 数据存储:JDBC操作数据库

解析后的工商信息需存储到数据库(如MySQL)。使用JDBC实现数据插入。

示例代码:JDBC存储数据

  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.PreparedStatement;
  4. public class BusinessInfoStorage {
  5. private static final String DB_URL = "jdbc:mysql://localhost:3306/business_db";
  6. private static final String DB_USER = "root";
  7. private static final String DB_PASSWORD = "password";
  8. public void storeBusinessInfo(BusinessInfo info) throws Exception {
  9. Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
  10. String sql = "INSERT INTO business_info (name, credit_code, legal_person) VALUES (?, ?, ?)";
  11. PreparedStatement stmt = conn.prepareStatement(sql);
  12. stmt.setString(1, info.getName());
  13. stmt.setString(2, info.getCreditCode());
  14. stmt.setString(3, info.getLegalPerson());
  15. stmt.executeUpdate();
  16. stmt.close();
  17. conn.close();
  18. }
  19. }

说明:

  • 数据库配置:需替换为实际数据库URL、用户名和密码。
  • SQL注入防护:使用PreparedStatement防止SQL注入。
  • 异常处理:实际开发中需添加try-catch块处理异常。

三、JavaWeb实现查询功能

1. 前端页面:HTML+JSP

构建查询页面,用户输入关键词后提交至后端。

示例代码:query.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" %>
  2. <html>
  3. <head>
  4. <title>工商信息查询</title>
  5. </head>
  6. <body>
  7. <form action="query" method="post">
  8. <input type="text" name="keyword" placeholder="输入企业名称">
  9. <button type="submit">查询</button>
  10. </form>
  11. </body>
  12. </html>

2. 后端处理:Servlet

接收前端请求,查询数据库并返回结果。

示例代码:QueryServlet.java

  1. import javax.servlet.*;
  2. import javax.servlet.http.*;
  3. import javax.servlet.annotation.*;
  4. import java.io.IOException;
  5. import java.sql.*;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. @WebServlet("/query")
  9. public class QueryServlet extends HttpServlet {
  10. private static final String DB_URL = "jdbc:mysql://localhost:3306/business_db";
  11. private static final String DB_USER = "root";
  12. private static final String DB_PASSWORD = "password";
  13. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  14. String keyword = request.getParameter("keyword");
  15. List<BusinessInfo> results = queryBusinessInfo(keyword);
  16. request.setAttribute("results", results);
  17. request.getRequestDispatcher("/result.jsp").forward(request, response);
  18. }
  19. private List<BusinessInfo> queryBusinessInfo(String keyword) throws SQLException {
  20. List<BusinessInfo> list = new ArrayList<>();
  21. Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
  22. String sql = "SELECT * FROM business_info WHERE name LIKE ?";
  23. PreparedStatement stmt = conn.prepareStatement(sql);
  24. stmt.setString(1, "%" + keyword + "%");
  25. ResultSet rs = stmt.executeQuery();
  26. while (rs.next()) {
  27. BusinessInfo info = new BusinessInfo();
  28. info.setName(rs.getString("name"));
  29. info.setCreditCode(rs.getString("credit_code"));
  30. info.setLegalPerson(rs.getString("legal_person"));
  31. list.add(info);
  32. }
  33. rs.close();
  34. stmt.close();
  35. conn.close();
  36. return list;
  37. }
  38. }

说明:

  • 模糊查询:使用LIKE%实现关键词模糊匹配。
  • 结果转发:将查询结果转发至result.jsp显示。

3. 结果展示:JSP页面

动态生成查询结果表格。

示例代码:result.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" %>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  3. <html>
  4. <head>
  5. <title>查询结果</title>
  6. </head>
  7. <body>
  8. <table border="1">
  9. <tr>
  10. <th>企业名称</th>
  11. <th>信用代码</th>
  12. <th>法人</th>
  13. </tr>
  14. <c:forEach items="${results}" var="info">
  15. <tr>
  16. <td>${info.name}</td>
  17. <td>${info.creditCode}</td>
  18. <td>${info.legalPerson}</td>
  19. </tr>
  20. </c:forEach>
  21. </table>
  22. </body>
  23. </html>

四、优化与扩展

  1. 性能优化:使用连接池(如HikariCP)管理数据库连接。
  2. 数据缓存:对高频查询结果进行缓存(如Redis)。
  3. 异常处理:完善异常捕获与日志记录。
  4. 安全加固:对用户输入进行校验,防止XSS攻击。

五、总结

本文介绍了从Java调用工商信息API、解析数据、存储到数据库,到通过JavaWeb实现查询功能的完整流程。实际开发中需根据业务需求调整API选择、数据库设计及前端交互方式。

相关文章推荐

发表评论