{"id":114714,"date":"2026-10-09T22:49:39","date_gmt":"2026-10-09T14:49:39","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/114714.html"},"modified":"2026-10-09T22:49:39","modified_gmt":"2026-10-09T14:49:39","slug":"%e8%8b%8d%e7%a9%b9%e5%a4%96%e5%8d%96%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0-day01","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/114714.html","title":{"rendered":"\u82cd\u7a79\u5916\u5356\u5b66\u4e60\u7b14\u8bb0-DAY01"},"content":{"rendered":"<p>\u4e0b\u9762\u662f\u5728\u539f\u6709\u8bb2\u4e49\u57fa\u7840\u4e0a&#xff0c;\u52a0\u4e0a\u4e86\u4e00\u70b9\u81ea\u5df1\u7684\u5b9e\u9645\u8fd0\u884c\u622a\u56fe\u548c\u4e00\u4e9b\u95ee\u9898&#xff0c;\u4e5f\u5220\u9664\u4e86\u4e00\u4e9b\u539f\u8bb2\u4e49\u7684\u4e00\u4e9b\u4e1c\u897f\u3002<\/p>\n<h2 id=\"vjaGX\">DAY 01<\/h2>\n<h3 id=\"na2Q5\">1.\u6280\u672f\u9009\u578b<\/h3>\n<p id=\"ueeca5982\">1). \u7528\u6237\u5c42<\/p>\n<p id=\"u88d6eb75\">\u672c\u9879\u76ee\u4e2d\u5728\u6784\u5efa\u7cfb\u7edf\u7ba1\u7406\u540e\u53f0\u7684\u524d\u7aef\u9875\u9762&#xff0c;\u6211\u4eec\u4f1a\u7528\u5230H5\u3001Vue.js\u3001ElementUI\u3001apache echarts(\u5c55\u793a\u56fe\u8868)\u7b49\u6280\u672f\u3002\u800c\u5728\u6784\u5efa\u79fb\u52a8\u7aef\u5e94\u7528\u65f6&#xff0c;\u6211\u4eec\u4f1a\u4f7f\u7528\u5230\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u3002<\/p>\n<p id=\"u35f29102\">2). \u7f51\u5173\u5c42<\/p>\n<p id=\"u581c11d8\">Nginx\u662f\u4e00\u4e2a\u670d\u52a1\u5668&#xff0c;\u4e3b\u8981\u7528\u6765\u4f5c\u4e3aHttp\u670d\u52a1\u5668&#xff0c;\u90e8\u7f72\u9759\u6001\u8d44\u6e90&#xff0c;\u8bbf\u95ee\u6027\u80fd\u9ad8\u3002\u5728Nginx\u4e2d\u8fd8\u6709\u4e24\u4e2a\u6bd4\u8f83\u91cd\u8981\u7684\u4f5c\u7528&#xff1a; \u53cd\u5411\u4ee3\u7406\u548c\u8d1f\u8f7d\u5747\u8861&#xff0c; \u5728\u8fdb\u884c\u9879\u76ee\u90e8\u7f72\u65f6&#xff0c;\u8981\u5b9e\u73b0Tomcat\u7684\u8d1f\u8f7d\u5747\u8861&#xff0c;\u5c31\u53ef\u4ee5\u901a\u8fc7Nginx\u6765\u5b9e\u73b0\u3002<\/p>\n<p id=\"u2de6882b\">3). \u5e94\u7528\u5c42<\/p>\n<p id=\"ueaec8d53\">SpringBoot&#xff1a; \u5feb\u901f\u6784\u5efaSpring\u9879\u76ee, \u91c7\u7528 &#034;\u7ea6\u5b9a\u4f18\u4e8e\u914d\u7f6e&#034; \u7684\u601d\u60f3, \u7b80\u5316Spring\u9879\u76ee\u7684\u914d\u7f6e\u5f00\u53d1\u3002<\/p>\n<p id=\"u0b67f843\">SpringMVC&#xff1a;SpringMVC\u662fspring\u6846\u67b6\u7684\u4e00\u4e2a\u6a21\u5757&#xff0c;springmvc\u548cspring\u65e0\u9700\u901a\u8fc7\u4e2d\u95f4\u6574\u5408\u5c42\u8fdb\u884c\u6574\u5408&#xff0c;\u53ef\u4ee5\u65e0\u7f1d\u96c6\u6210\u3002<\/p>\n<p id=\"u37d28a8d\">Spring Task: \u7531Spring\u63d0\u4f9b\u7684\u5b9a\u65f6\u4efb\u52a1\u6846\u67b6\u3002<\/p>\n<p id=\"u4c450e46\">httpclient: \u4e3b\u8981\u5b9e\u73b0\u4e86\u5bf9http\u8bf7\u6c42\u7684\u53d1\u9001\u3002<\/p>\n<p id=\"u6a3acd41\">Spring Cache: \u7531Spring\u63d0\u4f9b\u7684\u6570\u636e\u7f13\u5b58\u6846\u67b6<\/p>\n<p id=\"ub77af6e4\">JWT: \u7528\u4e8e\u5bf9\u5e94\u7528\u7a0b\u5e8f\u4e0a\u7684\u7528\u6237\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u6807\u8bb0\u3002<\/p>\n<p id=\"u1abb04c7\">\u963f\u91cc\u4e91OSS: \u5bf9\u8c61\u5b58\u50a8\u670d\u52a1&#xff0c;\u5728\u9879\u76ee\u4e2d\u4e3b\u8981\u5b58\u50a8\u6587\u4ef6&#xff0c;\u5982\u56fe\u7247\u7b49\u3002<\/p>\n<p id=\"u24842b70\">Swagger&#xff1a; \u53ef\u4ee5\u81ea\u52a8\u7684\u5e2e\u52a9\u5f00\u53d1\u4eba\u5458\u751f\u6210\u63a5\u53e3\u6587\u6863&#xff0c;\u5e76\u5bf9\u63a5\u53e3\u8fdb\u884c\u6d4b\u8bd5\u3002<\/p>\n<p id=\"u6195bfa6\">POI: \u5c01\u88c5\u4e86\u5bf9Excel\u8868\u683c\u7684\u5e38\u7528\u64cd\u4f5c\u3002<\/p>\n<p id=\"u3423e299\">WebSocket: \u4e00\u79cd\u901a\u4fe1\u7f51\u7edc\u534f\u8bae&#xff0c;\u4f7f\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u4e4b\u95f4\u7684\u6570\u636e\u4ea4\u6362\u66f4\u52a0\u7b80\u5355&#xff0c;\u7528\u4e8e\u9879\u76ee\u7684\u6765\u5355\u3001\u50ac\u5355\u529f\u80fd\u5b9e\u73b0\u3002<\/p>\n<p id=\"u963c77e3\">4). \u6570\u636e\u5c42<\/p>\n<p id=\"u2e2f9ab4\">MySQL&#xff1a; \u5173\u7cfb\u578b\u6570\u636e\u5e93, \u672c\u9879\u76ee\u7684\u6838\u5fc3\u4e1a\u52a1\u6570\u636e\u90fd\u4f1a\u91c7\u7528MySQL\u8fdb\u884c\u5b58\u50a8\u3002<\/p>\n<p id=\"ue0daa610\">Redis&#xff1a; \u57fa\u4e8ekey-value\u683c\u5f0f\u5b58\u50a8\u7684\u5185\u5b58\u6570\u636e\u5e93, \u8bbf\u95ee\u901f\u5ea6\u5feb, \u7ecf\u5e38\u4f7f\u7528\u5b83\u505a\u7f13\u5b58\u3002<\/p>\n<p id=\"u67dd1a62\">Mybatis&#xff1a; \u672c\u9879\u76ee\u6301\u4e45\u5c42\u5c06\u4f1a\u4f7f\u7528Mybatis\u5f00\u53d1\u3002<\/p>\n<p id=\"ud9074bdc\">pagehelper: \u5206\u9875\u63d2\u4ef6\u3002<\/p>\n<p id=\"u6091edaa\">spring data redis: \u7b80\u5316java\u4ee3\u7801\u64cd\u4f5cRedis\u7684API\u3002<\/p>\n<p id=\"u0191e0d9\">5). \u5de5\u5177<\/p>\n<p id=\"u934747ed\">git: \u7248\u672c\u63a7\u5236\u5de5\u5177, \u5728\u56e2\u961f\u534f\u4f5c\u4e2d, \u4f7f\u7528\u8be5\u5de5\u5177\u5bf9\u9879\u76ee\u4e2d\u7684\u4ee3\u7801\u8fdb\u884c\u7ba1\u7406\u3002<\/p>\n<p id=\"uaab57300\">maven: \u9879\u76ee\u6784\u5efa\u5de5\u5177\u3002<\/p>\n<p id=\"ueac18e76\">junit&#xff1a;\u5355\u5143\u6d4b\u8bd5\u5de5\u5177&#xff0c;\u5f00\u53d1\u4eba\u5458\u529f\u80fd\u5b9e\u73b0\u5b8c\u6bd5\u540e&#xff0c;\u9700\u8981\u901a\u8fc7junit\u5bf9\u529f\u80fd\u8fdb\u884c\u5355\u5143\u6d4b\u8bd5\u3002<\/p>\n<p id=\"u3d12dbbc\">postman: \u63a5\u53e3\u6d4b\u5de5\u5177&#xff0c;\u6a21\u62df\u7528\u6237\u53d1\u8d77\u7684\u5404\u7c7bHTTP\u8bf7\u6c42&#xff0c;\u83b7\u53d6\u5bf9\u5e94\u7684\u54cd\u5e94\u7ed3\u679c\u3002<\/p>\n<p id=\"ub8dcd1d8\">\n<h3 id=\"K7CCb\">2.\u5f00\u53d1\u73af\u5883\u642d\u5efa<\/h3>\n<h4 id=\"cf53d789\">2.1\u524d\u7aef\u73af\u5883\u642d\u5efa<\/h4>\n<p id=\"u70bfec23\">\u4ece\u8d44\u6599\u4e2d\u627e\u5230\u524d\u7aef\u8fd0\u884c\u73af\u5883\u7684nginx&#xff0c;\u79fb\u52a8\u5230\u975e\u4e2d\u6587\u76ee\u5f55\u4e0b\u3002<\/p>\n<p id=\"u29f602d5\">\n<p id=\"u5f4290ea\">\u9047\u5230\u7684\u62a5\u9519&#xff0c;\u53cc\u51fb nginx.exe \u6ca1\u53cd\u5e94<\/p>\n<p id=\"u0d2ac964\">\u770b\u5230error.log\u91cc\u9762\u6709\u9519\u8bef\u65e5\u5fd7 &#xff1a;<\/p>\n<p id=\"u14f64fa3\">2026\/10\/06 12:01:06 [emerg] 5428#21892: CreateDirectory() &#034;E:\\\\onlylo_codes\\\\nginx-1.20.2\/temp\/client_body_temp&#034; failed (3: The system cannot find the path specified)<\/p>\n<p id=\"uf5f58a4c\">\n<p id=\"ucaebb5a3\">\u624b\u52a8\u521b\u5efa temp\/client_body_temp \u76ee\u5f55\u89e3\u51b3<\/p>\n<p id=\"u6a4b5bdb\">\n<p id=\"ubbca576a\">\u542f\u52a8\u540e\u8f93\u5165 http:\/\/localhost:80 \u770b\u5230<\/p>\n<p id=\"ubf4d8df1\">\n<p id=\"uc0f3cc53\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"917\" id=\"ue4cd20d2\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144933-6ac8fefd06429.png\" width=\"1909\" \/><\/p>\n<p id=\"u1ab71b47\">\n<h4 id=\"de8583a3\">2.2 \u540e\u7aef\u73af\u5883\u642d\u5efa<\/h4>\n<h5 id=\"af21d228\">\u719f\u6089\u9879\u76ee\u7ed3\u6784<\/h5>\n<p id=\"uc29ad418\">\u540e\u7aef\u5de5\u7a0b\u57fa\u4e8e maven \u8fdb\u884c\u9879\u76ee\u6784\u5efa&#xff0c;\u5e76\u4e14\u8fdb\u884c\u5206\u6a21\u5757\u5f00\u53d1\u3002<\/p>\n<p id=\"u92ac3d19\">1). \u4ece\u5f53\u5929\u8d44\u6599\u4e2d\u627e\u5230\u540e\u7aef\u521d\u59cb\u5de5\u7a0b&#xff1a;<\/p>\n<p id=\"u699d163f\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"205\" id=\"u426e22b1\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144933-6ac8fefddddcb.png\" width=\"784\" \/><\/p>\n<p id=\"u32062ca7\">2). \u7528 IDEA \u6253\u5f00\u521d\u59cb\u5de5\u7a0b&#xff0c;\u4e86\u89e3\u9879\u76ee\u7684\u6574\u4f53\u7ed3\u6784&#xff1a;<\/p>\n<p id=\"ue81d091a\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"174\" id=\"uc032d5e4\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144934-6ac8fefe0060a.png\" width=\"315\" \/><\/p>\n<p id=\"u10dda405\">\n<p id=\"ub2a75ea8\">\u5bf9\u5de5\u7a0b\u7684\u6bcf\u4e2a\u6a21\u5757\u4f5c\u7528\u8bf4\u660e&#xff1a;<\/p>\n<table id=\"ePvKR\">\n<tbody>\n<tr>\n<td>\n<p id=\"u5372bed8\">\u5e8f\u53f7<\/p>\n<\/td>\n<td>\n<p id=\"u03101c10\">\u540d\u79f0<\/p>\n<\/td>\n<td>\n<p id=\"uc24923de\">\u8bf4\u660e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u318f8bae\">1<\/p>\n<\/td>\n<td>\n<p id=\"u12b9c0a6\">sky-take-out<\/p>\n<\/td>\n<td>\n<p id=\"ud49f39e9\">maven\u7236\u5de5\u7a0b&#xff0c;\u7edf\u4e00\u7ba1\u7406\u4f9d\u8d56\u7248\u672c&#xff0c;\u805a\u5408\u5176\u4ed6\u5b50\u6a21\u5757<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u027cefdc\">2<\/p>\n<\/td>\n<td>\n<p id=\"u45af88cb\">sky-common<\/p>\n<\/td>\n<td>\n<p id=\"u01e23de6\">\u5b50\u6a21\u5757&#xff0c;\u5b58\u653e\u516c\u5171\u7c7b&#xff0c;\u4f8b\u5982&#xff1a;\u5de5\u5177\u7c7b\u3001\u5e38\u91cf\u7c7b\u3001\u5f02\u5e38\u7c7b\u7b49<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ue0188e28\">3<\/p>\n<\/td>\n<td>\n<p id=\"u01ab4ec4\">sky-pojo<\/p>\n<\/td>\n<td>\n<p id=\"u1380dfbf\">\u5b50\u6a21\u5757&#xff0c;\u5b58\u653e\u5b9e\u4f53\u7c7b\u3001VO\u3001DTO\u7b49<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u0b2a70c2\">4<\/p>\n<\/td>\n<td>\n<p id=\"u064ff92b\">sky-server<\/p>\n<\/td>\n<td>\n<p id=\"ubf5e2ad2\">\u5b50\u6a21\u5757&#xff0c;\u540e\u7aef\u670d\u52a1&#xff0c;\u5b58\u653e\u914d\u7f6e\u6587\u4ef6\u3001Controller\u3001Service\u3001Mapper\u7b49<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p id=\"u10d6cdf1\">\n<p id=\"u8fbdbda2\">\u8be6\u7ec6\u5206\u6790\u4e0a\u8ff0\u7684\u6bcf\u4e2a\u5b50\u6a21\u5757&#xff1a;<\/p>\n<ul>\n<li id=\"u692841b9\">sky-common: \u6a21\u5757\u4e2d\u5b58\u653e\u7684\u662f\u4e00\u4e9b\u516c\u5171\u7c7b&#xff0c;\u53ef\u4ee5\u4f9b\u5176\u4ed6\u6a21\u5757\u4f7f\u7528<\/li>\n<\/ul>\n<p id=\"u75521b30\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"430\" id=\"u51444745\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144934-6ac8fefe10bb4.png\" width=\"416\" \/><\/p>\n<table id=\"OHY2c\">\n<tbody>\n<tr>\n<td>\n<p id=\"u0f727725\">\u540d\u79f0<\/p>\n<\/td>\n<td>\n<p id=\"u4eacff5f\">\u8bf4\u660e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u67b7322a\">constant<\/p>\n<\/td>\n<td>\n<p id=\"uf0be92b3\">\u5b58\u653e\u76f8\u5173\u5e38\u91cf\u7c7b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"uf3adb509\">context<\/p>\n<\/td>\n<td>\n<p id=\"uf14aec56\">\u5b58\u653e\u4e0a\u4e0b\u6587\u7c7b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"udc302796\">enumeration<\/p>\n<\/td>\n<td>\n<p id=\"u30625ece\">\u9879\u76ee\u7684\u679a\u4e3e\u7c7b\u5b58\u50a8<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u7c5a881e\">exception<\/p>\n<\/td>\n<td>\n<p id=\"ue15c21cf\">\u5b58\u653e\u81ea\u5b9a\u4e49\u5f02\u5e38\u7c7b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u764c9949\">json<\/p>\n<\/td>\n<td>\n<p id=\"u78414ab8\">\u5904\u7406json\u8f6c\u6362\u7684\u7c7b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"uf7c99fff\">properties<\/p>\n<\/td>\n<td>\n<p id=\"ufa242ee7\">\u5b58\u653eSpringBoot\u76f8\u5173\u7684\u914d\u7f6e\u5c5e\u6027\u7c7b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u3bc62192\">result<\/p>\n<\/td>\n<td>\n<p id=\"ufe7d1f59\">\u8fd4\u56de\u7ed3\u679c\u7c7b\u7684\u5c01\u88c5<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u435d3c37\">utils<\/p>\n<\/td>\n<td>\n<p id=\"u5aa60bf3\">\u5e38\u7528\u5de5\u5177\u7c7b<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p id=\"ufefec3e6\">\n<ul>\n<li id=\"u09aa5584\">sky-pojo: \u6a21\u5757\u4e2d\u5b58\u653e\u7684\u662f\u4e00\u4e9b entity\u3001DTO\u3001VO<\/li>\n<\/ul>\n<p id=\"u4c5a1ec6\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"230\" id=\"u17d182f4\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144934-6ac8fefe25ac9.png\" width=\"325\" \/><\/p>\n<p id=\"u95350775\">\n<p id=\"u752db6e1\">\u5206\u6790sky-pojo\u6a21\u5757\u7684\u6bcf\u4e2a\u5305\u7684\u4f5c\u7528&#xff1a;<\/p>\n<table id=\"FVh9y\">\n<tbody>\n<tr>\n<td>\n<p id=\"ue4a5ab63\">\u540d\u79f0<\/p>\n<\/td>\n<td>\n<p id=\"ua4d8faaa\">\u8bf4\u660e<\/p>\n<\/td>\n<td>\n<p id=\"u7d961c0d\">\u6570\u636e\u6d41\u5411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ufdb6c074\">Entity<\/p>\n<\/td>\n<td>\n<p id=\"ub8846316\">\u5b9e\u4f53&#xff0c;\u901a\u5e38\u548c\u6570\u636e\u5e93\u4e2d\u7684\u8868\u5bf9\u5e94<\/p>\n<\/td>\n<td>\n<p id=\"ufa88ea1b\">Mapper\/DB \u2194 Service<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u1093c393\">DTO<\/p>\n<\/td>\n<td>\n<p id=\"u853ba140\">\u6570\u636e\u4f20\u8f93\u5bf9\u8c61&#xff0c;\u901a\u5e38\u7528\u4e8e\u7a0b\u5e8f\u4e2d\u5404\u5c42\u4e4b\u95f4\u4f20\u9012\u6570\u636e<\/p>\n<\/td>\n<td>\n<p id=\"ud3890c9a\">\u524d\u7aef \u2192 Controller \u2192 Service<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u6e301aa3\">VO<\/p>\n<\/td>\n<td>\n<p id=\"u90950662\">\u89c6\u56fe\u5bf9\u8c61&#xff0c;\u4e3a\u524d\u7aef\u5c55\u793a\u6570\u636e\u63d0\u4f9b\u7684\u5bf9\u8c61<\/p>\n<\/td>\n<td>\n<p id=\"u79d21d0d\">Service \u2192 Controller \u2192 \u524d\u7aef<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u79fd2b0c\">POJO<\/p>\n<\/td>\n<td>\n<p id=\"u6cd5d6f4\">\u666e\u901aJava\u5bf9\u8c61&#xff0c;\u53ea\u6709\u5c5e\u6027\u548c\u5bf9\u5e94\u7684getter\u548csetter<\/p>\n<\/td>\n<td>\n<p id=\"u186f68a6\">\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li id=\"u9ae27ea9\">sky-server: \u6a21\u5757\u4e2d\u5b58\u653e\u7684\u662f \u914d\u7f6e\u6587\u4ef6\u3001\u914d\u7f6e\u7c7b\u3001\u62e6\u622a\u5668\u3001controller\u3001service\u3001mapper\u3001\u542f\u52a8\u7c7b\u7b49\u5206\u6790sky-server\u6a21\u5757\u7684\u6bcf\u4e2a\u5305\u7684\u4f5c\u7528&#xff1a;<\/li>\n<\/ul>\n<p id=\"u86c5cb07\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"522\" id=\"u5fef960d\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144934-6ac8fefe35cca.png\" width=\"447\" \/><\/p>\n<table id=\"c5I0p\">\n<tbody>\n<tr>\n<td>\n<p id=\"ude0a3b64\">\u540d\u79f0<\/p>\n<\/td>\n<td>\n<p id=\"ud58047ad\">\u8bf4\u660e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ubbf53ad3\">config<\/p>\n<\/td>\n<td>\n<p id=\"u54e8f8bf\">\u5b58\u653e\u914d\u7f6e\u7c7b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u0f72a18d\">controller<\/p>\n<\/td>\n<td>\n<p id=\"u426c3b61\">\u5b58\u653econtroller\u7c7b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ua28bec00\">interceptor<\/p>\n<\/td>\n<td>\n<p id=\"ucb3d0dd1\">\u5b58\u653e\u62e6\u622a\u5668\u7c7b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u0c952253\">mapper<\/p>\n<\/td>\n<td>\n<p id=\"u26831799\">\u5b58\u653emapper\u63a5\u53e3<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u2585c88f\">service<\/p>\n<\/td>\n<td>\n<p id=\"u85008f69\">\u5b58\u653eservice\u7c7b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"uce4d19fb\">SkyApplication<\/p>\n<\/td>\n<td>\n<p id=\"uc74a3121\">\u542f\u52a8\u7c7b<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p id=\"u1a71dad9\">\n<h5 id=\"f8qfm\">\u6570\u636e\u5e93\u73af\u5883\u642d\u5efa<\/h5>\n<li id=\"u112ff9e0\">\u4ece\u8d44\u6599\u4e2d\u627e\u5230sky.sql<\/li>\n<p id=\"u09677d6e\">\u76f4\u63a5\u6253\u5f00sky.sql\u6587\u4ef6<\/p>\n<p id=\"u7f616936\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"97\" id=\"ua3e994ac\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144934-6ac8fefe4966e.png\" width=\"396\" \/><\/p>\n<p id=\"udd5a5d9f\">\u901a\u8fc7\u8be5sql\u6587\u4ef6\u76f4\u63a5\u53ef\u521b\u5efa\u6570\u636e\u5e93&#xff0c;\u6240\u4ee5\u4e0d\u9700\u8981\u63d0\u524d\u521b\u5efa\u6570\u636e\u5e93&#xff0c;\u76f4\u63a5\u5bfc\u5165\u8be5\u6587\u4ef6\u6267\u884c\u5373\u53ef\u3002<\/p>\n<p id=\"u497811c0\">\u53cc\u51fb\u6253\u5f00\u622a\u56fe\u5982\u4e0b&#xff1a;<\/p>\n<p id=\"u7327f920\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"583\" id=\"ub79b5816\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144934-6ac8fefe55f76.png\" width=\"1007\" \/><\/p>\n<li id=\"uf09751ed\">\u6267\u884csky.sql\u6587\u4ef6<\/li>\n<p id=\"ua4f5a129\">\u8fd9\u91cc\u6211\u7528\u7684\u662f Navicat<\/p>\n<p id=\"u25c41942\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"480\" id=\"u1f270ab5\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144934-6ac8fefe82217.png\" width=\"474\" \/><\/p>\n<p id=\"u59f8ed94\">\u6267\u884c\u5b8c\u6210\u540e&#xff0c;\u5171\u521b\u5efa\u51fa11\u5f20\u8868&#xff08;\u8bb0\u5f97navicat \u5237\u65b0\u4e00\u4e0b&#xff09;<\/p>\n<p id=\"u2176658d\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"317\" id=\"u123653d2\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144934-6ac8fefe96217.png\" width=\"464\" \/><\/p>\n<p id=\"uc33987e6\">\u6bcf\u5f20\u8868\u7684\u8bf4\u660e&#xff1a;<\/p>\n<table id=\"LIBz9\">\n<tbody>\n<tr>\n<td>\n<p id=\"u857a7cc4\">\u5e8f\u53f7<\/p>\n<\/td>\n<td>\n<p id=\"uc627ba74\">\u8868\u540d<\/p>\n<\/td>\n<td>\n<p id=\"ub691c840\">\u4e2d\u6587\u540d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ud6587d47\">1<\/p>\n<\/td>\n<td>\n<p id=\"ub387bec0\">employee<\/p>\n<\/td>\n<td>\n<p id=\"u9603a1da\">\u5458\u5de5\u8868<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u75279b17\">2<\/p>\n<\/td>\n<td>\n<p id=\"ud6abb599\">category<\/p>\n<\/td>\n<td>\n<p id=\"u6b1663b7\">\u5206\u7c7b\u8868<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ub63d9a67\">3<\/p>\n<\/td>\n<td>\n<p id=\"u6d78f173\">dish<\/p>\n<\/td>\n<td>\n<p id=\"u3871ba92\">\u83dc\u54c1\u8868<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u4d339e2f\">4<\/p>\n<\/td>\n<td>\n<p id=\"ua0f9c96c\">dish_flavor<\/p>\n<\/td>\n<td>\n<p id=\"uc98f98ad\">\u83dc\u54c1\u53e3\u5473\u8868<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u360cf386\">5<\/p>\n<\/td>\n<td>\n<p id=\"ubb84293a\">setmeal<\/p>\n<\/td>\n<td>\n<p id=\"u8094decb\">\u5957\u9910\u8868<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u2c4cc5f8\">6<\/p>\n<\/td>\n<td>\n<p id=\"u4c3975cf\">setmeal_dish<\/p>\n<\/td>\n<td>\n<p id=\"u6961a9d5\">\u5957\u9910\u83dc\u54c1\u5173\u7cfb\u8868<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u34b14e1f\">7<\/p>\n<\/td>\n<td>\n<p id=\"ua6a6066d\">user<\/p>\n<\/td>\n<td>\n<p id=\"uefee65ca\">\u7528\u6237\u8868<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"uaf92577c\">8<\/p>\n<\/td>\n<td>\n<p id=\"uc341e433\">address_book<\/p>\n<\/td>\n<td>\n<p id=\"u9a0a6362\">\u5730\u5740\u8868<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u1b25af2b\">9<\/p>\n<\/td>\n<td>\n<p id=\"ud3d389e5\">shopping_cart<\/p>\n<\/td>\n<td>\n<p id=\"u610886d3\">\u8d2d\u7269\u8f66\u8868<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u7e087059\">10<\/p>\n<\/td>\n<td>\n<p id=\"u7bc6eb80\">orders<\/p>\n<\/td>\n<td>\n<p id=\"u4914e7ce\">\u8ba2\u5355\u8868<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u80a5a246\">11<\/p>\n<\/td>\n<td>\n<p id=\"u99890b71\">order_detail<\/p>\n<\/td>\n<td>\n<p id=\"ufac0000f\">\u8ba2\u5355\u660e\u7ec6\u8868<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p id=\"uc5cdf3eb\">\u5bf9\u4e8e\u5177\u4f53\u7684\u8868\u7ed3\u6784, \u4ee5\u53ca\u8868\u7ed3\u6784\u4e2d\u7684\u5b57\u6bb5, \u53ef\u4ee5\u53c2\u8003\u8d44\u6599\u4e2d\u7684**\u300a\u6570\u636e\u5e93\u8bbe\u8ba1\u6587\u6863\u300b**&#xff0c;<\/p>\n<p id=\"u26574496\">\u90e8\u5206\u622a\u56fe\u5982\u4e0b&#xff1a;<\/p>\n<p id=\"u1847c473\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"1017\" id=\"ua433a7d3\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144934-6ac8fefea75ea.png\" width=\"1913\" \/><\/p>\n<h5 id=\"x1oDU\">\u524d\u540e\u7aef\u8054\u8c03<\/h5>\n<p id=\"u5ba4d772\">\u540e\u7aef\u7684\u521d\u59cb\u5de5\u7a0b\u4e2d\u5df2\u7ecf\u5b9e\u73b0\u4e86\u767b\u5f55\u529f\u80fd&#xff0c;\u76f4\u63a5\u8fdb\u884c\u524d\u540e\u7aef\u8054\u8c03\u6d4b\u8bd5\u5373\u53ef<\/p>\n<p id=\"u8f1258d4\">\u6211\u70b9\u51fb\u767b\u5f55\u540e\u6ca1\u53cd\u5e94&#xff0c;F12\u67e5\u770b\u7f51\u7edc<\/p>\n<p id=\"u779d1af9\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"517\" id=\"u021efb9a\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144935-6ac8feff68dcf.png\" width=\"1910\" \/><\/p>\n<p id=\"ud7301890\">\u60f3\u8d77\u6765\u540e\u7aef\u90fd\u6ca1\u542f\u52a8hhh<\/p>\n<p id=\"u23e67858\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"977\" id=\"uacab3769\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144935-6ac8feffc457e.png\" width=\"1900\" \/><\/p>\n<p id=\"uf79a5e81\">\u542f\u52a8\u540e\u518d\u6b21\u70b9\u51fb\u767b\u5f55<\/p>\n<p id=\"u0b053da1\">\u8fd8\u662f\u6ca1\u53cd\u5e94&#xff0c;\u540e\u7aef\u65e5\u5fd7&#xff1a;<\/p>\n<p id=\"u2a7ed1a6\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"1020\" id=\"ubbe276f5\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144936-6ac8ff00759a2.png\" width=\"1920\" \/><\/p>\n<p id=\"u08cc1329\">\u53d1\u73b0\u540e\u7aef\u6536\u5230\u4e86\u767b\u5f55\u8bf7\u6c42&#xff0c;\u4f46\u662f\u8fde\u63a5\u6570\u636e\u5e93\u62a5\u9519\u4e86&#xff0c;\u627e\u4e86\u4e0b\u53d1\u73b0\u662f\u914d\u7f6e\u6ca1\u4fee\u6539&#xff0c;\u4fee\u6539\u4e0bhost\u6539\u4e3a\u672c\u5730&#xff0c;password\u6539\u4e3a\u81ea\u5df1\u6570\u636e\u5e93\u7684<\/p>\n<p id=\"ubfe597c4\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"473\" id=\"ubf512dfc\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144937-6ac8ff0117bd6.png\" width=\"1898\" \/><\/p>\n<p id=\"u61712b51\">\u518d\u4e00\u6b21\u542f\u52a8&#xff0c;\u5bc6\u7801\u9519\u8bef\u3002\u3002\u3002<\/p>\n<p id=\"u93d06253\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"957\" id=\"u320f6237\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144937-6ac8ff0168c61.png\" width=\"1912\" \/><\/p>\n<p id=\"u4951ddf8\">\u8fd8\u633a\u5947\u602a\u7684&#xff0c;\u6570\u636e\u5e93\u91cc\u9762 \u548c \u8d1f\u8f7d\u662f\u4e00\u6837\u7684&#xff0c;<\/p>\n<p id=\"ua67bcb8c\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"132\" id=\"u6e2a115d\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144938-6ac8ff0222c45.png\" width=\"1087\" \/><\/p>\n<p id=\"u2d78aa1c\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"166\" id=\"u2e3004d8\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144938-6ac8ff023a753.png\" width=\"531\" \/><\/p>\n<p id=\"u8f869be0\">\u770b\u4e86\u4e0b\u767b\u5f55ServiceImpl<\/p>\n<p id=\"uc9afa565\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"330\" id=\"u0915258f\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144938-6ac8ff0248ff2.png\" width=\"1162\" \/><\/p>\n<p id=\"u377a2592\">\u539f\u6765\u8981md5\u52a0\u5bc6\u3002\u3002\u3002<\/p>\n<p id=\"uf5756b58\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"795\" id=\"u00d2d37d\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144938-6ac8ff0272fd8.png\" width=\"1245\" \/><\/p>\n<p id=\"u59c0387d\">\u53bb\u7f51\u4e0a\u627e\u4e86\u4e2amd5\u52a0\u5bc6&#xff0c;\u4fee\u6539\u4e86\u4e0b\u6570\u636e\u5e93&#xff0c;\u7ec8\u4e8e\u767b\u5f55\u6210\u529f\u3001<\/p>\n<p id=\"u0421a62f\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"124\" id=\"u106e4313\" src=\"2026-10-09nrgpjvpj5uc.png\" width=\"812\" \/><\/p>\n<p id=\"u544a1e4a\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"914\" id=\"uea4fcbf3\" src=\"2026-10-09i3xkhse305z.png\" width=\"1910\" \/><\/p>\n<p id=\"uada57f3b\">\u5b9e\u73b0\u601d\u8def&#xff1a;<\/p>\n<p id=\"u4605ea7c\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"222\" id=\"u7eb0426c\" src=\"2026-10-09tv5avxbrh2z.png\" width=\"865\" \/><\/p>\n<p id=\"uafbc191f\">1.Controller\u5c42<\/p>\n<p id=\"u181eb829\">\u5728sky-server\u6a21\u5757\u4e2d&#xff0c;com.sky.controller.admin.EmployeeController<\/p>\n<p>\/**<br \/>\n     * \u767b\u5f55<br \/>\n     *<br \/>\n     * &#064;param employeeLoginDTO<br \/>\n     * &#064;return<br \/>\n     *\/<br \/>\n    &#064;PostMapping(&#034;\/login&#034;)<br \/>\n    public Result&lt;EmployeeLoginVO&gt; login(&#064;RequestBody EmployeeLoginDTO employeeLoginDTO) {<br \/>\n        \/\/ DTO \u524d\u7aef\u4f20\u7ed9\u540e\u7aef\u7684\u5bf9\u8c61<br \/>\n        log.info(&#034;\u5458\u5de5\u767b\u5f55&#xff1a;{}&#034;, employeeLoginDTO);<br \/>\n        \/\/\u8c03\u7528service\u65b9\u6cd5\u67e5\u8be2\u6570\u636e\u5e93<br \/>\n        Employee employee &#061; employeeService.login(employeeLoginDTO);<\/p>\n<p>        \/\/\u767b\u5f55\u6210\u529f\u540e&#xff0c;\u751f\u6210jwt\u4ee4\u724c<br \/>\n        Map&lt;String, Object&gt; claims &#061; new HashMap&lt;&gt;();<br \/>\n        claims.put(JwtClaimsConstant.EMP_ID, employee.getId());<br \/>\n        String token &#061; JwtUtil.createJWT(<br \/>\n                jwtProperties.getAdminSecretKey(),<br \/>\n                jwtProperties.getAdminTtl(),<br \/>\n                claims);<br \/>\n        \/\/ VO \u7ed9\u524d\u7aef\u5c55\u793a\u7684\u6570\u636e<br \/>\n        EmployeeLoginVO employeeLoginVO &#061; EmployeeLoginVO.builder()<br \/>\n                .id(employee.getId())<br \/>\n                .userName(employee.getUsername())<br \/>\n                .name(employee.getName())<br \/>\n                .token(token)<br \/>\n                .build();<\/p>\n<p>        return Result.success(employeeLoginVO);<br \/>\n    } <\/p>\n<p id=\"u401fc924\">2.Service\u5c42<\/p>\n<p id=\"uf8fc10b3\">\u5728sky-server\u6a21\u5757\u4e2d&#xff0c;com.sky.service.impl.EmployeeServiceImpl<\/p>\n<p>\/**<br \/>\n     * \u5458\u5de5\u767b\u5f55<br \/>\n     *<br \/>\n     * &#064;param employeeLoginDTO<br \/>\n     * &#064;return<br \/>\n     *\/<br \/>\n    public Employee login(EmployeeLoginDTO employeeLoginDTO) {<br \/>\n        String username &#061; employeeLoginDTO.getUsername();<br \/>\n        String password &#061; employeeLoginDTO.getPassword();<\/p>\n<p>        \/\/1\u3001\u6839\u636e\u7528\u6237\u540d\u67e5\u8be2\u6570\u636e\u5e93\u4e2d\u7684\u6570\u636e<br \/>\n        Employee employee &#061; employeeMapper.getByUsername(username);<\/p>\n<p>        \/\/2\u3001\u5904\u7406\u5404\u79cd\u5f02\u5e38\u60c5\u51b5&#xff08;\u7528\u6237\u540d\u4e0d\u5b58\u5728\u3001\u5bc6\u7801\u4e0d\u5bf9\u3001\u8d26\u53f7\u88ab\u9501\u5b9a&#xff09;<br \/>\n        if (employee &#061;&#061; null) {<br \/>\n            \/\/\u8d26\u53f7\u4e0d\u5b58\u5728<br \/>\n            throw new AccountNotFoundException(MessageConstant.ACCOUNT_NOT_FOUND);<br \/>\n        }<\/p>\n<p>        \/\/\u5bc6\u7801\u6bd4\u5bf9<br \/>\n        if (!password.equals(employee.getPassword())) {<br \/>\n            \/\/\u5bc6\u7801\u9519\u8bef<br \/>\n            throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);<br \/>\n        }<\/p>\n<p>        if (employee.getStatus() &#061;&#061; StatusConstant.DISABLE) {<br \/>\n            \/\/\u8d26\u53f7\u88ab\u9501\u5b9a<br \/>\n            throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);<br \/>\n        }<\/p>\n<p>        \/\/3\u3001\u8fd4\u56de\u5b9e\u4f53\u5bf9\u8c61<br \/>\n        return employee;<br \/>\n    } <\/p>\n<p id=\"u94502a6c\">3.Mapper\u5c42<\/p>\n<p id=\"u6c34acc6\">\u5728sky-server\u6a21\u5757\u4e2d&#xff0c;com.sky.mapper.EmployeeMapper<\/p>\n<p>package com.sky.mapper;<\/p>\n<p>import com.sky.entity.Employee;<br \/>\nimport org.apache.ibatis.annotations.Mapper;<br \/>\nimport org.apache.ibatis.annotations.Select;<\/p>\n<p>&#064;Mapper<br \/>\npublic interface EmployeeMapper {<\/p>\n<p>    \/**<br \/>\n     * \u6839\u636e\u7528\u6237\u540d\u67e5\u8be2\u5458\u5de5<br \/>\n     * &#064;param username<br \/>\n     * &#064;return<br \/>\n     *\/<br \/>\n    &#064;Select(&#034;select * from employee where username &#061; #{username}&#034;)<br \/>\n    Employee getByUsername(String username);<\/p>\n<p>}<\/p>\n<h5 id=\"BPRTG\">nginx\u53cd\u5411\u4ee3\u7406\u548c\u8d1f\u8f7d\u5747\u8861<\/h5>\n<p id=\"ua8846319\">\u5bf9\u767b\u5f55\u529f\u80fd\u6d4b\u8bd5\u5b8c\u6bd5\u540e&#xff0c;\u63a5\u4e0b\u6765&#xff0c;\u6211\u4eec\u601d\u8003\u4e00\u4e2a\u95ee\u9898&#xff1a;\u524d\u7aef\u53d1\u9001\u7684\u8bf7\u6c42&#xff0c;\u662f\u5982\u4f55\u8bf7\u6c42\u5230\u540e\u7aef\u670d\u52a1\u7684&#xff1f;<\/p>\n<p id=\"uf2aa9613\">\u524d\u7aef\u8bf7\u6c42\u5730\u5740&#xff1a;http:\/\/localhost\/api\/employee\/login<\/p>\n<p id=\"u2e7acf72\">\u540e\u7aef\u63a5\u53e3\u5730\u5740&#xff1a;http:\/\/localhost:8080\/admin\/employee\/login<\/p>\n<p id=\"uab821ed5\">\n<p id=\"u625bce56\">\u524d\u7aef\u8bf7\u6c42\u5730\u5740<\/p>\n<p id=\"u8088500d\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"213\" id=\"t3Lbm\" src=\"2026-10-09yd40rzsgq22.png\" width=\"656\" \/><\/p>\n<p id=\"u4e036add\">\u540e\u7aef\u63a5\u53e3\u5730\u5740<\/p>\n<p id=\"ud3c09170\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"672\" id=\"ua3ddf795\" src=\"2026-10-09121fixp3jf4.png\" width=\"1075\" \/><\/p>\n<p id=\"u15612974\">\u5f88\u660e\u663e&#xff0c;\u4e24\u4e2a\u5730\u5740\u4e0d\u4e00\u81f4&#xff0c;\u90a3\u662f\u5982\u4f55\u8bf7\u6c42\u5230\u540e\u7aef\u670d\u52a1\u7684\u5462&#xff1f;<\/p>\n<p id=\"u9ab1fec8\">\n<p id=\"u01f1fe76\">1). nginx\u53cd\u5411\u4ee3\u7406<\/p>\n<p id=\"u902611cc\">nginx \u53cd\u5411\u4ee3\u7406&#xff0c;\u5c31\u662f\u5c06\u524d\u7aef\u53d1\u9001\u7684\u52a8\u6001\u8bf7\u6c42\u7531 nginx \u8f6c\u53d1\u5230\u540e\u7aef\u670d\u52a1\u5668<\/p>\n<p id=\"u2915e961\">nginx \u53cd\u5411\u4ee3\u7406\u7684\u597d\u5904&#xff1a;<\/p>\n<ul>\n<li id=\"u8d45eccc\">\u63d0\u9ad8\u8bbf\u95ee\u901f\u5ea6\u56e0\u4e3anginx\u672c\u8eab\u53ef\u4ee5\u8fdb\u884c\u7f13\u5b58&#xff0c;\u5982\u679c\u8bbf\u95ee\u7684\u540c\u4e00\u63a5\u53e3&#xff0c;\u5e76\u4e14\u505a\u4e86\u6570\u636e\u7f13\u5b58&#xff0c;nginx\u5c31\u76f4\u63a5\u53ef\u628a\u6570\u636e\u8fd4\u56de&#xff0c;\u4e0d\u9700\u8981\u771f\u6b63\u5730\u8bbf\u95ee\u670d\u52a1\u7aef&#xff0c;\u4ece\u800c\u63d0\u9ad8\u8bbf\u95ee\u901f\u5ea6\u3002<\/li>\n<li id=\"u7c02bd58\">\u8fdb\u884c\u8d1f\u8f7d\u5747\u8861\u6240\u8c13\u8d1f\u8f7d\u5747\u8861,\u5c31\u662f\u628a\u5927\u91cf\u7684\u8bf7\u6c42\u6309\u7167\u6211\u4eec\u6307\u5b9a\u7684\u65b9\u5f0f\u5747\u8861\u7684\u5206\u914d\u7ed9\u96c6\u7fa4\u4e2d\u7684\u6bcf\u53f0\u670d\u52a1\u5668\u3002<\/li>\n<li id=\"u6504faf4\">\u4fdd\u8bc1\u540e\u7aef\u670d\u52a1\u5b89\u5168\u56e0\u4e3a\u4e00\u822c\u540e\u53f0\u670d\u52a1\u5730\u5740\u4e0d\u4f1a\u66b4\u9732&#xff0c;\u6240\u4ee5\u4f7f\u7528\u6d4f\u89c8\u5668\u4e0d\u80fd\u76f4\u63a5\u8bbf\u95ee&#xff0c;\u53ef\u4ee5\u628anginx\u4f5c\u4e3a\u8bf7\u6c42\u8bbf\u95ee\u7684\u5165\u53e3&#xff0c;\u8bf7\u6c42\u5230\u8fbenginx\u540e\u8f6c\u53d1\u5230\u5177\u4f53\u7684\u670d\u52a1\u4e2d&#xff0c;\u4ece\u800c\u4fdd\u8bc1\u540e\u7aef\u670d\u52a1\u7684\u5b89\u5168\u3002<\/li>\n<\/ul>\n<p id=\"ud80bf6ba\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"428\" id=\"u93bb0883\" src=\"2026-10-09e31ndj2b3to.png\" width=\"439\" \/><\/p>\n<p id=\"uc46231d5\">nginx \u53cd\u5411\u4ee3\u7406\u7684\u914d\u7f6e\u65b9\u5f0f&#xff1a;<\/p>\n<p>server{<br \/>\n    listen 80;<br \/>\n    server_name localhost;<\/p>\n<p>    location \/api\/{<br \/>\n        proxy_pass http:\/\/localhost:8080\/admin\/; #\u53cd\u5411\u4ee3\u7406<br \/>\n    }<br \/>\n} <\/p>\n<p id=\"u2b775f1d\">proxy_pass&#xff1a;\u8be5\u6307\u4ee4\u662f\u7528\u6765\u8bbe\u7f6e\u4ee3\u7406\u670d\u52a1\u5668\u7684\u5730\u5740&#xff0c;\u53ef\u4ee5\u662f\u4e3b\u673a\u540d\u79f0&#xff0c;IP\u5730\u5740\u52a0\u7aef\u53e3\u53f7\u7b49\u5f62\u5f0f\u3002<\/p>\n<p id=\"u3bbe84d3\">\u5982\u4e0a\u4ee3\u7801\u7684\u542b\u4e49\u662f&#xff1a;\u76d1\u542c80\u7aef\u53e3\u53f7&#xff0c; \u7136\u540e\u5f53\u6211\u4eec\u8bbf\u95ee http:\/\/localhost:80\/api\/..\/..\u8fd9\u6837\u7684\u63a5\u53e3\u7684\u65f6\u5019&#xff0c;\u5b83\u4f1a\u901a\u8fc7 location \/api\/ {} \u8fd9\u6837\u7684\u53cd\u5411\u4ee3\u7406\u5230 http:\/\/localhost:8080\/admin\/\u4e0a\u6765\u3002<\/p>\n<p id=\"u7f6ac663\">\n<p id=\"u90924583\">\u63a5\u4e0b\u6765&#xff0c;\u8fdb\u5230nginx-1.20.2\\\\conf&#xff0c;\u6253\u5f00nginx\u914d\u7f6e<\/p>\n<p># \u53cd\u5411\u4ee3\u7406,\u5904\u7406\u7ba1\u7406\u7aef\u53d1\u9001\u7684\u8bf7\u6c42<br \/>\nlocation \/api\/ {<br \/>\n    proxy_pass   http:\/\/localhost:8080\/admin\/;<br \/>\n    #proxy_pass   http:\/\/webservers\/admin\/;<br \/>\n} <\/p>\n<p id=\"u5d5c8a30\">\u5f53\u5728\u8bbf\u95eehttp:\/\/localhost\/api\/employee\/login&#xff0c;nginx\u63a5\u6536\u5230\u8bf7\u6c42\u540e\u8f6c\u5230http:\/\/localhost:8080\/admin\/&#xff0c;\u6545\u6700\u7ec8\u7684\u8bf7\u6c42\u5730\u5740\u4e3ahttp:\/\/localhost:8080\/admin\/employee\/login&#xff0c;\u548c\u540e\u53f0\u670d\u52a1\u7684\u8bbf\u95ee\u5730\u5740\u4e00\u81f4\u3002<\/p>\n<p id=\"uf4502b27\">\n<p id=\"u46d851d9\">2). nginx \u8d1f\u8f7d\u5747\u8861<\/p>\n<p id=\"uf613748b\">\u5f53\u5982\u679c\u670d\u52a1\u4ee5\u96c6\u7fa4\u7684\u65b9\u5f0f\u8fdb\u884c\u90e8\u7f72\u65f6&#xff0c;\u90a3nginx\u5728\u8f6c\u53d1\u8bf7\u6c42\u5230\u670d\u52a1\u5668\u65f6\u5c31\u9700\u8981\u505a\u76f8\u5e94\u7684\u8d1f\u8f7d\u5747\u8861\u3002\u5176\u5b9e&#xff0c;\u8d1f\u8f7d\u5747\u8861\u4ece\u672c\u8d28\u4e0a\u6765\u8bf4\u4e5f\u662f\u57fa\u4e8e\u53cd\u5411\u4ee3\u7406\u6765\u5b9e\u73b0\u7684&#xff0c;\u6700\u7ec8\u90fd\u662f\u8f6c\u53d1\u8bf7\u6c42\u3002<\/p>\n<p id=\"ud751fe64\">\n<p id=\"u60ae6f23\">\u95ee\u9898&#xff1a; nginx\u5b9e\u9645\u5f00\u53d1\u4e2d\u90e8\u7f72\u5728\u54ea\u91cc&#xff0c;\u5ba2\u6237\u7aef\u5417<\/p>\n<p id=\"u32c141ef\">deepseek: Nginx \u5728\u5b9e\u9645\u5f00\u53d1\u4e2d&#xff0c;\u4e00\u5b9a\u662f\u90e8\u7f72\u5728\u670d\u52a1\u7aef&#xff08;\u6216\u8005\u66f4\u51c6\u786e\u5730\u8bf4&#xff0c;\u662f\u670d\u52a1\u7aef\u7684\u57fa\u7840\u8bbe\u65bd\u5c42&#xff09;<\/p>\n<p id=\"u4c261d8b\">\u5f00\u53d1\u73af\u5883&#xff08;\u4f60\u73b0\u5728\u7684\u72b6\u6001&#xff09;&#xff1a;<\/p>\n<p id=\"u29232ef2\">\u6d4f\u89c8\u5668 (\u5ba2\u6237\u7aef)<\/p>\n<p id=\"uef9d4ae0\">\u2193 \u8bf7\u6c42 http:\/\/localhost\/api\/employee\/login (\u7aef\u53e380)<\/p>\n<p id=\"u8ef8d942\">Nginx (\u90e8\u7f72\u5728\u4f60\u7684Windows\u7535\u8111\u4e0a&#xff0c;\u6216Linux\u865a\u62df\u673a\u4e2d)<\/p>\n<p id=\"uf4620d40\">\u2193 \u53cd\u5411\u4ee3\u7406&#xff0c;\u8d1f\u8f7d\u5747\u8861<\/p>\n<p id=\"u87fe2e42\">Spring Boot \u540e\u7aef\u96c6\u7fa4 (\u90e8\u7f72\u5728\u672c\u5730IDEA&#xff0c;\u7aef\u53e38080\u30018081\u7b49)<\/p>\n<p id=\"u16220209\">\u5b9e\u9645\u751f\u4ea7\u73af\u5883&#xff08;\u771f\u5b9e\u4e0a\u7ebf&#xff09;&#xff1a;<\/p>\n<p id=\"u9e1dd62a\">\u7528\u6237\u624b\u673a\/\u6d4f\u89c8\u5668 (\u5ba2\u6237\u7aef)<\/p>\n<p id=\"u43355010\">\u2193 \u8bf7\u6c42 https:\/\/api.changqiong.com\/api\/employee\/login (\u516c\u7f51\u57df\u540d)<\/p>\n<p id=\"u3008421a\">\u4e91\u670d\u52a1\u5668 (\u516c\u7f51IP) \u4e0a\u7684 Nginx (\u76d1\u542c80\/443\u7aef\u53e3)<\/p>\n<p id=\"u3eaa5fe5\">\u2193 \u8d1f\u8f7d\u5747\u8861<\/p>\n<p id=\"u70d58eef\">\u5185\u7f51\u670d\u52a1\u5668\u96c6\u7fa4 (\u591a\u53f0Linux\u670d\u52a1\u5668&#xff0c;\u8fd0\u884cSpring Boot Jar\u5305&#xff0c;\u7aef\u53e38080)<\/p>\n<p id=\"uf6685837\">nginx \u8d1f\u8f7d\u5747\u8861\u7684\u914d\u7f6e\u65b9\u5f0f&#xff1a;<\/p>\n<p>upstream webservers{<br \/>\n    server 192.168.100.128:8080;<br \/>\n    server 192.168.100.129:8080;<br \/>\n}<br \/>\nserver{<br \/>\n    listen 80;<br \/>\n    server_name localhost;<\/p>\n<p>    location \/api\/{<br \/>\n        proxy_pass http:\/\/webservers\/admin;#\u8d1f\u8f7d\u5747\u8861<br \/>\n    }<br \/>\n} <\/p>\n<p id=\"u32ae907f\">upstream&#xff1a;\u5982\u679c\u4ee3\u7406\u670d\u52a1\u5668\u662f\u4e00\u7ec4\u670d\u52a1\u5668\u7684\u8bdd&#xff0c;\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528upstream\u6307\u4ee4\u914d\u7f6e\u540e\u7aef\u670d\u52a1\u5668\u7ec4\u3002<\/p>\n<p id=\"uaa40bbb0\">\u5982\u4e0a\u4ee3\u7801\u7684\u542b\u4e49\u662f&#xff1a;\u76d1\u542c80\u7aef\u53e3\u53f7&#xff0c; \u7136\u540e\u5f53\u6211\u4eec\u8bbf\u95ee http:\/\/localhost:80\/api\/..\/..\u8fd9\u6837\u7684\u63a5\u53e3\u7684\u65f6\u5019&#xff0c;\u5b83\u4f1a\u901a\u8fc7 location \/api\/ {} \u8fd9\u6837\u7684\u53cd\u5411\u4ee3\u7406\u5230 http:\/\/webservers\/admin&#xff0c;\u6839\u636ewebservers\u540d\u79f0\u627e\u5230\u4e00\u7ec4\u670d\u52a1\u5668&#xff0c;\u6839\u636e\u8bbe\u7f6e\u7684\u8d1f\u8f7d\u5747\u8861\u7b56\u7565(\u9ed8\u8ba4\u662f\u8f6e\u8be2)\u8f6c\u53d1\u5230\u5177\u4f53\u7684\u670d\u52a1\u5668\u3002<\/p>\n<p id=\"ubbc1544e\">\u6ce8&#xff1a;upstream\u540e\u9762\u7684\u540d\u79f0\u53ef\u81ea\u5b9a\u4e49&#xff0c;\u4f46\u8981\u4e0a\u4e0b\u4fdd\u6301\u4e00\u81f4\u3002<\/p>\n<p id=\"u1201fa74\">\n<p id=\"u47e8190b\">nginx \u8d1f\u8f7d\u5747\u8861\u7b56\u7565&#xff1a;<\/p>\n<table id=\"rPt1c\">\n<tbody>\n<tr>\n<td>\n<p id=\"u3c689d0d\">\u540d\u79f0<\/p>\n<\/td>\n<td>\n<p id=\"u6d342b7a\">\u8bf4\u660e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u8a94e6b6\">\u8f6e\u8be2<\/p>\n<\/td>\n<td>\n<p id=\"ua5bdff65\">\u9ed8\u8ba4\u65b9\u5f0f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ufaedd2ef\">weight<\/p>\n<\/td>\n<td>\n<p id=\"uae1f0ee9\">\u6743\u91cd\u65b9\u5f0f&#xff0c;\u9ed8\u8ba4\u4e3a1&#xff0c;\u6743\u91cd\u8d8a\u9ad8&#xff0c;\u88ab\u5206\u914d\u7684\u5ba2\u6237\u7aef\u8bf7\u6c42\u5c31\u8d8a\u591a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u9a4ba61d\">ip_hash<\/p>\n<\/td>\n<td>\n<p id=\"u54af5efb\">\u4f9d\u636eip\u5206\u914d\u65b9\u5f0f&#xff0c;\u8fd9\u6837\u6bcf\u4e2a\u8bbf\u5ba2\u53ef\u4ee5\u56fa\u5b9a\u8bbf\u95ee\u4e00\u4e2a\u540e\u7aef\u670d\u52a1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u0142792e\">least_conn<\/p>\n<\/td>\n<td>\n<p id=\"u015782de\">\u4f9d\u636e\u6700\u5c11\u8fde\u63a5\u65b9\u5f0f&#xff0c;\u628a\u8bf7\u6c42\u4f18\u5148\u5206\u914d\u7ed9\u8fde\u63a5\u6570\u5c11\u7684\u540e\u7aef\u670d\u52a1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u98941e9a\">url_hash<\/p>\n<\/td>\n<td>\n<p id=\"ue6f7de67\">\u4f9d\u636eurl\u5206\u914d\u65b9\u5f0f&#xff0c;\u8fd9\u6837\u76f8\u540c\u7684url\u4f1a\u88ab\u5206\u914d\u5230\u540c\u4e00\u4e2a\u540e\u7aef\u670d\u52a1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u07b262f1\">fair<\/p>\n<\/td>\n<td>\n<p id=\"u5e57c76c\">\u4f9d\u636e\u54cd\u5e94\u65f6\u95f4\u65b9\u5f0f&#xff0c;\u54cd\u5e94\u65f6\u95f4\u77ed\u7684\u670d\u52a1\u5c06\u4f1a\u88ab\u4f18\u5148\u5206\u914d<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p id=\"ucbea9700\">\u5177\u4f53\u914d\u7f6e\u65b9\u5f0f&#xff1a;<\/p>\n<p id=\"udef94591\">\u8f6e\u8be2&#xff1a;<\/p>\n<p>upstream webservers{<br \/>\n    server 192.168.100.128:8080;<br \/>\n    server 192.168.100.129:8080;<br \/>\n} <\/p>\n<p id=\"u6b707699\">weight:<\/p>\n<p>upstream webservers{<br \/>\n    server 192.168.100.128:8080 weight&#061;90;<br \/>\n    server 192.168.100.129:8080 weight&#061;10;<br \/>\n} <\/p>\n<p id=\"u29f85b3a\">ip_hash:<\/p>\n<p>upstream webservers{<br \/>\n    ip_hash;<br \/>\n    server 192.168.100.128:8080;<br \/>\n    server 192.168.100.129:8080;<br \/>\n} <\/p>\n<p id=\"uea62e046\">least_conn:<\/p>\n<p>upstream webservers{<br \/>\n    least_conn;<br \/>\n    server 192.168.100.128:8080;<br \/>\n    server 192.168.100.129:8080;<br \/>\n} <\/p>\n<p id=\"uaa2399cb\">url_hash:<\/p>\n<p>upstream webservers{<br \/>\n    hash &amp;request_uri;<br \/>\n    server 192.168.100.128:8080;<br \/>\n    server 192.168.100.129:8080;<br \/>\n} <\/p>\n<p id=\"u45b712e1\">fair:<\/p>\n<p>upstream webservers{<br \/>\n    server 192.168.100.128:8080;<br \/>\n    server 192.168.100.129:8080;<br \/>\n    fair;<br \/>\n} <\/p>\n<h3 id=\"ftJxU\">3 \u5b8c\u5584\u767b\u5f55\u529f\u80fd<\/h3>\n<p id=\"u9f198177\">\u95ee\u9898&#xff1a;\u5458\u5de5\u8868\u4e2d\u7684\u5bc6\u7801\u662f\u660e\u6587\u5b58\u50a8&#xff0c;\u5b89\u5168\u6027\u592a\u4f4e\u3002&#xff08;\u65e9\u77e5\u9053\u770b\u5b8c\u518d\u5199\u7b14\u8bb0\u4e86hhh&#xff09;<\/p>\n<p id=\"uc9dd8fce\">\u89e3\u51b3\u601d\u8def&#xff1a;<\/p>\n<li id=\"u7e6f9491\">\u5c06\u5bc6\u7801\u52a0\u5bc6\u540e\u5b58\u50a8&#xff0c;\u63d0\u9ad8\u5b89\u5168\u6027<\/li>\n<li id=\"ue074ab44\">\u4f7f\u7528MD5\u52a0\u5bc6\u65b9\u5f0f\u5bf9\u660e\u6587\u5bc6\u7801\u52a0\u5bc6<\/li>\n<p id=\"u17d4be99\">\u5b9e\u73b0\u6b65\u9aa4&#xff1a;<\/p>\n<li id=\"u2e80ac9d\">\u4fee\u6539\u6570\u636e\u5e93\u4e2d\u660e\u6587\u5bc6\u7801&#xff0c;\u6539\u4e3aMD5\u52a0\u5bc6\u540e\u7684\u5bc6\u6587<\/li>\n<p id=\"u22a36a80\">\u6253\u5f00employee\u8868&#xff0c;\u4fee\u6539\u5bc6\u7801<\/p>\n<li id=\"ucdc23cd4\">\u4fee\u6539Java\u4ee3\u7801&#xff0c;\u524d\u7aef\u63d0\u4ea4\u7684\u5bc6\u7801\u8fdb\u884cMD5\u52a0\u5bc6\u540e\u518d\u8ddf\u6570\u636e\u5e93\u4e2d\u5bc6\u7801\u6bd4\u5bf9<\/li>\n<p id=\"u53209bb5\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"144\" id=\"u9bda32ed\" src=\"2026-10-09cwyazlwgkbh.png\" width=\"751\" \/><\/p>\n<p id=\"uc72f78e0\">\u6253\u5f00EmployeeServiceImpl.java&#xff0c;\u4fee\u6539\u6bd4\u5bf9\u5bc6\u7801<\/p>\n<p>\/**<br \/>\n     * \u5458\u5de5\u767b\u5f55<br \/>\n     *<br \/>\n     * &#064;param employeeLoginDTO<br \/>\n     * &#064;return<br \/>\n     *\/<br \/>\n    public Employee login(EmployeeLoginDTO employeeLoginDTO) {<\/p>\n<p>        \/\/1\u3001\u6839\u636e\u7528\u6237\u540d\u67e5\u8be2\u6570\u636e\u5e93\u4e2d\u7684\u6570\u636e<\/p>\n<p>        \/\/2\u3001\u5904\u7406\u5404\u79cd\u5f02\u5e38\u60c5\u51b5&#xff08;\u7528\u6237\u540d\u4e0d\u5b58\u5728\u3001\u5bc6\u7801\u4e0d\u5bf9\u3001\u8d26\u53f7\u88ab\u9501\u5b9a&#xff09;<br \/>\n        \/\/&#8230;&#8230;.<br \/>\n        \/\/\u5bc6\u7801\u6bd4\u5bf9<br \/>\n        \/\/ TODO \u540e\u671f\u9700\u8981\u8fdb\u884cmd5\u52a0\u5bc6&#xff0c;\u7136\u540e\u518d\u8fdb\u884c\u6bd4\u5bf9<br \/>\n        password &#061; DigestUtils.md5DigestAsHex(password.getBytes());<br \/>\n        if (!password.equals(employee.getPassword())) {<br \/>\n            \/\/\u5bc6\u7801\u9519\u8bef<br \/>\n            throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);<br \/>\n        }<\/p>\n<p>        \/\/&#8230;&#8230;..<\/p>\n<p>        \/\/3\u3001\u8fd4\u56de\u5b9e\u4f53\u5bf9\u8c61<br \/>\n        return employee;<br \/>\n    } <\/p>\n<h3 id=\"sV96l\">4. \u5bfc\u5165\u63a5\u53e3\u6587\u6863<\/h3>\n<p id=\"uc21b9936\">\u524d\u540e\u7aef\u5206\u79bb\u5f00\u53d1\u65b9\u5f0f\u8981\u6c42\u6211\u4eec\u4e4b\u524d\u9700\u8981\u5148\u5c06\u63a5\u53e3\u5b9a\u4e49\u597d&#xff0c;\u8fd9\u6837\u524d\u540e\u7aef\u4eba\u5458\u624d\u80fd\u5e76\u884c\u5f00\u53d1&#xff0c;\u6240\u4ee5&#xff0c;\u8fd9\u4e2a\u7ae0\u8282\u5c31\u9700\u8981\u5c06\u63a5\u53e3\u6587\u6863\u5bfc\u5165\u5230\u7ba1\u7406\u5e73\u53f0&#xff0c;\u4e3a\u6211\u4eec\u540e\u9762\u4e1a\u52a1\u5f00\u53d1\u505a\u597d\u51c6\u5907\u3002<\/p>\n<p id=\"udae7cf5b\">\u5176\u5b9e&#xff0c;\u5728\u771f\u5b9e\u7684\u4f01\u4e1a\u5f00\u53d1\u4e2d&#xff0c;\u63a5\u53e3\u8bbe\u8ba1\u8fc7\u7a0b\u5176\u5b9e\u662f\u4e00\u4e2a\u975e\u5e38\u6f2b\u957f\u7684\u8fc7\u7a0b&#xff0c;\u53ef\u80fd\u9700\u8981\u591a\u6b21\u5f00\u4f1a\u8ba8\u8bba\u8c03\u6574&#xff0c;\u751a\u81f3\u5728\u5f00\u53d1\u7684\u8fc7\u7a0b\u4e2d\u624d\u4f1a\u53d1\u73b0\u67d0\u4e9b\u63a5\u53e3\u5b9a\u4e49\u8fd8\u9700\u8981\u518d\u8c03\u6574&#xff0c;\u8fd9\u79cd\u60c5\u51b5\u5176\u5b9e\u662f\u975e\u5e38\u5e38\u89c1\u7684&#xff0c;\u4f46\u662f\u7531\u4e8e\u9879\u76ee\u65f6\u95f4\u539f\u56e0&#xff0c;\u6240\u4ee5\u9009\u62e9\u4e00\u6b21\u6027\u5bfc\u5165\u6240\u6709\u7684\u63a5\u53e3<\/p>\n<p id=\"uf9813dc3\">\n<h4 id=\"egZ0a\">4.1 \u524d\u540e\u7aef\u5206\u79bb\u5f00\u53d1\u6d41\u7a0b<\/h4>\n<p id=\"u8cf28f13\">\u7b2c\u4e00\u6b65&#xff1a;\u5b9a\u4e49\u63a5\u53e3&#xff0c;\u786e\u5b9a\u63a5\u53e3\u7684\u8def\u5f84\u3001\u8bf7\u6c42\u65b9\u5f0f\u3001\u4f20\u5165\u53c2\u6570\u3001\u8fd4\u56de\u53c2\u6570\u3002<\/p>\n<p id=\"udc756696\">\u7b2c\u4e8c\u6b65&#xff1a;\u524d\u7aef\u5f00\u53d1\u4eba\u5458\u548c\u540e\u7aef\u5f00\u53d1\u4eba\u5458\u5e76\u884c\u5f00\u53d1&#xff0c;\u540c\u65f6&#xff0c;\u4e5f\u53ef\u81ea\u6d4b\u3002<\/p>\n<p id=\"u844e9e9a\">\u7b2c\u4e09\u6b65&#xff1a;\u524d\u540e\u7aef\u4eba\u5458\u8fdb\u884c\u8fde\u8c03\u6d4b\u8bd5\u3002<\/p>\n<p id=\"ud1a7ab4a\">\u7b2c\u56db\u6b65&#xff1a;\u63d0\u4ea4\u7ed9\u6d4b\u8bd5\u4eba\u5458\u8fdb\u884c\u6700\u7ec8\u6d4b\u8bd5\u3002<\/p>\n<p id=\"u6d4fef39\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"272\" id=\"u13be5839\" src=\"2026-10-09mtgjhpuf3k1.png\" width=\"581\" \/><\/p>\n<h4 id=\"RKs1Z\">4.2 \u64cd\u4f5c\u6b65\u9aa4<\/h4>\n<p id=\"u758453fa\">\u5c06\u8bfe\u7a0b\u8d44\u6599\u4e2d\u63d0\u4f9b\u7684\u9879\u76ee\u63a5\u53e3\u5bfc\u5165YApi\u3002\u8bbf\u95ee\u5730\u5740&#xff1a;http:\/\/yapi.smart-xwork.cn\/<\/p>\n<p id=\"ua80917f4\">1). \u4ece\u8d44\u6599\u4e2d\u627e\u5230\u9879\u76ee\u63a5\u53e3\u6587\u4ef6<\/p>\n<p id=\"u2e9f7cbd\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"68\" id=\"u77f3dde5\" src=\"2026-10-09kwkmeanvv4j.png\" width=\"395\" \/><\/p>\n<p id=\"uc36b7ccb\">2). \u5bfc\u5165\u5230YApi\u5e73\u53f0&#xff08;\u6682\u65f6\u61d2\u5f97\u5bfc\u5165&#xff0c;\u6240\u4ee5\u6ca1\u6709\u622a\u56fe&#xff09;<\/p>\n<p id=\"ub29cc1dc\">\n<p id=\"u09859cd3\">\u5728YApi\u5e73\u53f0\u521b\u5efa\u51fa\u4e24\u4e2a\u9879\u76ee<\/p>\n<p id=\"u0a20c08b\">\u9009\u62e9\u82cd\u7a79\u5916\u5356-\u7ba1\u7406\u7aef\u63a5\u53e3.json\u5bfc\u5165<\/p>\n<p id=\"uf30e360d\">\u5bfc\u5165\u6210\u529f<\/p>\n<p id=\"u2b5322e6\">\u53e6\u4e00\u4e2a\u7528\u6237\u7aefjson\u6587\u4ef6\u4e5f\u6267\u884c\u76f8\u540c\u64cd\u4f5c\u3002<\/p>\n<p id=\"u524074cb\">\n<h3 id=\"E7CIj\">5. Swagger<\/h3>\n<h4 id=\"Ms2Wt\">5.1 \u4ecb\u7ecd<\/h4>\n<p id=\"u9bb51094\">Swagger \u662f\u4e00\u4e2a\u89c4\u8303\u548c\u5b8c\u6574\u7684\u6846\u67b6&#xff0c;\u7528\u4e8e\u751f\u6210\u3001\u63cf\u8ff0\u3001\u8c03\u7528\u548c\u53ef\u89c6\u5316 RESTful \u98ce\u683c\u7684 Web \u670d\u52a1(API Documentation &amp; Design Tools for Teams | Swagger)\u3002 \u5b83\u7684\u4e3b\u8981\u4f5c\u7528\u662f&#xff1a;<\/p>\n<li id=\"u10373a1f\">\u4f7f\u5f97\u524d\u540e\u7aef\u5206\u79bb\u5f00\u53d1\u66f4\u52a0\u65b9\u4fbf&#xff0c;\u6709\u5229\u4e8e\u56e2\u961f\u534f\u4f5c<\/li>\n<li id=\"ueed77e7a\">\u63a5\u53e3\u7684\u6587\u6863\u5728\u7ebf\u81ea\u52a8\u751f\u6210&#xff0c;\u964d\u4f4e\u540e\u7aef\u5f00\u53d1\u4eba\u5458\u7f16\u5199\u63a5\u53e3\u6587\u6863\u7684\u8d1f\u62c5<\/li>\n<li id=\"uc21541bb\">\u529f\u80fd\u6d4b\u8bd5 Spring\u5df2\u7ecf\u5c06Swagger\u7eb3\u5165\u81ea\u8eab\u7684\u6807\u51c6&#xff0c;\u5efa\u7acb\u4e86Spring-swagger\u9879\u76ee&#xff0c;\u73b0\u5728\u53ebSpringfox\u3002\u901a\u8fc7\u5728\u9879\u76ee\u4e2d\u5f15\u5165Springfox &#xff0c;\u5373\u53ef\u975e\u5e38\u7b80\u5355\u5feb\u6377\u7684\u4f7f\u7528Swagger\u3002<\/li>\n<p id=\"u5a24d176\">knife4j\u662f\u4e3aJava MVC\u6846\u67b6\u96c6\u6210Swagger\u751f\u6210Api\u6587\u6863\u7684\u589e\u5f3a\u89e3\u51b3\u65b9\u6848,\u524d\u8eab\u662fswagger-bootstrap-ui,\u53d6\u540dkni4j\u662f\u5e0c\u671b\u5b83\u80fd\u50cf\u4e00\u628a\u5315\u9996\u4e00\u6837\u5c0f\u5de7,\u8f7b\u91cf,\u5e76\u4e14\u529f\u80fd\u5f3a\u608d!<\/p>\n<p id=\"udaad12ab\">\u76ee\u524d&#xff0c;\u4e00\u822c\u90fd\u4f7f\u7528knife4j\u6846\u67b6\u3002<\/p>\n<p id=\"uf7509a66\">\n<h4 id=\"kx3Vt\">5.2 \u4f7f\u7528\u6b65\u9aa4<\/h4>\n<li id=\"u62539028\">\u5bfc\u5165 knife4j \u7684maven\u5750\u6807\u5728pom.xml\u4e2d\u6dfb\u52a0\u4f9d\u8d56<\/li>\n<p>&lt;dependency&gt;<br \/>\n   &lt;groupId&gt;com.github.xiaoymin&lt;\/groupId&gt;<br \/>\n   &lt;artifactId&gt;knife4j-spring-boot-starter&lt;\/artifactId&gt;<br \/>\n&lt;\/dependency&gt;<\/p>\n<li id=\"ucfbb83d2\">\u5728\u914d\u7f6e\u7c7b\u4e2d\u52a0\u5165 knife4j \u76f8\u5173\u914d\u7f6eWebMvcConfiguration.java<\/li>\n<p>\/**<br \/>\n     * \u901a\u8fc7knife4j\u751f\u6210\u63a5\u53e3\u6587\u6863<br \/>\n     * &#064;return<br \/>\n*\/<br \/>\n    &#064;Bean<br \/>\n    public Docket docket() {<br \/>\n        ApiInfo apiInfo &#061; new ApiInfoBuilder()<br \/>\n                .title(&#034;\u82cd\u7a79\u5916\u5356\u9879\u76ee\u63a5\u53e3\u6587\u6863&#034;)<br \/>\n                .version(&#034;2.0&#034;)<br \/>\n                .description(&#034;\u82cd\u7a79\u5916\u5356\u9879\u76ee\u63a5\u53e3\u6587\u6863&#034;)<br \/>\n                .build();<br \/>\n        Docket docket &#061; new Docket(DocumentationType.SWAGGER_2)<br \/>\n                .apiInfo(apiInfo)<br \/>\n                .select()<br \/>\n                .apis(RequestHandlerSelectors.basePackage(&#034;com.sky.controller&#034;))<br \/>\n                .paths(PathSelectors.any())<br \/>\n                .build();<br \/>\n        return docket;<br \/>\n    } <\/p>\n<li id=\"uafd3033c\">\u8bbe\u7f6e\u9759\u6001\u8d44\u6e90\u6620\u5c04&#xff0c;\u5426\u5219\u63a5\u53e3\u6587\u6863\u9875\u9762\u65e0\u6cd5\u8bbf\u95eeWebMvcConfiguration.java<\/li>\n<p>\/**<br \/>\n     * \u8bbe\u7f6e\u9759\u6001\u8d44\u6e90\u6620\u5c04<br \/>\n     * &#064;param registry<br \/>\n*\/<br \/>\nprotected void addResourceHandlers(ResourceHandlerRegistry registry) {<br \/>\n        registry.addResourceHandler(&#034;\/doc.html&#034;).addResourceLocations(&#034;classpath:\/META-INF\/resources\/&#034;);<br \/>\n        registry.addResourceHandler(&#034;\/webjars\/**&#034;).addResourceLocations(&#034;classpath:\/META-INF\/resources\/webjars\/&#034;);<br \/>\n} <\/p>\n<li id=\"u6e820a08\">\u8bbf\u95ee\u6d4b\u8bd5\u63a5\u53e3\u6587\u6863\u8bbf\u95ee\u8def\u5f84\u4e3a http:\/\/ip:port\/doc.html &#8212;&gt; http:\/\/localhost:8080\/doc.html\u63a5\u53e3\u6d4b\u8bd5:\u6d4b\u8bd5\u767b\u5f55\u529f\u80fd<\/li>\n<p id=\"uc379e151\">\u601d\u8003&#xff1a;\u901a\u8fc7 Swagger \u5c31\u53ef\u4ee5\u751f\u6210\u63a5\u53e3\u6587\u6863&#xff0c;\u90a3\u4e48\u6211\u4eec\u5c31\u4e0d\u9700\u8981 Yapi \u4e86&#xff1f;<\/p>\n<p id=\"u3dae31b4\">1\u3001Yapi \u662f\u8bbe\u8ba1\u9636\u6bb5\u4f7f\u7528\u7684\u5de5\u5177&#xff0c;\u7ba1\u7406\u548c\u7ef4\u62a4\u63a5\u53e3<\/p>\n<p id=\"u430f27ba\">2\u3001Swagger \u5728\u5f00\u53d1\u9636\u6bb5\u4f7f\u7528\u7684\u6846\u67b6&#xff0c;\u5e2e\u52a9\u540e\u7aef\u5f00\u53d1\u4eba\u5458\u505a\u540e\u7aef\u7684\u63a5\u53e3\u6d4b\u8bd5<\/p>\n<p id=\"u9bf8c15c\">\n<h4 id=\"RLwFR\">5.3 \u5e38\u7528\u6ce8\u89e3<\/h4>\n<p id=\"uc466570c\">\u901a\u8fc7\u6ce8\u89e3\u53ef\u4ee5\u63a7\u5236\u751f\u6210\u7684\u63a5\u53e3\u6587\u6863&#xff0c;\u4f7f\u63a5\u53e3\u6587\u6863\u62e5\u6709\u66f4\u597d\u7684\u53ef\u8bfb\u6027&#xff0c;\u5e38\u7528\u6ce8\u89e3\u5982\u4e0b&#xff1a;<\/p>\n<table id=\"ydt8G\">\n<tbody>\n<tr>\n<td>\n<p id=\"u638c1f4b\">\u6ce8\u89e3<\/p>\n<\/td>\n<td>\n<p id=\"u6f5cbb02\">\u8bf4\u660e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u78170566\">&#064;Api<\/p>\n<\/td>\n<td>\n<p id=\"u51e2e9ff\">\u7528\u5728\u7c7b\u4e0a&#xff0c;\u4f8b\u5982Controller&#xff0c;\u8868\u793a\u5bf9\u7c7b\u7684\u8bf4\u660e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u95c9edb2\">&#064;ApiModel<\/p>\n<\/td>\n<td>\n<p id=\"ucc9398fc\">\u7528\u5728\u7c7b\u4e0a&#xff0c;\u4f8b\u5982entity\u3001DTO\u3001VO<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u88790482\">&#064;ApiModelProperty<\/p>\n<\/td>\n<td>\n<p id=\"u0cee72f5\">\u7528\u5728\u5c5e\u6027\u4e0a&#xff0c;\u63cf\u8ff0\u5c5e\u6027\u4fe1\u606f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u22458732\">&#064;ApiOperation<\/p>\n<\/td>\n<td>\n<p id=\"ub74a5cfd\">\u7528\u5728\u65b9\u6cd5\u4e0a&#xff0c;\u4f8b\u5982Controller\u7684\u65b9\u6cd5&#xff0c;\u8bf4\u660e\u65b9\u6cd5\u7684\u7528\u9014\u3001\u4f5c\u7528<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p id=\"ua4a7dd11\">\u63a5\u4e0b\u6765&#xff0c;\u4f7f\u7528\u4e0a\u8ff0\u6ce8\u89e3&#xff0c;\u751f\u6210\u53ef\u8bfb\u6027\u66f4\u597d\u7684\u63a5\u53e3\u6587\u6863<\/p>\n<p id=\"u1af7b4ed\">\u5728sky-pojo\u6a21\u5757\u4e2d<\/p>\n<p id=\"u6f86edf3\">EmployeeLoginDTO.java<\/p>\n<p>package com.sky.dto;<\/p>\n<p>import io.swagger.annotations.ApiModel;<br \/>\nimport io.swagger.annotations.ApiModelProperty;<br \/>\nimport lombok.Data;<\/p>\n<p>import java.io.Serializable;<\/p>\n<p>&#064;Data<br \/>\n&#064;ApiModel(description &#061; &#034;\u5458\u5de5\u767b\u5f55\u65f6\u4f20\u9012\u7684\u6570\u636e\u6a21\u578b&#034;)<br \/>\npublic class EmployeeLoginDTO implements Serializable {<\/p>\n<p>    &#064;ApiModelProperty(&#034;\u7528\u6237\u540d&#034;)<br \/>\n    private String username;<\/p>\n<p>    &#064;ApiModelProperty(&#034;\u5bc6\u7801&#034;)<br \/>\n    private String password;<\/p>\n<p>}<\/p>\n<p id=\"u92697149\">EmployeeLoginVo.java<\/p>\n<p>package com.sky.vo;<\/p>\n<p>import io.swagger.annotations.ApiModel;<br \/>\nimport io.swagger.annotations.ApiModelProperty;<br \/>\nimport lombok.AllArgsConstructor;<br \/>\nimport lombok.Builder;<br \/>\nimport lombok.Data;<br \/>\nimport lombok.NoArgsConstructor;<\/p>\n<p>import java.io.Serializable;<\/p>\n<p>&#064;Data<br \/>\n&#064;Builder<br \/>\n&#064;NoArgsConstructor<br \/>\n&#064;AllArgsConstructor<br \/>\n&#064;ApiModel(description &#061; &#034;\u5458\u5de5\u767b\u5f55\u8fd4\u56de\u7684\u6570\u636e\u683c\u5f0f&#034;)<br \/>\npublic class EmployeeLoginVO implements Serializable {<\/p>\n<p>    &#064;ApiModelProperty(&#034;\u4e3b\u952e\u503c&#034;)<br \/>\n    private Long id;<\/p>\n<p>    &#064;ApiModelProperty(&#034;\u7528\u6237\u540d&#034;)<br \/>\n    private String userName;<\/p>\n<p>    &#064;ApiModelProperty(&#034;\u59d3\u540d&#034;)<br \/>\n    private String name;<\/p>\n<p>    &#064;ApiModelProperty(&#034;jwt\u4ee4\u724c&#034;)<br \/>\n    private String token;<\/p>\n<p>} <\/p>\n<p id=\"u88eb432e\">\u5728sky-server\u6a21\u5757\u4e2d<\/p>\n<p id=\"u2575b038\">EmployeeController.java<\/p>\n<p>package com.sky.controller.admin;<\/p>\n<p>import com.sky.constant.JwtClaimsConstant;<br \/>\nimport com.sky.dto.EmployeeLoginDTO;<br \/>\nimport com.sky.entity.Employee;<br \/>\nimport com.sky.properties.JwtProperties;<br \/>\nimport com.sky.result.Result;<br \/>\nimport com.sky.service.EmployeeService;<br \/>\nimport com.sky.utils.JwtUtil;<br \/>\nimport com.sky.vo.EmployeeLoginVO;<br \/>\nimport io.swagger.annotations.Api;<br \/>\nimport io.swagger.annotations.ApiOperation;<br \/>\nimport lombok.extern.slf4j.Slf4j;<br \/>\nimport org.springframework.beans.factory.annotation.Autowired;<br \/>\nimport org.springframework.web.bind.annotation.PostMapping;<br \/>\nimport org.springframework.web.bind.annotation.RequestBody;<br \/>\nimport org.springframework.web.bind.annotation.RequestMapping;<br \/>\nimport org.springframework.web.bind.annotation.RestController;<\/p>\n<p>import java.util.HashMap;<br \/>\nimport java.util.Map;<\/p>\n<p>\/**<br \/>\n * \u5458\u5de5\u7ba1\u7406<br \/>\n *\/<br \/>\n&#064;RestController<br \/>\n&#064;RequestMapping(&#034;\/admin\/employee&#034;)<br \/>\n&#064;Slf4j<br \/>\n&#064;Api(tags &#061; &#034;\u5458\u5de5\u76f8\u5173\u63a5\u53e3&#034;)<br \/>\npublic class EmployeeController {<\/p>\n<p>    &#064;Autowired<br \/>\n    private EmployeeService employeeService;<br \/>\n    &#064;Autowired<br \/>\n    private JwtProperties jwtProperties;<\/p>\n<p>    \/**<br \/>\n     * \u767b\u5f55<br \/>\n     *<br \/>\n     * &#064;param employeeLoginDTO<br \/>\n     * &#064;return<br \/>\n     *\/<br \/>\n    &#064;PostMapping(&#034;\/login&#034;)<br \/>\n    &#064;ApiOperation(value &#061; &#034;\u5458\u5de5\u767b\u5f55&#034;)<br \/>\n    public Result&lt;EmployeeLoginVO&gt; login(&#064;RequestBody EmployeeLoginDTO employeeLoginDTO) {<br \/>\n        \/\/&#8230;&#8230;&#8230;&#8230;..<\/p>\n<p>    }<\/p>\n<p>    \/**<br \/>\n     * \u9000\u51fa<br \/>\n     *<br \/>\n     * &#064;return<br \/>\n     *\/<br \/>\n    &#064;PostMapping(&#034;\/logout&#034;)<br \/>\n    &#064;ApiOperation(&#034;\u5458\u5de5\u9000\u51fa&#034;)<br \/>\n    public Result&lt;String&gt; logout() {<br \/>\n        return Result.success();<br \/>\n    }<\/p>\n<p>}<\/p>\n<p id=\"u09993ba1\">\u542f\u52a8\u670d\u52a1&#xff1a;\u8bbf\u95eehttp:\/\/localhost:8080\/doc.html<\/p>\n<p id=\"u03d2342a\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"962\" id=\"u72de8c1e\" src=\"2026-10-09vxfhnxd2jon.png\" width=\"1917\" \/><\/p>\n<p id=\"ud4f97e63\">\n","protected":false},"excerpt":{"rendered":"<p>\u4e0b\u9762\u662f\u5728\u539f\u6709\u8bb2\u4e49\u57fa\u7840\u4e0a&#xff0c;\u52a0\u4e0a\u4e86\u4e00\u70b9\u81ea\u5df1\u7684\u5b9e\u9645\u8fd0\u884c\u622a\u56fe\u548c\u4e00\u4e9b\u95ee\u9898&#xff0c;\u4e5f\u5220\u9664\u4e86\u4e00\u4e9b\u539f\u8bb2\u4e49\u7684\u4e00\u4e9b\u4e1c\u897f\u3002<br \/>\nDAY 01<br \/>\n1.\u6280\u672f\u9009\u578b<br \/>\n1). \u7528\u6237\u5c42<br \/>\n\u672c\u9879\u76ee\u4e2d\u5728\u6784\u5efa\u7cfb\u7edf\u7ba1\u7406\u540e\u53f0\u7684\u524d\u7aef\u9875\u9762&#xff0c;\u6211\u4eec\u4f1a\u7528\u5230H5\u3001Vue.js\u3001ElementUI\u3001apache echarts(\u5c55\u793a\u56fe\u8868)\u7b49\u6280\u672f\u3002\u800c\u5728\u6784\u5efa\u79fb\u52a8\u7aef\u5e94\u7528\u65f6&#xff0c;\u6211\u4eec\u4f1a\u4f7f\u7528\u5230\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u3002<br \/>\n2). \u7f51\u5173\u5c42<br \/>\nNginx\u662f\u4e00\u4e2a\u670d\u52a1\u5668&#xff0c;\u4e3b\u8981\u7528\u6765\u4f5c\u4e3aHttp\u670d\u52a1\u5668&amp;#xf<\/p>\n","protected":false},"author":2,"featured_media":114694,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[371,305],"topic":[],"class_list":["post-114714","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-371","tag-305"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u82cd\u7a79\u5916\u5356\u5b66\u4e60\u7b14\u8bb0-DAY01 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/114714.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u82cd\u7a79\u5916\u5356\u5b66\u4e60\u7b14\u8bb0-DAY01 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u4e0b\u9762\u662f\u5728\u539f\u6709\u8bb2\u4e49\u57fa\u7840\u4e0a&#xff0c;\u52a0\u4e0a\u4e86\u4e00\u70b9\u81ea\u5df1\u7684\u5b9e\u9645\u8fd0\u884c\u622a\u56fe\u548c\u4e00\u4e9b\u95ee\u9898&#xff0c;\u4e5f\u5220\u9664\u4e86\u4e00\u4e9b\u539f\u8bb2\u4e49\u7684\u4e00\u4e9b\u4e1c\u897f\u3002 DAY 01 1.\u6280\u672f\u9009\u578b 1). \u7528\u6237\u5c42 \u672c\u9879\u76ee\u4e2d\u5728\u6784\u5efa\u7cfb\u7edf\u7ba1\u7406\u540e\u53f0\u7684\u524d\u7aef\u9875\u9762&#xff0c;\u6211\u4eec\u4f1a\u7528\u5230H5\u3001Vue.js\u3001ElementUI\u3001apache echarts(\u5c55\u793a\u56fe\u8868)\u7b49\u6280\u672f\u3002\u800c\u5728\u6784\u5efa\u79fb\u52a8\u7aef\u5e94\u7528\u65f6&#xff0c;\u6211\u4eec\u4f1a\u4f7f\u7528\u5230\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u3002 2). \u7f51\u5173\u5c42 Nginx\u662f\u4e00\u4e2a\u670d\u52a1\u5668&#xff0c;\u4e3b\u8981\u7528\u6765\u4f5c\u4e3aHttp\u670d\u52a1\u5668&amp;#xf\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/114714.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-09T14:49:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144933-6ac8fefd06429.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/114714.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/114714.html\",\"name\":\"\u82cd\u7a79\u5916\u5356\u5b66\u4e60\u7b14\u8bb0-DAY01 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-10-09T14:49:39+00:00\",\"dateModified\":\"2026-10-09T14:49:39+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/114714.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/114714.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/114714.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u82cd\u7a79\u5916\u5356\u5b66\u4e60\u7b14\u8bb0-DAY01\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u82cd\u7a79\u5916\u5356\u5b66\u4e60\u7b14\u8bb0-DAY01 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/114714.html","og_locale":"zh_CN","og_type":"article","og_title":"\u82cd\u7a79\u5916\u5356\u5b66\u4e60\u7b14\u8bb0-DAY01 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u4e0b\u9762\u662f\u5728\u539f\u6709\u8bb2\u4e49\u57fa\u7840\u4e0a&#xff0c;\u52a0\u4e0a\u4e86\u4e00\u70b9\u81ea\u5df1\u7684\u5b9e\u9645\u8fd0\u884c\u622a\u56fe\u548c\u4e00\u4e9b\u95ee\u9898&#xff0c;\u4e5f\u5220\u9664\u4e86\u4e00\u4e9b\u539f\u8bb2\u4e49\u7684\u4e00\u4e9b\u4e1c\u897f\u3002 DAY 01 1.\u6280\u672f\u9009\u578b 1). \u7528\u6237\u5c42 \u672c\u9879\u76ee\u4e2d\u5728\u6784\u5efa\u7cfb\u7edf\u7ba1\u7406\u540e\u53f0\u7684\u524d\u7aef\u9875\u9762&#xff0c;\u6211\u4eec\u4f1a\u7528\u5230H5\u3001Vue.js\u3001ElementUI\u3001apache echarts(\u5c55\u793a\u56fe\u8868)\u7b49\u6280\u672f\u3002\u800c\u5728\u6784\u5efa\u79fb\u52a8\u7aef\u5e94\u7528\u65f6&#xff0c;\u6211\u4eec\u4f1a\u4f7f\u7528\u5230\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u3002 2). \u7f51\u5173\u5c42 Nginx\u662f\u4e00\u4e2a\u670d\u52a1\u5668&#xff0c;\u4e3b\u8981\u7528\u6765\u4f5c\u4e3aHttp\u670d\u52a1\u5668&amp;#xf","og_url":"https:\/\/www.wsisp.com\/helps\/114714.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-10-09T14:49:39+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261009144933-6ac8fefd06429.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"7 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/114714.html","url":"https:\/\/www.wsisp.com\/helps\/114714.html","name":"\u82cd\u7a79\u5916\u5356\u5b66\u4e60\u7b14\u8bb0-DAY01 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-10-09T14:49:39+00:00","dateModified":"2026-10-09T14:49:39+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/114714.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/114714.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/114714.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"\u82cd\u7a79\u5916\u5356\u5b66\u4e60\u7b14\u8bb0-DAY01"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/114714","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=114714"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/114714\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/114694"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=114714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=114714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=114714"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=114714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}