ID | + +标题 | + +作者 | + +文本 | +操作 | +
---|
ID | + +标题 | + +作者 | + +文本 | +操作 | +
---|
wFSbg~URwu~b=9P!)xgD07})a~1N__ne2$M9rx$P0adDuf8;?kQRrtEq}SuRImbX z_gkMEmt6l`2ox`l5Xv~;SR~4>X|L{HZLKW0%{ga5<2I^J?WWW8L=P7Yf7x4A*gais ztW3Cd-}4_$2p*3-aHBTtllj?}Ke(6iEUX7gneco$MkHY)vUS~J;}I~WYQ7IW*Y?z z**Jh<8!yZ73Wk}Zk)*S62JhH-6$fn;F=FGGs3nm`WjKq23j3nfajxan7Tu #siB?;%_N7K;%S#KqLAyJrt^VxIS(GVbr$Y; zzdYPRS9m>E$1t<`f6X|=PO_g($UscUq7)Opf|-;BGg;$203{sJeu&xxHO1L1{Q|WX zxV^?P5iDl#I%Qis;4t2x_GV~(i?b4*`vAp$qA`Xpki9Js!_)^T9tFy73&c?O0WzXM z1KR?PVLSvXbB@WgO9$4WevZ5?86fS|9wA9WphQ7M=sH5aHSb-_(RIXjiYXC|V!quU zGrm(y$&M)I(f*jmPBA6ZqL{2k{dRScbBZiJ9xeR{(^wn*6Xs)>@wL%EV9tz{HjoHZ z3du44e-IlL>nb&?Y>fYfOu=}D-A`bT7mN+0+V1JHNtbjvQ82|P@eKJV$QH~(Vv|#* zEU1~XRY;1H6*?sgR@=#tLWpn5UmfGy`qrHoKjtU@UA}V=-{U fIaYCk zl7Tr~#0Qj2%(Fq2DJAfTwKqvAiSJmYCn;H&;+bQ}Car%kki;qbIrb)Tnm 0jXptgd;@l{o-P|=C>Wu|l1OP&rfdc#1}WHN70kdi+@JST`snboaoona zptgk3^OR!PgDd!u4~Vm7kKqC(gZ+FTnHS!L*>8||LDCH}s}#wEQZMM<)nl?S2(#_b z_Az>wLbt>wx2|V&mCg}H`Bl)2;vQ#dyk~wx_SRDj 4`96DoZ$lMuBkD_2Z$-BPG bv+SEqJ=%j<|0`Xx;>SMC~VD% z>g5$^^8 -TN_WwQSY zrYfS8Cn^`JJB6UHBJ7ziDD2yQR75H^*FYV8vF4W^nuB(x261B7C;XdgQZo-Jb#})& zb#iDomOR~Q`lPAj$wmR2iD%L5eK2$^Ol+ZbmU3kl#+;s&8F{_5;!|L1#g?FxDPUX` z^VJ )`o2HX8BdnSPUtFV&LK{I-6QLsM#=qy-49o40Ld__%+H zFTYHHz!Lr`0F+Avu0aWR%eY&DGF0%phWK^-tb78J!YXoZz)jp2u_|IUSj+3z=WsTV qvk6->_4T~>He$En_6&9>$953A`v-O}$L^!z1LOFiQ7j|!2;eugmS;r( literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/BlogService.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/BlogService.class" new file mode 100644 index 0000000000000000000000000000000000000000..597922c19df63ffc80e960e5d177d6b873b5e4ac GIT binary patch literal 510 zcma)3!AiqG6r8QGvDMVJM*IPV^kOc8hltP~gg~H&_yaLn!j^R-$)?a>^WX>gQR3Te zDaG{Q=`pkO-p-r%{qy++-~rbzu3Y#GqlQbK>$#K*S(OdLG?*o;Y@LOz7BWmkqa%hv zDoT~ ByJr&H!0npLw-ueE&%n^5O96d{;RFuhQ$jt9U7P{L Y4=~*G=Y%idS$>2|TgRr7Vq!a|zgOspZvX%Q literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/impl/BlogServiceImpl.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/impl/BlogServiceImpl.class" new file mode 100644 index 0000000000000000000000000000000000000000..7086e789782bd30e164afbe77efec052d8684c2d GIT binary patch literal 2823 zcma)8TXWk)7(J`VmpF3jhNLA;pm*xnO$D^ji_=09+G23hl9WKpt+K5;YGf(May$7K zJo5wSOCQ=9NT)EvzzfXqn}BjwQeyd%DKqi6((bp%=R148b^iMI=U)Mw!^SX%@yQ5Q zuqwkX89tR^O@_~8_&kFN+)m+6hN)l3@THvjN`|jf_$Gr<+)m@J91R(&Y1HIcPr*## zo ^hvg1`W-*gjy$WqteS0g=N=0A_q$qhNt)lb4V!kE zh|74RdY`T=&D`PXxzc7G-J>OegzK-%p4lhuc0!7=(?z*prE4m?>KnBUCIlX3zq0)V z(lx`mD!-qP>qcumv^hnhyosAD<)y16=$Wmy?F)=_0j7O7^o#UfWSMSXWLDj_S2M3! z(mCT&yqNXR$btm&13S0no1W?VTbrgHZ7FFuh*wi+XqdvZh7&lcA&(givpAzc$D10? z%5V S3SnsLjpmuw=N; zvm&7imIQJgsPMdq9w!yU `TDdDv@@201hMy&yarFQ=k^Wgr}K^j^JJ9$g@7rkw3q<*ayTD?X^Yjr9hWZihwS0 zl-5WVia$XNrWCp&x$BB#WZiCZZ0`v33C9F67mI}-kWe2Nf5-6mNDMtL{)XYD(}ith zf>%C_ET3k$q|W|{kxBIr?0*Dpc2eDj7G$W>1Vb^$hZ>y=;dcow;tD;^{-&SaXBQ~+ z{$b2>ZU_Z-*aDwaED~!1$yEApjHd9xKRA%WRsN*~;+3fK%8DwvNKmOxLYB~L$dF4Y z&dzx;l?)`8IHZu*UIh6aN0pF=bEP@;av;HUuCz`8(z)Uzq-M8~y?c3jaN&h;YgG6U zuZnWep9x+cAMr_n{CDu r+t09XEVqsQlJGXh#$Ms`HpY9c7x(aVL^H00f@LBqxUqZh-30yvIvOGp literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" new file mode 100644 index 0000000..789825b --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" @@ -0,0 +1,10 @@ +com\config\WebConfig.class +com\service\impl\BlogServiceImpl.class +com\controller\BlogController.class +com\config\JdbcConfig.class +com\config\MyBatisConfig.class +com\entity\Blog.class +com\service\BlogService.class +com\mapper\BlogMapper.class +com\config\SpringConfig.class +com\config\SpringMvcConfig.class diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" new file mode 100644 index 0000000..e158182 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" @@ -0,0 +1,10 @@ +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\JdbcConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\MyBatisConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\SpringConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\SpringMvcConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\WebConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\controller\BlogController.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\entity\Blog.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\mapper\BlogMapper.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\service\BlogService.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\service\impl\BlogServiceImpl.java diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" new file mode 100644 index 0000000..76c9512 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" @@ -0,0 +1,64 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +############################################################ +# Handler specific properties. +# Describes specific configuration info for Handlers. +############################################################ + +1catalina.org.apache.juli.FileHandler.level = FINE +1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +1catalina.org.apache.juli.FileHandler.prefix = catalina. + +2localhost.org.apache.juli.FileHandler.level = FINE +2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +2localhost.org.apache.juli.FileHandler.prefix = localhost. + +3manager.org.apache.juli.FileHandler.level = FINE +3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +3manager.org.apache.juli.FileHandler.prefix = manager. + +4host-manager.org.apache.juli.FileHandler.level = FINE +4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +4host-manager.org.apache.juli.FileHandler.prefix = host-manager. + +java.util.logging.ConsoleHandler.level = FINE +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter + + +############################################################ +# Facility specific properties. +# Provides extra control for each logger. +############################################################ + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler + +# For example, set the org.apache.catalina.util.LifecycleBase logger to log +# each component that extends LifecycleBase changing state: +#org.apache.catalina.util.LifecycleBase.level = FINE + +# To see debug messages in TldLocationsCache, uncomment the following line: +#org.apache.jasper.compiler.TldLocationsCache.level = FINE diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" new file mode 100644 index 0000000..7114f5d --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" @@ -0,0 +1,26 @@ + + + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" new file mode 100644 index 0000000..cc8383c --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" @@ -0,0 +1,4283 @@ + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" new file mode 100644 index 0000000..773f569 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" @@ -0,0 +1,103 @@ +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET / HTTP/1.1" 200 2139 http-bio-80-exec-1 35 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-3 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-2 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /js/data.js HTTP/1.1" 200 5206 http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /student HTTP/1.1" 404 965 http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:18:00 +0800] "GET /favicon.ico HTTP/1.1" 404 973 http-bio-80-exec-8 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:18:00 +0800] "GET /student HTTP/1.1" 404 965 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-2 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-1 96 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-6 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-8 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-10 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:25 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 698 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:09 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-1 774 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:12 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-3 20 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:26 +0800] "GET /blog?title=1 HTTP/1.1" 200 12 http-bio-80-exec-4 102 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:13 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-6 17 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:50 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-8 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:55 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET / HTTP/1.1" 200 2139 http-bio-80-exec-10 8 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-10 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/data.js HTTP/1.1" 200 5193 http-bio-80-exec-4 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:53 +0800] "GET / HTTP/1.1" 200 2136 http-bio-80-exec-7 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:53 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:54 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 10 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:01 +0800] "GET /blog?title=%E8%BE%89%E8%BE%89 HTTP/1.1" 200 118 http-bio-80-exec-7 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:13 +0800] "GET /blog/2 HTTP/1.1" 200 119 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:37 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:37 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:38 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 233 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 9 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:32 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:35 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-4 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:37 +0800] "PUT /blog HTTP/1.1" 200 11 http-bio-80-exec-4 47 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:38 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:03 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-4 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:04 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:07 +0800] "GET /blog/3 HTTP/1.1" 200 119 http-bio-80-exec-4 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:12 +0800] "DELETE /blog/3 HTTP/1.1" 500 4607 http-bio-80-exec-4 20 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 11 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-5 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-1 48 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-3 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-2 14 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:56 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 776 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:00 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-6 56 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:01 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-7 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:04 +0800] "DELETE /blog/4 HTTP/1.1" 200 11 http-bio-80-exec-8 21 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:05 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-9 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-1 132 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-3 24 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-2 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:37 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 1045 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:37 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:27 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-8 12 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:27 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 15 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:53 +0800] "GET /blog?title=%E9%99%88 HTTP/1.1" 200 121 http-bio-80-exec-10 77 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:24 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-10 8 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:55 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-10 12 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:55 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:18 +0800] "DELETE /blog/2 HTTP/1.1" 200 11 http-bio-80-exec-10 237 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:19 +0800] "GET /blog HTTP/1.1" 200 118 http-bio-80-exec-10 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-10 13 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-10 14 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET /blog HTTP/1.1" 200 118 http-bio-80-exec-10 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:55 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-10 48 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:56 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:37:23 +0800] "GET /blog/5 HTTP/1.1" 200 119 http-bio-80-exec-10 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:38:19 +0800] "PUT /blog HTTP/1.1" 200 11 http-bio-80-exec-10 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:38:20 +0800] "GET /blog HTTP/1.1" 200 230 http-bio-80-exec-10 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:39:30 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-1 13 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:39:30 +0800] "GET /blog HTTP/1.1" 200 230 http-bio-80-exec-1 8 -- Gitee From fe7f0ff0ae4492b29480ee7112391875c4e3a0bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E7=8E=AE=E9=93=AD?= <2373854303@qq.com> Date: Mon, 6 Jan 2025 10:33:34 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4106=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...73\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" index 724c1e7..4f1b137 100644 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" @@ -924,7 +924,7 @@ init();  - + **新增博客信息请求** -- Gitee From 94c56e014917d373d53efd1aa2541603dd109d5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E7=8E=AE=E9=93=AD?= <2373854303@qq.com> Date: Mon, 6 Jan 2025 10:37:19 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4106=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\347\273\203\344\271\240(\345\233\233).md" | 943 ---- .../MyBlog/.idea/.gitignore" | 8 - .../MyBlog/.idea/compiler.xml" | 16 - .../MyBlog/.idea/dataSources.xml" | 12 - .../MyBlog/.idea/encodings.xml" | 7 - .../MyBlog/.idea/jarRepositories.xml" | 20 - .../MyBlog/.idea/misc.xml" | 17 - .../MyBlog/.idea/sqldialects.xml" | 6 - .../MyBlog/pom.xml" | 103 - .../src/main/java/com/config/JdbcConfig.java" | 20 - .../main/java/com/config/MyBatisConfig.java" | 19 - .../main/java/com/config/SpringConfig.java" | 11 - .../java/com/config/SpringMvcConfig.java" | 17 - .../src/main/java/com/config/WebConfig.java" | 20 - .../java/com/controller/BlogController.java" | 55 - .../src/main/java/com/entity/Blog.java" | 15 - .../src/main/java/com/mapper/BlogMapper.java" | 33 - .../main/java/com/service/BlogService.java" | 25 - .../com/service/impl/BlogServiceImpl.java" | 53 - .../MyBlog/src/main/webapp/css/styles.css" | 128 - .../MyBlog/src/main/webapp/index.html" | 62 - .../MyBlog/src/main/webapp/js/axios.min.js" | 2 - .../MyBlog/src/main/webapp/js/book.js" | 188 - .../MyBlog/src/main/webapp/js/data.js" | 182 - .../classes/com/config/JdbcConfig.class" | Bin 890 -> 0 bytes .../classes/com/config/MyBatisConfig.class" | Bin 889 -> 0 bytes .../classes/com/config/SpringConfig.class" | Bin 591 -> 0 bytes .../classes/com/config/SpringMvcConfig.class" | Bin 1284 -> 0 bytes .../classes/com/config/WebConfig.class" | Bin 830 -> 0 bytes .../com/controller/BlogController.class" | Bin 3615 -> 0 bytes .../target/classes/com/entity/Blog.class" | Bin 2949 -> 0 bytes .../classes/com/mapper/BlogMapper.class" | Bin 1261 -> 0 bytes .../classes/com/service/BlogService.class" | Bin 510 -> 0 bytes .../com/service/impl/BlogServiceImpl.class" | Bin 2823 -> 0 bytes .../compile/default-compile/createdFiles.lst" | 10 - .../compile/default-compile/inputFiles.lst" | 10 - .../target/tomcat/conf/logging.properties" | 64 - .../target/tomcat/conf/tomcat-users.xml" | 26 - .../MyBlog/target/tomcat/conf/web.xml" | 4283 ----------------- .../target/tomcat/logs/access_log.2025-01-06" | 103 - 40 files changed, 6458 deletions(-) delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/.gitignore" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/compiler.xml" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/dataSources.xml" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/encodings.xml" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/jarRepositories.xml" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/misc.xml" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/sqldialects.xml" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/pom.xml" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/JdbcConfig.java" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/MyBatisConfig.java" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringConfig.java" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringMvcConfig.java" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/WebConfig.java" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/controller/BlogController.java" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/entity/Blog.java" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/mapper/BlogMapper.java" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/BlogService.java" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/impl/BlogServiceImpl.java" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/css/styles.css" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/index.html" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/axios.min.js" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/book.js" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/data.js" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/JdbcConfig.class" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/MyBatisConfig.class" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/SpringConfig.class" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/SpringMvcConfig.class" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/WebConfig.class" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/controller/BlogController.class" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/entity/Blog.class" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/mapper/BlogMapper.class" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/BlogService.class" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/impl/BlogServiceImpl.class" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" delete mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" deleted file mode 100644 index 4f1b137..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" +++ /dev/null @@ -1,943 +0,0 @@ -## 课堂笔记 - -#### **综合练习(四)(博客管理系统)** - -**一、准备sql数据** - -**二、设置好 Maven 并导入依赖项** - -**三、构建好项目结构** - -**四、编写 Blog 实体类、Blog 里的各种配置类** - -**五、编写 BlogMapper 接口、BlogService 接口、BlogServiceImpl 实现类** - -**六、编写 BlogController 类** - -**七、启动Tomcat** - -**八、修改前端请求页面** - -**九、浏览器 开始测试各个请求** - -## 课后作业 - -#### **综合练习(四)(博客管理系统)** - -#### **项目结构预览** - - - -#### 具体步骤 - -##### **一、准备sql数据** - -```sql -/* - Navicat Premium Dump SQL - - Source Server : mysql - Source Server Type : MySQL - Source Server Version : 80034 (8.0.34) - Source Host : localhost:3306 - Source Schema : demo - - Target Server Type : MySQL - Target Server Version : 80034 (8.0.34) - File Encoding : 65001 - - Date: 06/01/2025 08:15:18 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for blog --- ---------------------------- -DROP TABLE IF EXISTS `blog`; -CREATE TABLE `blog` ( - `blogId` int NOT NULL AUTO_INCREMENT, - `blogTitle` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, - `blogAuthor` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, - `blogText` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`blogId`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of blog --- ---------------------------- -INSERT INTO `blog` VALUES (1, '辉辉的个人博客', '刘文辉', '这是一个博客'); -INSERT INTO `blog` VALUES (2, '陈俊杰的个人博客', '陈俊杰', '这是一个博客'); - -SET FOREIGN_KEY_CHECKS = 1; -``` - -##### **二、设置好 Maven 并导入依赖项** - -**pom.xml 依赖配置文件** - -```xml -+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +default +org.apache.catalina.servlets.DefaultServlet ++ +debug +0 ++ +listings +false +1 ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +jsp +org.apache.jasper.servlet.JspServlet ++ +fork +false ++ +xpoweredBy +false +3 ++ + + +default +/ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +jsp +*.jsp +*.jspx ++ + + + + + + + + + +30 ++ +123 +application/vnd.lotus-1-2-3 ++ +3dml +text/vnd.in3d.3dml ++ +3g2 +video/3gpp2 ++ +3gp +video/3gpp ++ +7z +application/x-7z-compressed ++ +aab +application/x-authorware-bin ++ +aac +audio/x-aac ++ +aam +application/x-authorware-map ++ +aas +application/x-authorware-seg ++ +abs +audio/x-mpeg ++ +abw +application/x-abiword ++ +ac +application/pkix-attr-cert ++ +acc +application/vnd.americandynamics.acc ++ +ace +application/x-ace-compressed ++ +acu +application/vnd.acucobol ++ +acutc +application/vnd.acucorp ++ +adp +audio/adpcm ++ +aep +application/vnd.audiograph ++ +afm +application/x-font-type1 ++ +afp +application/vnd.ibm.modcap ++ +ahead +application/vnd.ahead.space ++ +ai +application/postscript ++ +aif +audio/x-aiff ++ +aifc +audio/x-aiff ++ +aiff +audio/x-aiff ++ +aim +application/x-aim ++ +air +application/vnd.adobe.air-application-installer-package+zip ++ +ait +application/vnd.dvb.ait ++ +ami +application/vnd.amiga.ami ++ +anx +application/annodex ++ +apk +application/vnd.android.package-archive ++ +application +application/x-ms-application ++ +apr +application/vnd.lotus-approach ++ +art +image/x-jg ++ +asc +application/pgp-signature ++ +asf +video/x-ms-asf ++ +asm +text/x-asm ++ +aso +application/vnd.accpac.simply.aso ++ +asx +video/x-ms-asf ++ +atc +application/vnd.acucorp ++ +atom +application/atom+xml ++ +atomcat +application/atomcat+xml ++ +atomsvc +application/atomsvc+xml ++ +atx +application/vnd.antix.game-component ++ +au +audio/basic ++ +avi +video/x-msvideo ++ +avx +video/x-rad-screenplay ++ +aw +application/applixware ++ +axa +audio/annodex ++ +axv +video/annodex ++ +azf +application/vnd.airzip.filesecure.azf ++ +azs +application/vnd.airzip.filesecure.azs ++ +azw +application/vnd.amazon.ebook ++ +bat +application/x-msdownload ++ +bcpio +application/x-bcpio ++ +bdf +application/x-font-bdf ++ +bdm +application/vnd.syncml.dm+wbxml ++ +bed +application/vnd.realvnc.bed ++ +bh2 +application/vnd.fujitsu.oasysprs ++ +bin +application/octet-stream ++ +bmi +application/vnd.bmi ++ +bmp +image/bmp ++ +body +text/html ++ +book +application/vnd.framemaker ++ +box +application/vnd.previewsystems.box ++ +boz +application/x-bzip2 ++ +bpk +application/octet-stream ++ +btif +image/prs.btif ++ +bz +application/x-bzip ++ +bz2 +application/x-bzip2 ++ +c +text/x-c ++ +c11amc +application/vnd.cluetrust.cartomobile-config ++ +c11amz +application/vnd.cluetrust.cartomobile-config-pkg ++ +c4d +application/vnd.clonk.c4group ++ +c4f +application/vnd.clonk.c4group ++ +c4g +application/vnd.clonk.c4group ++ +c4p +application/vnd.clonk.c4group ++ +c4u +application/vnd.clonk.c4group ++ +cab +application/vnd.ms-cab-compressed ++ +cap +application/vnd.tcpdump.pcap ++ +car +application/vnd.curl.car ++ +cat +application/vnd.ms-pki.seccat ++ +cc +text/x-c ++ +cct +application/x-director ++ +ccxml +application/ccxml+xml ++ +cdbcmsg +application/vnd.contact.cmsg ++ +cdf +application/x-cdf ++ +cdkey +application/vnd.mediastation.cdkey ++ +cdmia +application/cdmi-capability ++ +cdmic +application/cdmi-container ++ +cdmid +application/cdmi-domain ++ +cdmio +application/cdmi-object ++ +cdmiq +application/cdmi-queue ++ +cdx +chemical/x-cdx ++ +cdxml +application/vnd.chemdraw+xml ++ +cdy +application/vnd.cinderella ++ +cer +application/pkix-cert ++ +cgm +image/cgm ++ +chat +application/x-chat ++ +chm +application/vnd.ms-htmlhelp ++ +chrt +application/vnd.kde.kchart ++ +cif +chemical/x-cif ++ +cii +application/vnd.anser-web-certificate-issue-initiation ++ +cil +application/vnd.ms-artgalry ++ +cla +application/vnd.claymore ++ +class +application/java ++ +clkk +application/vnd.crick.clicker.keyboard ++ +clkp +application/vnd.crick.clicker.palette ++ +clkt +application/vnd.crick.clicker.template ++ +clkw +application/vnd.crick.clicker.wordbank ++ +clkx +application/vnd.crick.clicker ++ +clp +application/x-msclip ++ +cmc +application/vnd.cosmocaller ++ +cmdf +chemical/x-cmdf ++ +cml +chemical/x-cml ++ +cmp +application/vnd.yellowriver-custom-menu ++ +cmx +image/x-cmx ++ +cod +application/vnd.rim.cod ++ +com +application/x-msdownload ++ +conf +text/plain ++ +cpio +application/x-cpio ++ +cpp +text/x-c ++ +cpt +application/mac-compactpro ++ +crd +application/x-mscardfile ++ +crl +application/pkix-crl ++ +crt +application/x-x509-ca-cert ++ +cryptonote +application/vnd.rig.cryptonote ++ +csh +application/x-csh ++ +csml +chemical/x-csml ++ +csp +application/vnd.commonspace ++ +css +text/css ++ +cst +application/x-director ++ +csv +text/csv ++ +cu +application/cu-seeme ++ +curl +text/vnd.curl ++ +cww +application/prs.cww ++ +cxt +application/x-director ++ +cxx +text/x-c ++ +dae +model/vnd.collada+xml ++ +daf +application/vnd.mobius.daf ++ +dataless +application/vnd.fdsn.seed ++ +davmount +application/davmount+xml ++ +dcr +application/x-director ++ +dcurl +text/vnd.curl.dcurl ++ +dd2 +application/vnd.oma.dd2+xml ++ +ddd +application/vnd.fujixerox.ddd ++ +deb +application/x-debian-package ++ +def +text/plain ++ +deploy +application/octet-stream ++ +der +application/x-x509-ca-cert ++ +dfac +application/vnd.dreamfactory ++ +dib +image/bmp ++ +dic +text/x-c ++ +dir +application/x-director ++ +dis +application/vnd.mobius.dis ++ +dist +application/octet-stream ++ +distz +application/octet-stream ++ +djv +image/vnd.djvu ++ +djvu +image/vnd.djvu ++ +dll +application/x-msdownload ++ +dmg +application/octet-stream ++ +dmp +application/vnd.tcpdump.pcap ++ +dms +application/octet-stream ++ +dna +application/vnd.dna ++ +doc +application/msword ++ +docm +application/vnd.ms-word.document.macroenabled.12 ++ +docx +application/vnd.openxmlformats-officedocument.wordprocessingml.document ++ +dot +application/msword ++ +dotm +application/vnd.ms-word.template.macroenabled.12 ++ +dotx +application/vnd.openxmlformats-officedocument.wordprocessingml.template ++ +dp +application/vnd.osgi.dp ++ +dpg +application/vnd.dpgraph ++ +dra +audio/vnd.dra ++ +dsc +text/prs.lines.tag ++ +dssc +application/dssc+der ++ +dtb +application/x-dtbook+xml ++ +dtd +application/xml-dtd ++ +dts +audio/vnd.dts ++ +dtshd +audio/vnd.dts.hd ++ +dump +application/octet-stream ++ +dv +video/x-dv ++ +dvb +video/vnd.dvb.file ++ +dvi +application/x-dvi ++ +dwf +model/vnd.dwf ++ +dwg +image/vnd.dwg ++ +dxf +image/vnd.dxf ++ +dxp +application/vnd.spotfire.dxp ++ +dxr +application/x-director ++ +ecelp4800 +audio/vnd.nuera.ecelp4800 ++ +ecelp7470 +audio/vnd.nuera.ecelp7470 ++ +ecelp9600 +audio/vnd.nuera.ecelp9600 ++ +ecma +application/ecmascript ++ +edm +application/vnd.novadigm.edm ++ +edx +application/vnd.novadigm.edx ++ +efif +application/vnd.picsel ++ +ei6 +application/vnd.pg.osasli ++ +elc +application/octet-stream ++ +eml +message/rfc822 ++ +emma +application/emma+xml ++ +eol +audio/vnd.digital-winds ++ +eot +application/vnd.ms-fontobject ++ +eps +application/postscript ++ +epub +application/epub+zip ++ +es3 +application/vnd.eszigno3+xml ++ +esf +application/vnd.epson.esf ++ +et3 +application/vnd.eszigno3+xml ++ +etx +text/x-setext ++ +exe +application/octet-stream ++ +exi +application/exi ++ +ext +application/vnd.novadigm.ext ++ +ez +application/andrew-inset ++ +ez2 +application/vnd.ezpix-album ++ +ez3 +application/vnd.ezpix-package ++ +f +text/x-fortran ++ +f4v +video/x-f4v ++ +f77 +text/x-fortran ++ +f90 +text/x-fortran ++ +fbs +image/vnd.fastbidsheet ++ +fcs +application/vnd.isac.fcs ++ +fdf +application/vnd.fdf ++ +fe_launch +application/vnd.denovo.fcselayout-link ++ +fg5 +application/vnd.fujitsu.oasysgp ++ +fgd +application/x-director ++ +fh +image/x-freehand ++ +fh4 +image/x-freehand ++ +fh5 +image/x-freehand ++ +fh7 +image/x-freehand ++ +fhc +image/x-freehand ++ +fig +application/x-xfig ++ +flac +audio/flac ++ +fli +video/x-fli ++ +flo +application/vnd.micrografx.flo ++ +flv +video/x-flv ++ +flw +application/vnd.kde.kivio ++ +flx +text/vnd.fmi.flexstor ++ +fly +text/vnd.fly ++ +fm +application/vnd.framemaker ++ +fnc +application/vnd.frogans.fnc ++ +for +text/x-fortran ++ +fpx +image/vnd.fpx ++ +frame +application/vnd.framemaker ++ +fsc +application/vnd.fsc.weblaunch ++ +fst +image/vnd.fst ++ +ftc +application/vnd.fluxtime.clip ++ +fti +application/vnd.anser-web-funds-transfer-initiation ++ +fvt +video/vnd.fvt ++ +fxp +application/vnd.adobe.fxp ++ +fxpl +application/vnd.adobe.fxp ++ +fzs +application/vnd.fuzzysheet ++ +g2w +application/vnd.geoplan ++ +g3 +image/g3fax ++ +g3w +application/vnd.geospace ++ +gac +application/vnd.groove-account ++ +gbr +application/rpki-ghostbusters ++ +gdl +model/vnd.gdl ++ +geo +application/vnd.dynageo ++ +gex +application/vnd.geometry-explorer ++ +ggb +application/vnd.geogebra.file ++ +ggt +application/vnd.geogebra.tool ++ +ghf +application/vnd.groove-help ++ +gif +image/gif ++ +gim +application/vnd.groove-identity-message ++ +gmx +application/vnd.gmx ++ +gnumeric +application/x-gnumeric ++ +gph +application/vnd.flographit ++ +gqf +application/vnd.grafeq ++ +gqs +application/vnd.grafeq ++ +gram +application/srgs ++ +gre +application/vnd.geometry-explorer ++ +grv +application/vnd.groove-injector ++ +grxml +application/srgs+xml ++ +gsf +application/x-font-ghostscript ++ +gtar +application/x-gtar ++ +gtm +application/vnd.groove-tool-message ++ +gtw +model/vnd.gtw ++ +gv +text/vnd.graphviz ++ +gxt +application/vnd.geonext ++ +gz +application/x-gzip ++ +h +text/x-c ++ +h261 +video/h261 ++ +h263 +video/h263 ++ +h264 +video/h264 ++ +hal +application/vnd.hal+xml ++ +hbci +application/vnd.hbci ++ +hdf +application/x-hdf ++ +hh +text/x-c ++ +hlp +application/winhlp ++ +hpgl +application/vnd.hp-hpgl ++ +hpid +application/vnd.hp-hpid ++ +hps +application/vnd.hp-hps ++ +hqx +application/mac-binhex40 ++ +htc +text/x-component ++ +htke +application/vnd.kenameaapp ++ +htm +text/html ++ +html +text/html ++ +hvd +application/vnd.yamaha.hv-dic ++ +hvp +application/vnd.yamaha.hv-voice ++ +hvs +application/vnd.yamaha.hv-script ++ +i2g +application/vnd.intergeo ++ +icc +application/vnd.iccprofile ++ +ice +x-conference/x-cooltalk ++ +icm +application/vnd.iccprofile ++ +ico +image/x-icon ++ +ics +text/calendar ++ +ief +image/ief ++ +ifb +text/calendar ++ +ifm +application/vnd.shana.informed.formdata ++ +iges +model/iges ++ +igl +application/vnd.igloader ++ +igm +application/vnd.insors.igm ++ +igs +model/iges ++ +igx +application/vnd.micrografx.igx ++ +iif +application/vnd.shana.informed.interchange ++ +imp +application/vnd.accpac.simply.imp ++ +ims +application/vnd.ms-ims ++ +in +text/plain ++ +ink +application/inkml+xml ++ +inkml +application/inkml+xml ++ +iota +application/vnd.astraea-software.iota ++ +ipfix +application/ipfix ++ +ipk +application/vnd.shana.informed.package ++ +irm +application/vnd.ibm.rights-management ++ +irp +application/vnd.irepository.package+xml ++ +iso +application/octet-stream ++ +itp +application/vnd.shana.informed.formtemplate ++ +ivp +application/vnd.immervision-ivp ++ +ivu +application/vnd.immervision-ivu ++ +jad +text/vnd.sun.j2me.app-descriptor ++ +jam +application/vnd.jam ++ +jar +application/java-archive ++ +java +text/x-java-source ++ +jisp +application/vnd.jisp ++ +jlt +application/vnd.hp-jlyt ++ +jnlp +application/x-java-jnlp-file ++ +joda +application/vnd.joost.joda-archive ++ +jpe +image/jpeg ++ +jpeg +image/jpeg ++ +jpg +image/jpeg ++ +jpgm +video/jpm ++ +jpgv +video/jpeg ++ +jpm +video/jpm ++ +js +application/javascript ++ +jsf +text/plain ++ +json +application/json ++ +jspf +text/plain ++ +kar +audio/midi ++ +karbon +application/vnd.kde.karbon ++ +kfo +application/vnd.kde.kformula ++ +kia +application/vnd.kidspiration ++ +kml +application/vnd.google-earth.kml+xml ++ +kmz +application/vnd.google-earth.kmz ++ +kne +application/vnd.kinar ++ +knp +application/vnd.kinar ++ +kon +application/vnd.kde.kontour ++ +kpr +application/vnd.kde.kpresenter ++ +kpt +application/vnd.kde.kpresenter ++ +ksp +application/vnd.kde.kspread ++ +ktr +application/vnd.kahootz ++ +ktx +image/ktx ++ +ktz +application/vnd.kahootz ++ +kwd +application/vnd.kde.kword ++ +kwt +application/vnd.kde.kword ++ +lasxml +application/vnd.las.las+xml ++ +latex +application/x-latex ++ +lbd +application/vnd.llamagraphics.life-balance.desktop ++ +lbe +application/vnd.llamagraphics.life-balance.exchange+xml ++ +les +application/vnd.hhe.lesson-player ++ +lha +application/octet-stream ++ +link66 +application/vnd.route66.link66+xml ++ +list +text/plain ++ +list3820 +application/vnd.ibm.modcap ++ +listafp +application/vnd.ibm.modcap ++ +log +text/plain ++ +lostxml +application/lost+xml ++ +lrf +application/octet-stream ++ +lrm +application/vnd.ms-lrm ++ +ltf +application/vnd.frogans.ltf ++ +lvp +audio/vnd.lucent.voice ++ +lwp +application/vnd.lotus-wordpro ++ +lzh +application/octet-stream ++ +m13 +application/x-msmediaview ++ +m14 +application/x-msmediaview ++ +m1v +video/mpeg ++ +m21 +application/mp21 ++ +m2a +audio/mpeg ++ +m2v +video/mpeg ++ +m3a +audio/mpeg ++ +m3u +audio/x-mpegurl ++ +m3u8 +application/vnd.apple.mpegurl ++ +m4a +audio/mp4 ++ +m4b +audio/mp4 ++ +m4r +audio/mp4 ++ +m4u +video/vnd.mpegurl ++ +m4v +video/mp4 ++ +ma +application/mathematica ++ +mac +image/x-macpaint ++ +mads +application/mads+xml ++ +mag +application/vnd.ecowin.chart ++ +maker +application/vnd.framemaker ++ +man +text/troff ++ +mathml +application/mathml+xml ++ +mb +application/mathematica ++ +mbk +application/vnd.mobius.mbk ++ +mbox +application/mbox ++ +mc1 +application/vnd.medcalcdata ++ +mcd +application/vnd.mcd ++ +mcurl +text/vnd.curl.mcurl ++ +mdb +application/x-msaccess ++ +mdi +image/vnd.ms-modi ++ +me +text/troff ++ +mesh +model/mesh ++ +meta4 +application/metalink4+xml ++ +mets +application/mets+xml ++ +mfm +application/vnd.mfmp ++ +mft +application/rpki-manifest ++ +mgp +application/vnd.osgeo.mapguide.package ++ +mgz +application/vnd.proteus.magazine ++ +mid +audio/midi ++ +midi +audio/midi ++ +mif +application/x-mif ++ +mime +message/rfc822 ++ +mj2 +video/mj2 ++ +mjp2 +video/mj2 ++ +mlp +application/vnd.dolby.mlp ++ +mmd +application/vnd.chipnuts.karaoke-mmd ++ +mmf +application/vnd.smaf ++ +mmr +image/vnd.fujixerox.edmics-mmr ++ +mny +application/x-msmoney ++ +mobi +application/x-mobipocket-ebook ++ +mods +application/mods+xml ++ +mov +video/quicktime ++ +movie +video/x-sgi-movie ++ +mp1 +audio/mpeg ++ +mp2 +audio/mpeg ++ +mp21 +application/mp21 ++ +mp2a +audio/mpeg ++ +mp3 +audio/mpeg ++ +mp4 +video/mp4 ++ +mp4a +audio/mp4 ++ +mp4s +application/mp4 ++ +mp4v +video/mp4 ++ +mpa +audio/mpeg ++ +mpc +application/vnd.mophun.certificate ++ +mpe +video/mpeg ++ +mpeg +video/mpeg ++ +mpega +audio/x-mpeg ++ +mpg +video/mpeg ++ +mpg4 +video/mp4 ++ +mpga +audio/mpeg ++ +mpkg +application/vnd.apple.installer+xml ++ +mpm +application/vnd.blueice.multipass ++ +mpn +application/vnd.mophun.application ++ +mpp +application/vnd.ms-project ++ +mpt +application/vnd.ms-project ++ +mpv2 +video/mpeg2 ++ +mpy +application/vnd.ibm.minipay ++ +mqy +application/vnd.mobius.mqy ++ +mrc +application/marc ++ +mrcx +application/marcxml+xml ++ +ms +text/troff ++ +mscml +application/mediaservercontrol+xml ++ +mseed +application/vnd.fdsn.mseed ++ +mseq +application/vnd.mseq ++ +msf +application/vnd.epson.msf ++ +msh +model/mesh ++ +msi +application/x-msdownload ++ +msl +application/vnd.mobius.msl ++ +msty +application/vnd.muvee.style ++ +mts +model/vnd.mts ++ +mus +application/vnd.musician ++ +musicxml +application/vnd.recordare.musicxml+xml ++ +mvb +application/x-msmediaview ++ +mwf +application/vnd.mfer ++ +mxf +application/mxf ++ +mxl +application/vnd.recordare.musicxml ++ +mxml +application/xv+xml ++ +mxs +application/vnd.triscape.mxs ++ +mxu +video/vnd.mpegurl ++ +n-gage +application/vnd.nokia.n-gage.symbian.install ++ +n3 +text/n3 ++ +nb +application/mathematica ++ +nbp +application/vnd.wolfram.player ++ +nc +application/x-netcdf ++ +ncx +application/x-dtbncx+xml ++ +ngdat +application/vnd.nokia.n-gage.data ++ +nlu +application/vnd.neurolanguage.nlu ++ +nml +application/vnd.enliven ++ +nnd +application/vnd.noblenet-directory ++ +nns +application/vnd.noblenet-sealer ++ +nnw +application/vnd.noblenet-web ++ +npx +image/vnd.net-fpx ++ +nsf +application/vnd.lotus-notes ++ +oa2 +application/vnd.fujitsu.oasys2 ++ +oa3 +application/vnd.fujitsu.oasys3 ++ +oas +application/vnd.fujitsu.oasys ++ +obd +application/x-msbinder ++ +oda +application/oda ++ + +odb +application/vnd.oasis.opendocument.database ++ + +odc +application/vnd.oasis.opendocument.chart ++ + +odf +application/vnd.oasis.opendocument.formula ++ +odft +application/vnd.oasis.opendocument.formula-template ++ + +odg +application/vnd.oasis.opendocument.graphics ++ + +odi +application/vnd.oasis.opendocument.image ++ + +odm +application/vnd.oasis.opendocument.text-master ++ + +odp +application/vnd.oasis.opendocument.presentation ++ + +ods +application/vnd.oasis.opendocument.spreadsheet ++ + +odt +application/vnd.oasis.opendocument.text ++ +oga +audio/ogg ++ +ogg +audio/ogg ++ +ogv +video/ogg ++ + +ogx +application/ogg ++ +onepkg +application/onenote ++ +onetmp +application/onenote ++ +onetoc +application/onenote ++ +onetoc2 +application/onenote ++ +opf +application/oebps-package+xml ++ +oprc +application/vnd.palm ++ +org +application/vnd.lotus-organizer ++ +osf +application/vnd.yamaha.openscoreformat ++ +osfpvg +application/vnd.yamaha.openscoreformat.osfpvg+xml ++ +otc +application/vnd.oasis.opendocument.chart-template ++ +otf +application/x-font-otf ++ + +otg +application/vnd.oasis.opendocument.graphics-template ++ + +oth +application/vnd.oasis.opendocument.text-web ++ +oti +application/vnd.oasis.opendocument.image-template ++ + +otp +application/vnd.oasis.opendocument.presentation-template ++ + +ots +application/vnd.oasis.opendocument.spreadsheet-template ++ + +ott +application/vnd.oasis.opendocument.text-template ++ +oxps +application/oxps ++ +oxt +application/vnd.openofficeorg.extension ++ +p +text/x-pascal ++ +p10 +application/pkcs10 ++ +p12 +application/x-pkcs12 ++ +p7b +application/x-pkcs7-certificates ++ +p7c +application/pkcs7-mime ++ +p7m +application/pkcs7-mime ++ +p7r +application/x-pkcs7-certreqresp ++ +p7s +application/pkcs7-signature ++ +p8 +application/pkcs8 ++ +pas +text/x-pascal ++ +paw +application/vnd.pawaafile ++ +pbd +application/vnd.powerbuilder6 ++ +pbm +image/x-portable-bitmap ++ +pcap +application/vnd.tcpdump.pcap ++ +pcf +application/x-font-pcf ++ +pcl +application/vnd.hp-pcl ++ +pclxl +application/vnd.hp-pclxl ++ +pct +image/pict ++ +pcurl +application/vnd.curl.pcurl ++ +pcx +image/x-pcx ++ +pdb +application/vnd.palm ++ +application/pdf ++ +pfa +application/x-font-type1 ++ +pfb +application/x-font-type1 ++ +pfm +application/x-font-type1 ++ +pfr +application/font-tdpfr ++ +pfx +application/x-pkcs12 ++ +pgm +image/x-portable-graymap ++ +pgn +application/x-chess-pgn ++ +pgp +application/pgp-encrypted ++ +pic +image/pict ++ +pict +image/pict ++ +pkg +application/octet-stream ++ +pki +application/pkixcmp ++ +pkipath +application/pkix-pkipath ++ +plb +application/vnd.3gpp.pic-bw-large ++ +plc +application/vnd.mobius.plc ++ +plf +application/vnd.pocketlearn ++ +pls +audio/x-scpls ++ +pml +application/vnd.ctc-posml ++ +png +image/png ++ +pnm +image/x-portable-anymap ++ +pnt +image/x-macpaint ++ +portpkg +application/vnd.macports.portpkg ++ +pot +application/vnd.ms-powerpoint ++ +potm +application/vnd.ms-powerpoint.template.macroenabled.12 ++ +potx +application/vnd.openxmlformats-officedocument.presentationml.template ++ +ppam +application/vnd.ms-powerpoint.addin.macroenabled.12 ++ +ppd +application/vnd.cups-ppd ++ +ppm +image/x-portable-pixmap ++ +pps +application/vnd.ms-powerpoint ++ +ppsm +application/vnd.ms-powerpoint.slideshow.macroenabled.12 ++ +ppsx +application/vnd.openxmlformats-officedocument.presentationml.slideshow ++ +ppt +application/vnd.ms-powerpoint ++ +pptm +application/vnd.ms-powerpoint.presentation.macroenabled.12 ++ +pptx +application/vnd.openxmlformats-officedocument.presentationml.presentation ++ +pqa +application/vnd.palm ++ +prc +application/x-mobipocket-ebook ++ +pre +application/vnd.lotus-freelance ++ +prf +application/pics-rules ++ +ps +application/postscript ++ +psb +application/vnd.3gpp.pic-bw-small ++ +psd +image/vnd.adobe.photoshop ++ +psf +application/x-font-linux-psf ++ +pskcxml +application/pskc+xml ++ +ptid +application/vnd.pvi.ptid1 ++ +pub +application/x-mspublisher ++ +pvb +application/vnd.3gpp.pic-bw-var ++ +pwn +application/vnd.3m.post-it-notes ++ +pya +audio/vnd.ms-playready.media.pya ++ +pyv +video/vnd.ms-playready.media.pyv ++ +qam +application/vnd.epson.quickanime ++ +qbo +application/vnd.intu.qbo ++ +qfx +application/vnd.intu.qfx ++ +qps +application/vnd.publishare-delta-tree ++ +qt +video/quicktime ++ +qti +image/x-quicktime ++ +qtif +image/x-quicktime ++ +qwd +application/vnd.quark.quarkxpress ++ +qwt +application/vnd.quark.quarkxpress ++ +qxb +application/vnd.quark.quarkxpress ++ +qxd +application/vnd.quark.quarkxpress ++ +qxl +application/vnd.quark.quarkxpress ++ +qxt +application/vnd.quark.quarkxpress ++ +ra +audio/x-pn-realaudio ++ +ram +audio/x-pn-realaudio ++ +rar +application/x-rar-compressed ++ +ras +image/x-cmu-raster ++ +rcprofile +application/vnd.ipunplugged.rcprofile ++ +rdf +application/rdf+xml ++ +rdz +application/vnd.data-vision.rdz ++ +rep +application/vnd.businessobjects ++ +res +application/x-dtbresource+xml ++ +rgb +image/x-rgb ++ +rif +application/reginfo+xml ++ +rip +audio/vnd.rip ++ +rl +application/resource-lists+xml ++ +rlc +image/vnd.fujixerox.edmics-rlc ++ +rld +application/resource-lists-diff+xml ++ +rm +application/vnd.rn-realmedia ++ +rmi +audio/midi ++ +rmp +audio/x-pn-realaudio-plugin ++ +rms +application/vnd.jcp.javame.midlet-rms ++ +rnc +application/relax-ng-compact-syntax ++ +roa +application/rpki-roa ++ +roff +text/troff ++ +rp9 +application/vnd.cloanto.rp9 ++ +rpss +application/vnd.nokia.radio-presets ++ +rpst +application/vnd.nokia.radio-preset ++ +rq +application/sparql-query ++ +rs +application/rls-services+xml ++ +rsd +application/rsd+xml ++ +rss +application/rss+xml ++ +rtf +application/rtf ++ +rtx +text/richtext ++ +s +text/x-asm ++ +saf +application/vnd.yamaha.smaf-audio ++ +sbml +application/sbml+xml ++ +sc +application/vnd.ibm.secure-container ++ +scd +application/x-msschedule ++ +scm +application/vnd.lotus-screencam ++ +scq +application/scvp-cv-request ++ +scs +application/scvp-cv-response ++ +scurl +text/vnd.curl.scurl ++ +sda +application/vnd.stardivision.draw ++ +sdc +application/vnd.stardivision.calc ++ +sdd +application/vnd.stardivision.impress ++ +sdkd +application/vnd.solent.sdkm+xml ++ +sdkm +application/vnd.solent.sdkm+xml ++ +sdp +application/sdp ++ +sdw +application/vnd.stardivision.writer ++ +see +application/vnd.seemail ++ +seed +application/vnd.fdsn.seed ++ +sema +application/vnd.sema ++ +semd +application/vnd.semd ++ +semf +application/vnd.semf ++ +ser +application/java-serialized-object ++ +setpay +application/set-payment-initiation ++ +setreg +application/set-registration-initiation ++ +sfd-hdstx +application/vnd.hydrostatix.sof-data ++ +sfs +application/vnd.spotfire.sfs ++ +sgl +application/vnd.stardivision.writer-global ++ +sgm +text/sgml ++ +sgml +text/sgml ++ +sh +application/x-sh ++ +shar +application/x-shar ++ + +shf +application/shf+xml ++ +sig +application/pgp-signature ++ +silo +model/mesh ++ +sis +application/vnd.symbian.install ++ +sisx +application/vnd.symbian.install ++ +sit +application/x-stuffit ++ +sitx +application/x-stuffitx ++ +skd +application/vnd.koan ++ +skm +application/vnd.koan ++ +skp +application/vnd.koan ++ +skt +application/vnd.koan ++ +sldm +application/vnd.ms-powerpoint.slide.macroenabled.12 ++ +sldx +application/vnd.openxmlformats-officedocument.presentationml.slide ++ +slt +application/vnd.epson.salt ++ +sm +application/vnd.stepmania.stepchart ++ +smf +application/vnd.stardivision.math ++ +smi +application/smil+xml ++ +smil +application/smil+xml ++ +smzip +application/vnd.stepmania.package ++ +snd +audio/basic ++ +snf +application/x-font-snf ++ +so +application/octet-stream ++ +spc +application/x-pkcs7-certificates ++ +spf +application/vnd.yamaha.smaf-phrase ++ +spl +application/x-futuresplash ++ +spot +text/vnd.in3d.spot ++ +spp +application/scvp-vp-response ++ +spq +application/scvp-vp-request ++ +spx +audio/ogg ++ +src +application/x-wais-source ++ +sru +application/sru+xml ++ +srx +application/sparql-results+xml ++ +sse +application/vnd.kodak-descriptor ++ +ssf +application/vnd.epson.ssf ++ +ssml +application/ssml+xml ++ +st +application/vnd.sailingtracker.track ++ +stc +application/vnd.sun.xml.calc.template ++ +std +application/vnd.sun.xml.draw.template ++ +stf +application/vnd.wt.stf ++ +sti +application/vnd.sun.xml.impress.template ++ +stk +application/hyperstudio ++ +stl +application/vnd.ms-pki.stl ++ +str +application/vnd.pg.format ++ +stw +application/vnd.sun.xml.writer.template ++ +sub +text/vnd.dvb.subtitle ++ +sus +application/vnd.sus-calendar ++ +susp +application/vnd.sus-calendar ++ +sv4cpio +application/x-sv4cpio ++ +sv4crc +application/x-sv4crc ++ +svc +application/vnd.dvb.service ++ +svd +application/vnd.svd ++ +svg +image/svg+xml ++ +svgz +image/svg+xml ++ +swa +application/x-director ++ +swf +application/x-shockwave-flash ++ +swi +application/vnd.aristanetworks.swi ++ +sxc +application/vnd.sun.xml.calc ++ +sxd +application/vnd.sun.xml.draw ++ +sxg +application/vnd.sun.xml.writer.global ++ +sxi +application/vnd.sun.xml.impress ++ +sxm +application/vnd.sun.xml.math ++ +sxw +application/vnd.sun.xml.writer ++ +t +text/troff ++ +taglet +application/vnd.mynfc ++ +tao +application/vnd.tao.intent-module-archive ++ +tar +application/x-tar ++ +tcap +application/vnd.3gpp2.tcap ++ +tcl +application/x-tcl ++ +teacher +application/vnd.smart.teacher ++ +tei +application/tei+xml ++ +teicorpus +application/tei+xml ++ +tex +application/x-tex ++ +texi +application/x-texinfo ++ +texinfo +application/x-texinfo ++ +text +text/plain ++ +tfi +application/thraud+xml ++ +tfm +application/x-tex-tfm ++ +thmx +application/vnd.ms-officetheme ++ +tif +image/tiff ++ +tiff +image/tiff ++ +tmo +application/vnd.tmobile-livetv ++ +torrent +application/x-bittorrent ++ +tpl +application/vnd.groove-tool-template ++ +tpt +application/vnd.trid.tpt ++ +tr +text/troff ++ +tra +application/vnd.trueapp ++ +trm +application/x-msterminal ++ +tsd +application/timestamped-data ++ +tsv +text/tab-separated-values ++ +ttc +application/x-font-ttf ++ +ttf +application/x-font-ttf ++ +ttl +text/turtle ++ +twd +application/vnd.simtech-mindmapper ++ +twds +application/vnd.simtech-mindmapper ++ +txd +application/vnd.genomatix.tuxedo ++ +txf +application/vnd.mobius.txf ++ +txt +text/plain ++ +u32 +application/x-authorware-bin ++ +udeb +application/x-debian-package ++ +ufd +application/vnd.ufdl ++ +ufdl +application/vnd.ufdl ++ +ulw +audio/basic ++ +umj +application/vnd.umajin ++ +unityweb +application/vnd.unity ++ +uoml +application/vnd.uoml+xml ++ +uri +text/uri-list ++ +uris +text/uri-list ++ +urls +text/uri-list ++ +ustar +application/x-ustar ++ +utz +application/vnd.uiq.theme ++ +uu +text/x-uuencode ++ +uva +audio/vnd.dece.audio ++ +uvd +application/vnd.dece.data ++ +uvf +application/vnd.dece.data ++ +uvg +image/vnd.dece.graphic ++ +uvh +video/vnd.dece.hd ++ +uvi +image/vnd.dece.graphic ++ +uvm +video/vnd.dece.mobile ++ +uvp +video/vnd.dece.pd ++ +uvs +video/vnd.dece.sd ++ +uvt +application/vnd.dece.ttml+xml ++ +uvu +video/vnd.uvvu.mp4 ++ +uvv +video/vnd.dece.video ++ +uvva +audio/vnd.dece.audio ++ +uvvd +application/vnd.dece.data ++ +uvvf +application/vnd.dece.data ++ +uvvg +image/vnd.dece.graphic ++ +uvvh +video/vnd.dece.hd ++ +uvvi +image/vnd.dece.graphic ++ +uvvm +video/vnd.dece.mobile ++ +uvvp +video/vnd.dece.pd ++ +uvvs +video/vnd.dece.sd ++ +uvvt +application/vnd.dece.ttml+xml ++ +uvvu +video/vnd.uvvu.mp4 ++ +uvvv +video/vnd.dece.video ++ +uvvx +application/vnd.dece.unspecified ++ +uvvz +application/vnd.dece.zip ++ +uvx +application/vnd.dece.unspecified ++ +uvz +application/vnd.dece.zip ++ +vcard +text/vcard ++ +vcd +application/x-cdlink ++ +vcf +text/x-vcard ++ +vcg +application/vnd.groove-vcard ++ +vcs +text/x-vcalendar ++ +vcx +application/vnd.vcx ++ +vis +application/vnd.visionary ++ +viv +video/vnd.vivo ++ +vor +application/vnd.stardivision.writer ++ +vox +application/x-authorware-bin ++ +vrml +model/vrml ++ +vsd +application/vnd.visio ++ +vsf +application/vnd.vsf ++ +vss +application/vnd.visio ++ +vst +application/vnd.visio ++ +vsw +application/vnd.visio ++ +vtu +model/vnd.vtu ++ +vxml +application/voicexml+xml ++ +w3d +application/x-director ++ +wad +application/x-doom ++ +wav +audio/x-wav ++ +wax +audio/x-ms-wax ++ + +wbmp +image/vnd.wap.wbmp ++ +wbs +application/vnd.criticaltools.wbs+xml ++ +wbxml +application/vnd.wap.wbxml ++ +wcm +application/vnd.ms-works ++ +wdb +application/vnd.ms-works ++ +weba +audio/webm ++ +webm +video/webm ++ +webp +image/webp ++ +wg +application/vnd.pmi.widget ++ +wgt +application/widget ++ +wks +application/vnd.ms-works ++ +wm +video/x-ms-wm ++ +wma +audio/x-ms-wma ++ +wmd +application/x-ms-wmd ++ +wmf +application/x-msmetafile ++ + +wml +text/vnd.wap.wml ++ + +wmlc +application/vnd.wap.wmlc ++ + +wmls +text/vnd.wap.wmlscript ++ + +wmlsc +application/vnd.wap.wmlscriptc ++ +wmv +video/x-ms-wmv ++ +wmx +video/x-ms-wmx ++ +wmz +application/x-ms-wmz ++ +woff +application/x-font-woff ++ +wpd +application/vnd.wordperfect ++ +wpl +application/vnd.ms-wpl ++ +wps +application/vnd.ms-works ++ +wqd +application/vnd.wqd ++ +wri +application/x-mswrite ++ +wrl +model/vrml ++ +wsdl +application/wsdl+xml ++ +wspolicy +application/wspolicy+xml ++ +wtb +application/vnd.webturbo ++ +wvx +video/x-ms-wvx ++ +x32 +application/x-authorware-bin ++ +x3d +application/vnd.hzn-3d-crossword ++ +xap +application/x-silverlight-app ++ +xar +application/vnd.xara ++ +xbap +application/x-ms-xbap ++ +xbd +application/vnd.fujixerox.docuworks.binder ++ +xbm +image/x-xbitmap ++ +xdf +application/xcap-diff+xml ++ +xdm +application/vnd.syncml.dm+xml ++ +xdp +application/vnd.adobe.xdp+xml ++ +xdssc +application/dssc+xml ++ +xdw +application/vnd.fujixerox.docuworks ++ +xenc +application/xenc+xml ++ +xer +application/patch-ops-error+xml ++ +xfdf +application/vnd.adobe.xfdf ++ +xfdl +application/vnd.xfdl ++ +xht +application/xhtml+xml ++ +xhtml +application/xhtml+xml ++ +xhvml +application/xv+xml ++ +xif +image/vnd.xiff ++ +xla +application/vnd.ms-excel ++ +xlam +application/vnd.ms-excel.addin.macroenabled.12 ++ +xlc +application/vnd.ms-excel ++ +xlm +application/vnd.ms-excel ++ +xls +application/vnd.ms-excel ++ +xlsb +application/vnd.ms-excel.sheet.binary.macroenabled.12 ++ +xlsm +application/vnd.ms-excel.sheet.macroenabled.12 ++ +xlsx +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ++ +xlt +application/vnd.ms-excel ++ +xltm +application/vnd.ms-excel.template.macroenabled.12 ++ +xltx +application/vnd.openxmlformats-officedocument.spreadsheetml.template ++ +xlw +application/vnd.ms-excel ++ +xml +application/xml ++ +xo +application/vnd.olpc-sugar ++ +xop +application/xop+xml ++ +xpi +application/x-xpinstall ++ +xpm +image/x-xpixmap ++ +xpr +application/vnd.is-xpr ++ +xps +application/vnd.ms-xpsdocument ++ +xpw +application/vnd.intercon.formnet ++ +xpx +application/vnd.intercon.formnet ++ +xsl +application/xml ++ +xslt +application/xslt+xml ++ +xsm +application/vnd.syncml+xml ++ +xspf +application/xspf+xml ++ +xul +application/vnd.mozilla.xul+xml ++ +xvm +application/xv+xml ++ +xvml +application/xv+xml ++ +xwd +image/x-xwindowdump ++ +xyz +chemical/x-xyz ++ +yang +application/yang ++ +yin +application/yin+xml ++ +z +application/x-compress ++ +Z +application/x-compress ++ +zaz +application/vnd.zzazz.deck+xml ++ +zip +application/zip ++ +zir +application/vnd.zul ++ +zirz +application/vnd.zul ++ + + + + + + + + + + + + + + + +zmm +application/vnd.handheld-entertainment+xml ++ + +index.html +index.htm +index.jsp +- -``` - -##### **三、构建好项目结构** - - - -##### **四、编写 Blog 实体类、config 里的各种配置类** - - **Blog 实体类** - -```java -package com.entity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data // 自动生成 set,get,toString 方法 -@AllArgsConstructor // 自动生成 有参构造 方法 -@NoArgsConstructor // 自动生成 无参构造 方法 -public class Blog { - private int blogId; - private String blogTitle; - private String blogAuthor; - private String blogText; -} -``` - -**JdbcConfig 配置类** - -```java -package com.config; - -import com.alibaba.druid.pool.DruidDataSource; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; - -import javax.sql.DataSource; - -@Component // 声明组件 -public class JdbcConfig { - @Bean // 创建一个Bean - public DataSource dataSource(){ - DruidDataSource druidDataSource = new DruidDataSource(); - druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); - druidDataSource.setUrl("jdbc:mysql:///demo"); - druidDataSource.setUsername("root"); - druidDataSource.setPassword("123456"); - return druidDataSource; - } -} -``` - -**MybatisConfig 配置类** - -```java -package com.config; - -import org.mybatis.spring.SqlSessionFactoryBean; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; - -import javax.sql.DataSource; - -@Component // 声明组件 -@MapperScan("com.mapper") // 扫包 -public class MyBatisConfig { - @Bean // 创建一个Bean - public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ - SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); - sqlSessionFactoryBean.setDataSource(dataSource); - return sqlSessionFactoryBean; - } -} -``` - -**SpringConfig 配置类** - -```java -package com.config; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -@Configuration // 声明为配置文件 -@ComponentScan("com.service") // 扫包 -@Import({JdbcConfig.class, MyBatisConfig.class}) // 导入类 -public class SpringConfig { -} -``` - -**SpringMvcConfig 配置类** - -```java -package com.config; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration // 声明为配置文件 -@ComponentScan("com.controller") // 扫包 -@EnableWebMvc // MVC 核心注解 -public class SpringMvcConfig implements WebMvcConfigurer { - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("/**").addResourceLocations("/"); - } -} -``` - -**WebConfig 配置类** - -```java -package com.config; - -import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; - -public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { - @Override - protected Class>[] getRootConfigClasses() { - return new Class[]{SpringConfig.class}; - } - - @Override - protected Class>[] getServletConfigClasses() { - return new Class[]{SpringMvcConfig.class}; - } - - @Override - protected String[] getServletMappings() { - return new String[]{"/"}; - } -} -``` - -##### **五、编写 BlogMapper 接口、BlogService 接口、BlogServiceImpl 实现类** - -**BlogMapper 接口** - -```java -package com.mapper; - -import com.entity.Blog; -import org.apache.ibatis.annotations.*; - -import java.util.List; - -@Mapper // 声明为 Mapper 配置文件 -public interface BlogMapper { - // 查询所有博客信息 - @Select("select * from blog;") - List4.0.0 -com.jd -myBlog -war -1.0-SNAPSHOT -- - -UTF-8 -- - -- - - -org.springframework -spring-webmvc -5.2.25.RELEASE -- - - -org.springframework -spring-test -5.2.25.RELEASE -- - -org.springframework -spring-jdbc -5.2.25.RELEASE -- - -javax.servlet -javax.servlet-api -3.1.0 -provided -- - - -com.fasterxml.jackson.core -jackson-databind -2.9.0 -- - -org.projectlombok -lombok -1.18.36 -- - - -org.mybatis -mybatis -3.5.16 -- - -com.mysql -mysql-connector-j -8.3.0 -- - - -junit -junit -4.13.2 -test -- - - - -com.alibaba -druid -1.1.20 -- -org.mybatis -mybatis-spring -2.0.6 -- -- -- -org.apache.tomcat.maven -tomcat7-maven-plugin -2.2 -- -/ -80 -utf-8 -selectAllBlogs(); - - // id 查询一个博客信息 - @Select("select * from blog where blogId = #{id};") - Blog selectOneBlogById(int id); - - // title 查询博客信息 - @Select("select * from blog where blogTitle like '%${title}%';") - List selectOneBlogByTitle(String title); - - // id 删除一个博客信息 - @Delete("delete from blog where blogId = #{id};") - int deleteOneBlog(int id); - - // 新增一个博客信息 - @Insert("insert into blog (blogTitle, blogAuthor, blogText) values (#{blogTitle},#{blogAuthor},#{blogText});") - int insertOneBlog(Blog blog); - - // 修改一个博客信息 - @Update("update blog set blogTitle= #{blogTitle},blogAuthor= #{blogAuthor}, blogText= #{blogText} where blogId = #{blogId};") - int updateOneBlog(Blog blog); -} -``` - -**BlogService 接口** - -```java -package com.service; - -import com.entity.Blog; - -import java.util.List; - -public interface BlogService { - // 查询所有博客信息 - List selectAllBlogs(); - - // id 查询一个博客信息 - Blog selectOneBlogById(int id); - - // title 查询博客信息 - List selectOneBlogByTitle(String title); - - // id 删除一个博客信息 - int deleteOneBlog(int id); - - // 新增一个博客信息 - int insertOneBlog(Blog blog); - - // 修改一个博客信息 - int updateOneBlog(Blog blog); -} -``` - -**BlogServiceImpl 实现类** - -```java -package com.service.impl; - -import com.entity.Blog; -import com.mapper.BlogMapper; -import com.service.BlogService; -import lombok.Data; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Data // 自动生成 set,get,toString 方法 -@Service // 声明为 Service 配置文件 -public class BlogServiceImpl implements BlogService { - @Autowired // 自动装配 - private BlogMapper blogMapper; // 注入接口 - - // 查询所有博客信息 - @Override - public List selectAllBlogs() { - return blogMapper.selectAllBlogs(); - } - - // id 查询一个博客信息 - @Override - public Blog selectOneBlogById(int id) { - return blogMapper.selectOneBlogById(id); - } - - // title 查询博客信息 - @Override - public List selectOneBlogByTitle(String title) { - return blogMapper.selectOneBlogByTitle(title); - } - - // id 删除一个博客信息 - @Override - public int deleteOneBlog(int id) { - return blogMapper.deleteOneBlog(id); - } - - // 新增一个博客信息 - @Override - public int insertOneBlog(Blog blog) { - return blogMapper.insertOneBlog(blog); - } - - // 修改一个博客信息 - @Override - public int updateOneBlog(Blog blog) { - return blogMapper.updateOneBlog(blog); - } -} -``` - -##### **六、编写 BlogController 类** - -**BlogController 类** - -```java -package com.controller; - -import com.entity.Blog; -import com.service.BlogService; -import lombok.Data; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@Data // 自动生成 set,get,toString 方法 -@RestController // 声明为 RestController 配置文件 -@CrossOrigin // 跨域运行 -@RequestMapping("/blog") // 请求地址 - -public class BlogController { - @Autowired // 自动装配 - private BlogService blogService; // 注入接口 - - // 查询所有博客信息 - @GetMapping - public List selectAllBlogs() { - return blogService.selectAllBlogs(); - } - - // id 查询一个博客信息 - @GetMapping("/{id}") - public Blog selectOneBlogById(@PathVariable String id) { - return blogService.selectOneBlogById(Integer.parseInt(id)); - } - - // title 查询博客信息 - @GetMapping(params = "title") - public List selectOneBlogByTitle(String title) { - return blogService.selectOneBlogByTitle(title); - } - - // id 删除一个博客信息 - @DeleteMapping("/{id}") - public int deleteOneBlog(@PathVariable String id) { - return blogService.deleteOneBlog(Integer.parseInt(id)); - } - - // 新增一个博客信息 - @PostMapping - public int insertOneBlog(@RequestBody Blog blog) { - return blogService.insertOneBlog(blog); - } - - // 修改一个博客信息 - @PutMapping - public int updateOneBlog(@RequestBody Blog blog) { - return blogService.updateOneBlog(blog); - } -} -``` - -##### **七、启动Tomcat** - - - -##### **八、修改前端请求页面** - -**index.html** - -```html - - - - - - - 学生管理系统 - - - - -- -- - - -``` - -**styles.css** - -```css -body { - font-family: Arial, sans-serif; - background-color: #e0f7fa; /* 浅蓝色背景 */ - margin: 0; - padding: 20px; -} - -.container { - max-width: 800px; - margin: 0 auto; - background: #ffffff; /* 保持白色背景,或者可以更改为更浅的蓝色 */ - padding: 20px; - box-shadow: 0 0 10px rgba(0, 123, 255, 0.1); /* 蓝色阴影 */ -} - -h1 { - text-align: center; - color: #007bff; /* 深蓝色标题 */ -} - -#search-box { - padding: 10px; - width: calc(100% - 120px); - border: 1px solid #cce5ff; /* 浅蓝色边框 */ - border-radius: 4px; - height: 18px; -} - -#add-book-btn { - padding: 10px 20px; - background-color: #007bff; /* 深蓝色按钮 */ - color: white; - border: none; - height: 40px; - border-radius: 4px; - cursor: pointer; -} - -#add-book-btn:hover { - background-color: #0056b3; /* 深一些的蓝色按钮悬停效果 */ -} - -table { - width: 100%; - border-collapse: collapse; - margin-bottom: 20px; -} - -th, td { - padding: 10px; - border: 1px solid #cce5ff; /* 浅蓝色边框 */ - text-align: center; -} - -th { - background-color: #d1ecf1; /* 浅蓝色表头背景 */ -} -tr:hover { - background-color: #e0f7fa; /* 浅蓝色高亮背景,与页面背景相近但稍浅 */ -} -.modal { - display: none; - position: fixed; - z-index: 1; - left: 0; - top: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.4); /* 蓝色半透明背景 */ -} - -.modal-content { - background-color: #fefefe; /* 保持白色背景,或者可以更改为更浅的蓝色 */ - /* 注意:以下两行原本用于居中的代码是错误的,应该移除或更正 */ - transform: translate(60%, 40%); - /* margin应该用于.modal而不是.modal-content来实现居中 */ - padding: 35px; - border: 1px solid #cce5ff; /* 浅蓝色边框 */ - width: 40%; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); /* 蓝色阴影 */ - /* 为了实现.modal-content的居中,您可能需要添加额外的CSS或使用JavaScript */ -} - -/* 注意:.close-btn的颜色已经在.modal-content之外定义,如果需要更改为蓝色调,可以如下修改 */ -.close-btn { - color: #007bff; /* 深蓝色关闭按钮 */ - float: right; - font-size: 28px; - font-weight: bold; - cursor: pointer; -} - -.close-btn:hover, -.close-btn:focus { - color: #0056b3; /* 深一些的蓝色关闭按钮悬停效果 */ - text-decoration: none; - cursor: pointer; -} - -form { - display: flex; - flex-direction: column; -} - -label { - margin-bottom: 8px; - color: #007bff; /* 深蓝色标签 */ -} - -input[type="text"], input[type="hidden"] { - margin-bottom: 15px; - padding: 10px; - border: 1px solid #cce5ff; /* 浅蓝色边框 */ - border-radius: 4px; -} - -button[type="submit"] { - padding: 10px 20px; - background-color: #007bff; /* 深蓝色提交按钮 */ - color: white; - border: none; - border-radius: 4px; - cursor: pointer; -} - -button[type="submit"]:hover { - background-color: #0056b3; /* 深一些的蓝色提交按钮悬停效果 */ -} -``` - -**data.js** - -```javascript -// 私有变量 -const addBtn = document.querySelector('#add-btn'); -const modal = document.querySelector('.modal'); -const closeModalBtn = document.querySelector('#close-form-btn'); -const tbody = document.querySelector('tbody'); -const form = document.querySelector('#item-form'); -const searchBox = document.querySelector("#search-box"); -const formTitle = document.querySelector("#form-title"); - -// 表单选项 -//#######################改改改################################ -let studentId = document.querySelector("#studentId"); -let studentName = document.querySelector("#studentName"); -let classname = document.querySelector("#classname"); -let classTeacher = document.querySelector("#classTeacher"); -//############################################################# - - -let data = []; -// api接口设置 -// const API_BASE_URL = "http://localhost/book"; -const API_BASE_URL = "http://localhost/blog"; // #### 改改改 #### - -// 搜索功能 -function search(name) { - axios.get(API_BASE_URL + `?title=${name}`).then(res => { - data = res.data; - renderTable(data); - }); -} - -// 渲染表格数据 # 修改item.后面的属性名称 -function renderTable(data) { - if (data.length === 0) return alert("无内容"); - tbody.innerHTML = data.map(item => { - return `博客管理系统
-- - - - --- -
-- - - - - -ID - -标题 - -作者 - -文本 -操作 --- -- `; - }).join(''); - - // 添加事件监听器(事件委托) - tbody.addEventListener('click', handleTableClick); -} - -// 更新,先回显要被修改的旧数据 -function update(id) { - axios.get(API_BASE_URL + `/${id}`).then(res => { - const data = res.data; - showOrCloseModal(); - form.reset(); - - // ########以下内容要修改########## - - // formTitle.innerText = '更新图书'; - formTitle.innerText = '更新博客'; - studentId.value = data.blogId; - studentName.value = data.blogTitle; - classname.value = data.blogAuthor; - classTeacher.value = data.blogText; - - // ######以上内容要修改##### - }); -} - - -// 处理表格点击事件 -function handleTableClick(e) { - if (e.target.classList.contains('delete-btn')) { - deleteItem(e.target.closest('tr').dataset.id); - } else if (e.target.classList.contains('update-btn')) { - update(e.target.closest('tr').dataset.id); - } -} - -// 开关浮层 -function showOrCloseModal(show = true) { - if (show) { - modal.style.display = 'block'; - } else { - modal.style.display = 'none'; - } - - studentId.value = null; // 重置当前编辑的图书ID - -} - -// 获取列表 -function fetch() { - axios.get(API_BASE_URL).then(res => { - console.log(res) - data = res.data; - renderTable(data); - }); - -} - -// 根据id删除 -function deleteItem(id) { - if (!confirm("真的要删除吗?")) return; - axios.delete(API_BASE_URL + `/${id}`).then(res => { - alert("删除成功!") - fetch(); - }); -} - - -// 点击保存按钮:添加或更新图书 -function save() { - - // 获取表单项的值######改改##### - - // 非空判断 - if (!studentName.value || !classname.value || !classTeacher.value) { - alert("所有字段都必须填写!"); - return; - } - // 表单项的值,封装成一个对象 - const item = { - blogId: studentId.value || null, // 如果为空,则视为添加新图书 - blogTitle: studentName.value, - blogAuthor: classname.value, - blogText: classTeacher.value - }; - - // 根据编号判断是添加还是更新 - if (studentId.value!='') { - axios.put(API_BASE_URL, item).then(res => { - alert("修改成功") - fetch(); - showOrCloseModal(false); - }) - } else { - axios.post(API_BASE_URL, item).then(res => { - console.log(item) - alert("添加成功") - fetch(); - showOrCloseModal(false); - }) - } - -} - - -// 初始化事件监听器 -function init() { - addBtn.addEventListener('click', () => { - form.reset(); - // formTitle.innerText = '添加图书'; - formTitle.innerText = '添加博客'; - showOrCloseModal(); - }); - - closeModalBtn.addEventListener('click', () => { - studentId.value = null; //### 初始化id - showOrCloseModal(false); - }); - - form.addEventListener('submit', (e) => { - e.preventDefault(); - save(); - }); - - searchBox.addEventListener('keyup', (e) => { - if (e.key === "Enter") { - search(searchBox.value); - searchBox.value = ''; - } - }); - - // 初始加载列表 - fetch(); -} - -// 执行初始化函数 -init(); -``` - -##### **九、浏览器 开始测试各个请求** - -**查询所有博客信息请求并渲染展示** - - - -**用 name 查询博客信息请求并渲染展示** - - - -**用 id 查询博客信息请求** - - - -**用 id 删除博客信息请求** - - - - - - - -**新增博客信息请求** - - - - - - - -**修改博客信息请求** - - - - - - diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/.gitignore" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/.gitignore" deleted file mode 100644 index 35410ca..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/.gitignore" +++ /dev/null @@ -1,8 +0,0 @@ -# 默认忽略的文件 -/shelf/ -/workspace.xml -# 基于编辑器的 HTTP 客户端请求 -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/compiler.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/compiler.xml" deleted file mode 100644 index 1a4bf9d..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/compiler.xml" +++ /dev/null @@ -1,16 +0,0 @@ - -${item.blogId} -${item.blogTitle} -${item.blogAuthor} -${item.blogText} -- - - -- \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/dataSources.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/dataSources.xml" deleted file mode 100644 index 35a8929..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/dataSources.xml" +++ /dev/null @@ -1,12 +0,0 @@ - -- -- -- -- - - - - -- - \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/encodings.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/encodings.xml" deleted file mode 100644 index aa00ffa..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/encodings.xml" +++ /dev/null @@ -1,7 +0,0 @@ - -- -- -mysql.8 -true -com.mysql.cj.jdbc.Driver -jdbc:mysql://localhost:3306 -$ProjectFileDir$ -- \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/jarRepositories.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/jarRepositories.xml" deleted file mode 100644 index abb532a..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/jarRepositories.xml" +++ /dev/null @@ -1,20 +0,0 @@ - -- -- - - \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/misc.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/misc.xml" deleted file mode 100644 index 79a352f..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/misc.xml" +++ /dev/null @@ -1,17 +0,0 @@ - -- -- -- - - - -- - - - -- - - - \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/sqldialects.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/sqldialects.xml" deleted file mode 100644 index 56782ca..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/sqldialects.xml" +++ /dev/null @@ -1,6 +0,0 @@ - -- - -- - -- --
-- - - -- \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/pom.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/pom.xml" deleted file mode 100644 index b37d3ae..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/pom.xml" +++ /dev/null @@ -1,103 +0,0 @@ -- -- - diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/JdbcConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/JdbcConfig.java" deleted file mode 100644 index d379cd1..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/JdbcConfig.java" +++ /dev/null @@ -1,20 +0,0 @@ -package com.config; - -import com.alibaba.druid.pool.DruidDataSource; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; - -import javax.sql.DataSource; - -@Component // 声明组件 -public class JdbcConfig { - @Bean // 创建一个Bean - public DataSource dataSource(){ - DruidDataSource druidDataSource = new DruidDataSource(); - druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); - druidDataSource.setUrl("jdbc:mysql:///demo"); - druidDataSource.setUsername("root"); - druidDataSource.setPassword("123456"); - return druidDataSource; - } -} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/MyBatisConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/MyBatisConfig.java" deleted file mode 100644 index 81472cf..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/MyBatisConfig.java" +++ /dev/null @@ -1,19 +0,0 @@ -package com.config; - -import org.mybatis.spring.SqlSessionFactoryBean; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; - -import javax.sql.DataSource; - -@Component // 声明组件 -@MapperScan("com.mapper") // 扫包 -public class MyBatisConfig { - @Bean // 创建一个Bean - public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ - SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); - sqlSessionFactoryBean.setDataSource(dataSource); - return sqlSessionFactoryBean; - } -} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringConfig.java" deleted file mode 100644 index 3047958..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringConfig.java" +++ /dev/null @@ -1,11 +0,0 @@ -package com.config; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -@Configuration // 声明为配置文件 -@ComponentScan("com.service") // 扫包 -@Import({JdbcConfig.class, MyBatisConfig.class}) // 导入类 -public class SpringConfig { -} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringMvcConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringMvcConfig.java" deleted file mode 100644 index 7c074af..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringMvcConfig.java" +++ /dev/null @@ -1,17 +0,0 @@ -package com.config; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration // 声明为配置文件 -@ComponentScan("com.controller") // 扫包 -@EnableWebMvc // MVC 核心注解 -public class SpringMvcConfig implements WebMvcConfigurer { - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("/**").addResourceLocations("/"); - } -} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/WebConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/WebConfig.java" deleted file mode 100644 index 8d00677..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/WebConfig.java" +++ /dev/null @@ -1,20 +0,0 @@ -package com.config; - -import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; - -public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { - @Override - protected Class>[] getRootConfigClasses() { - return new Class[]{SpringConfig.class}; - } - - @Override - protected Class>[] getServletConfigClasses() { - return new Class[]{SpringMvcConfig.class}; - } - - @Override - protected String[] getServletMappings() { - return new String[]{"/"}; - } -} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/controller/BlogController.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/controller/BlogController.java" deleted file mode 100644 index ca9934d..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/controller/BlogController.java" +++ /dev/null @@ -1,55 +0,0 @@ -package com.controller; - -import com.entity.Blog; -import com.service.BlogService; -import lombok.Data; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@Data // 自动生成 set,get,toString 方法 -@RestController // 声明为 RestController 配置文件 -@CrossOrigin // 跨域运行 -@RequestMapping("/blog") // 请求地址 - -public class BlogController { - @Autowired // 自动装配 - private BlogService blogService; // 注入接口 - - // 查询所有博客信息 - @GetMapping - public List4.0.0 -com.jd -myBlog -war -1.0-SNAPSHOT -- - -UTF-8 -- - -- - - -org.springframework -spring-webmvc -5.2.25.RELEASE -- - - -org.springframework -spring-test -5.2.25.RELEASE -- - -org.springframework -spring-jdbc -5.2.25.RELEASE -- - -javax.servlet -javax.servlet-api -3.1.0 -provided -- - - -com.fasterxml.jackson.core -jackson-databind -2.9.0 -- - -org.projectlombok -lombok -1.18.36 -- - - -org.mybatis -mybatis -3.5.16 -- - -com.mysql -mysql-connector-j -8.3.0 -- - - -junit -junit -4.13.2 -test -- - - - -com.alibaba -druid -1.1.20 -- -org.mybatis -mybatis-spring -2.0.6 -- -- -- -org.apache.tomcat.maven -tomcat7-maven-plugin -2.2 -- -/ -80 -utf-8 -selectAllBlogs() { - return blogService.selectAllBlogs(); - } - - // id 查询一个博客信息 - @GetMapping("/{id}") - public Blog selectOneBlogById(@PathVariable String id) { - return blogService.selectOneBlogById(Integer.parseInt(id)); - } - - // title 查询博客信息 - @GetMapping(params = "title") - public List selectOneBlogByTitle(String title) { - return blogService.selectOneBlogByTitle(title); - } - - // id 删除一个博客信息 - @DeleteMapping("/{id}") - public int deleteOneBlog(@PathVariable String id) { - return blogService.deleteOneBlog(Integer.parseInt(id)); - } - - // 新增一个博客信息 - @PostMapping - public int insertOneBlog(@RequestBody Blog blog) { - return blogService.insertOneBlog(blog); - } - - // 修改一个博客信息 - @PutMapping - public int updateOneBlog(@RequestBody Blog blog) { - return blogService.updateOneBlog(blog); - } -} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/entity/Blog.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/entity/Blog.java" deleted file mode 100644 index dcf5906..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/entity/Blog.java" +++ /dev/null @@ -1,15 +0,0 @@ -package com.entity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data // 自动生成 set,get,toString 方法 -@AllArgsConstructor // 自动生成 有参构造 方法 -@NoArgsConstructor // 自动生成 无参构造 方法 -public class Blog { - private int blogId; - private String blogTitle; - private String blogAuthor; - private String blogText; -} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/mapper/BlogMapper.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/mapper/BlogMapper.java" deleted file mode 100644 index 7df0e32..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/mapper/BlogMapper.java" +++ /dev/null @@ -1,33 +0,0 @@ -package com.mapper; - -import com.entity.Blog; -import org.apache.ibatis.annotations.*; - -import java.util.List; - -@Mapper // 声明为 Mapper 配置文件 -public interface BlogMapper { - // 查询所有博客信息 - @Select("select * from blog;") - List selectAllBlogs(); - - // id 查询一个博客信息 - @Select("select * from blog where blogId = #{id};") - Blog selectOneBlogById(int id); - - // title 查询博客信息 - @Select("select * from blog where blogTitle like '%${title}%';") - List selectOneBlogByTitle(String title); - - // id 删除一个博客信息 - @Delete("delete from blog where blogId = #{id};") - int deleteOneBlog(int id); - - // 新增一个博客信息 - @Insert("insert into blog (blogTitle, blogAuthor, blogText) values (#{blogTitle},#{blogAuthor},#{blogText});") - int insertOneBlog(Blog blog); - - // 修改一个博客信息 - @Update("update blog set blogTitle= #{blogTitle},blogAuthor= #{blogAuthor}, blogText= #{blogText} where blogId = #{blogId};") - int updateOneBlog(Blog blog); -} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/BlogService.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/BlogService.java" deleted file mode 100644 index 28e72ec..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/BlogService.java" +++ /dev/null @@ -1,25 +0,0 @@ -package com.service; - -import com.entity.Blog; - -import java.util.List; - -public interface BlogService { - // 查询所有博客信息 - List selectAllBlogs(); - - // id 查询一个博客信息 - Blog selectOneBlogById(int id); - - // title 查询博客信息 - List selectOneBlogByTitle(String title); - - // id 删除一个博客信息 - int deleteOneBlog(int id); - - // 新增一个博客信息 - int insertOneBlog(Blog blog); - - // 修改一个博客信息 - int updateOneBlog(Blog blog); -} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/impl/BlogServiceImpl.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/impl/BlogServiceImpl.java" deleted file mode 100644 index 9d140f7..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/impl/BlogServiceImpl.java" +++ /dev/null @@ -1,53 +0,0 @@ -package com.service.impl; - -import com.entity.Blog; -import com.mapper.BlogMapper; -import com.service.BlogService; -import lombok.Data; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Data // 自动生成 set,get,toString 方法 -@Service // 声明为 Service 配置文件 -public class BlogServiceImpl implements BlogService { - @Autowired // 自动装配 - private BlogMapper blogMapper; // 注入接口 - - // 查询所有博客信息 - @Override - public List selectAllBlogs() { - return blogMapper.selectAllBlogs(); - } - - // id 查询一个博客信息 - @Override - public Blog selectOneBlogById(int id) { - return blogMapper.selectOneBlogById(id); - } - - // title 查询博客信息 - @Override - public List selectOneBlogByTitle(String title) { - return blogMapper.selectOneBlogByTitle(title); - } - - // id 删除一个博客信息 - @Override - public int deleteOneBlog(int id) { - return blogMapper.deleteOneBlog(id); - } - - // 新增一个博客信息 - @Override - public int insertOneBlog(Blog blog) { - return blogMapper.insertOneBlog(blog); - } - - // 修改一个博客信息 - @Override - public int updateOneBlog(Blog blog) { - return blogMapper.updateOneBlog(blog); - } -} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/css/styles.css" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/css/styles.css" deleted file mode 100644 index fb397cd..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/css/styles.css" +++ /dev/null @@ -1,128 +0,0 @@ -body { - font-family: Arial, sans-serif; - background-color: #e0f7fa; /* 浅蓝色背景 */ - margin: 0; - padding: 20px; -} - -.container { - max-width: 800px; - margin: 0 auto; - background: #ffffff; /* 保持白色背景,或者可以更改为更浅的蓝色 */ - padding: 20px; - box-shadow: 0 0 10px rgba(0, 123, 255, 0.1); /* 蓝色阴影 */ -} - -h1 { - text-align: center; - color: #007bff; /* 深蓝色标题 */ -} - -#search-box { - padding: 10px; - width: calc(100% - 120px); - border: 1px solid #cce5ff; /* 浅蓝色边框 */ - border-radius: 4px; - height: 18px; -} - -#add-book-btn { - padding: 10px 20px; - background-color: #007bff; /* 深蓝色按钮 */ - color: white; - border: none; - height: 40px; - border-radius: 4px; - cursor: pointer; -} - -#add-book-btn:hover { - background-color: #0056b3; /* 深一些的蓝色按钮悬停效果 */ -} - -table { - width: 100%; - border-collapse: collapse; - margin-bottom: 20px; -} - -th, td { - padding: 10px; - border: 1px solid #cce5ff; /* 浅蓝色边框 */ - text-align: center; -} - -th { - background-color: #d1ecf1; /* 浅蓝色表头背景 */ -} -tr:hover { - background-color: #e0f7fa; /* 浅蓝色高亮背景,与页面背景相近但稍浅 */ -} -.modal { - display: none; - position: fixed; - z-index: 1; - left: 0; - top: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.4); /* 蓝色半透明背景 */ -} - -.modal-content { - background-color: #fefefe; /* 保持白色背景,或者可以更改为更浅的蓝色 */ - /* 注意:以下两行原本用于居中的代码是错误的,应该移除或更正 */ - transform: translate(60%, 40%); - /* margin应该用于.modal而不是.modal-content来实现居中 */ - padding: 35px; - border: 1px solid #cce5ff; /* 浅蓝色边框 */ - width: 40%; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); /* 蓝色阴影 */ - /* 为了实现.modal-content的居中,您可能需要添加额外的CSS或使用JavaScript */ -} - -/* 注意:.close-btn的颜色已经在.modal-content之外定义,如果需要更改为蓝色调,可以如下修改 */ -.close-btn { - color: #007bff; /* 深蓝色关闭按钮 */ - float: right; - font-size: 28px; - font-weight: bold; - cursor: pointer; -} - -.close-btn:hover, -.close-btn:focus { - color: #0056b3; /* 深一些的蓝色关闭按钮悬停效果 */ - text-decoration: none; - cursor: pointer; -} - -form { - display: flex; - flex-direction: column; -} - -label { - margin-bottom: 8px; - color: #007bff; /* 深蓝色标签 */ -} - -input[type="text"], input[type="hidden"] { - margin-bottom: 15px; - padding: 10px; - border: 1px solid #cce5ff; /* 浅蓝色边框 */ - border-radius: 4px; -} - -button[type="submit"] { - padding: 10px 20px; - background-color: #007bff; /* 深蓝色提交按钮 */ - color: white; - border: none; - border-radius: 4px; - cursor: pointer; -} - -button[type="submit"]:hover { - background-color: #0056b3; /* 深一些的蓝色提交按钮悬停效果 */ -} \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/index.html" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/index.html" deleted file mode 100644 index 953d54d..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/index.html" +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - 学生管理系统 - - - - -- -- - - \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/axios.min.js" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/axios.min.js" deleted file mode 100644 index 0ac6c50..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/axios.min.js" +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e){var r,n;function o(r,n){try{var a=e[r](n),u=a.value,s=u instanceof t;Promise.resolve(s?u.v:u).then((function(t){if(s){var n="return"===r?"return":"next";if(!u.k||t.done)return o(n,t);t=e[n](t).value}i(a.done?"return":"normal",t)}),(function(e){o("throw",e)}))}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?o(r.key,r.arg):n=null}this._invoke=function(e,t){return new Promise((function(i,a){var u={key:e,arg:t,resolve:i,reject:a,next:null};n?n=n.next=u:(r=n=u,o(e,t))}))},"function"!=typeof e.return&&(this.return=void 0)}function t(e,t){this.v=e,this.k=t}function r(e){var r={},n=!1;function o(r,o){return n=!0,o=new Promise((function(t){t(e[r](o))})),{done:!1,value:new t(o,1)}}return r["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},r.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(r.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(r.return=function(e){return n?(n=!1,e):o("return",e)}),r}function n(e){var t,r,n,i=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);i--;){if(r&&null!=(t=e[r]))return t.call(e);if(n&&null!=(t=e[n]))return new o(t.call(e));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return o=function(e){this.s=e,this.n=e.next},o.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new o(e)}function i(e){return new t(e,0)}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t博客管理系统
-- - - - --- -
-- - - - - -ID - -标题 - -作者 - -文本 -操作 --- -=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(s&&c){if(this.prev =0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev =0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function l(t){return function(){return new e(t.apply(this,arguments))}}function p(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){p(i,n,o,a,u,"next",e)}function u(e){p(i,n,o,a,u,"throw",e)}a(void 0)}))}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var r=0;r e.length)&&(t=e.length);for(var r=0,n=new Array(t);r 2&&void 0!==arguments[2]?arguments[2]:{},i=o.allOwnKeys,a=void 0!==i&&i;if(null!=e)if("object"!==f(e)&&(e=[e]),N(e))for(r=0,n=e.length;r 0;)if(t===(r=n[o]).toLowerCase())return r;return null}var Q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Z=function(e){return!_(e)&&e!==Q};var ee,te=(ee="undefined"!=typeof Uint8Array&&j(Uint8Array),function(e){return ee&&e instanceof ee}),re=P("HTMLFormElement"),ne=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),oe=P("RegExp"),ie=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};$(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},ae="abcdefghijklmnopqrstuvwxyz",ue="0123456789",se={DIGIT:ue,ALPHA:ae,ALPHA_DIGIT:ae+ae.toUpperCase()+ue};var ce,fe,le,pe,he=P("AsyncFunction"),de=(ce="function"==typeof setImmediate,fe=U(Q.postMessage),ce?setImmediate:fe?(le="axios@".concat(Math.random()),pe=[],Q.addEventListener("message",(function(e){var t=e.source,r=e.data;t===Q&&r===le&&pe.length&&pe.shift()()}),!1),function(e){pe.push(e),Q.postMessage(le,"*")}):function(e){return setTimeout(e)}),ve="undefined"!=typeof queueMicrotask?queueMicrotask.bind(Q):"undefined"!=typeof process&&process.nextTick||de,ye={isArray:N,isArrayBuffer:C,isBuffer:function(e){return null!==e&&!_(e)&&null!==e.constructor&&!_(e.constructor)&&U(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||U(e.append)&&("formdata"===(t=A(e))||"object"===t&&U(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&C(e.buffer)},isString:F,isNumber:B,isBoolean:function(e){return!0===e||!1===e},isObject:D,isPlainObject:I,isReadableStream:G,isRequest:K,isResponse:V,isHeaders:X,isUndefined:_,isDate:q,isFile:M,isBlob:z,isRegExp:oe,isFunction:U,isStream:function(e){return D(e)&&U(e.pipe)},isURLSearchParams:J,isTypedArray:te,isFileList:H,forEach:$,merge:function e(){for(var t=Z(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&Y(n,o)||o;I(n[i])&&I(t)?n[i]=e(n[i],t):I(t)?n[i]=e({},t):N(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return $(t,(function(t,n){r&&U(t)?e[n]=R(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,u={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||u[a]||(t[a]=e[a],u[a]=!0);e=!1!==r&&j(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:A,kindOfTest:P,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(N(e))return e;var t=e.length;if(!B(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:re,hasOwnProperty:ne,hasOwnProp:ne,reduceDescriptors:ie,freezeMethods:function(e){ie(e,(function(t,r){if(U(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];U(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return N(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:Y,global:Q,isContextDefined:Z,ALPHABET:se,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:se.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&U(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(D(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=N(r)?[]:{};return $(r,(function(t,r){var i=e(t,n+1);!_(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:he,isThenable:function(e){return e&&(D(e)||U(e))&&U(e.then)&&U(e.catch)},setImmediate:de,asap:ve};function me(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status?o.status:null)}ye.inherits(me,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ye.toJSONObject(this.config),code:this.code,status:this.status}}});var be=me.prototype,ge={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){ge[e]={value:e}})),Object.defineProperties(me,ge),Object.defineProperty(be,"isAxiosError",{value:!0}),me.from=function(e,t,r,n,o,i){var a=Object.create(be);return ye.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),me.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function we(e){return ye.isPlainObject(e)||ye.isArray(e)}function Ee(e){return ye.endsWith(e,"[]")?e.slice(0,-2):e}function Oe(e,t,r){return e?e.concat(t).map((function(e,t){return e=Ee(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var Se=ye.toFlatObject(ye,{},null,(function(e){return/^is[A-Z]/.test(e)}));function xe(e,t,r){if(!ye.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=ye.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!ye.isUndefined(t[e])}))).metaTokens,o=r.visitor||c,i=r.dots,a=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&ye.isSpecCompliantForm(t);if(!ye.isFunction(o))throw new TypeError("visitor must be a function");function s(e){if(null===e)return"";if(ye.isDate(e))return e.toISOString();if(!u&&ye.isBlob(e))throw new me("Blob is not supported. Use a Buffer instead.");return ye.isArrayBuffer(e)||ye.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,r,o){var u=e;if(e&&!o&&"object"===f(e))if(ye.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(ye.isArray(e)&&function(e){return ye.isArray(e)&&!e.some(we)}(e)||(ye.isFileList(e)||ye.endsWith(r,"[]"))&&(u=ye.toArray(e)))return r=Ee(r),u.forEach((function(e,n){!ye.isUndefined(e)&&null!==e&&t.append(!0===a?Oe([r],n,i):null===a?r:r+"[]",s(e))})),!1;return!!we(e)||(t.append(Oe(o,r,i),s(e)),!1)}var l=[],p=Object.assign(Se,{defaultVisitor:c,convertValue:s,isVisitable:we});if(!ye.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!ye.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),ye.forEach(r,(function(r,i){!0===(!(ye.isUndefined(r)||null===r)&&o.call(t,r,ye.isString(i)?i.trim():i,n,p))&&e(r,n?n.concat(i):[i])})),l.pop()}}(e),t}function Re(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Te(e,t){this._pairs=[],e&&xe(e,this,t)}var ke=Te.prototype;function je(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ae(e,t,r){if(!t)return e;var n=r&&r.encode||je;ye.isFunction(r)&&(r={serialize:r});var o,i=r&&r.serialize;if(o=i?i(t,r):ye.isURLSearchParams(t)?t.toString():new Te(t,r).toString(n)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}ke.append=function(e,t){this._pairs.push([e,t])},ke.toString=function(e){var t=e?function(t){return e.call(this,t,Re)}:Re;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Pe=function(){function e(){d(this,e),this.handlers=[]}return y(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){ye.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),Le={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Ne={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Te,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},_e="undefined"!=typeof window&&"undefined"!=typeof document,Ce="object"===("undefined"==typeof navigator?"undefined":f(navigator))&&navigator||void 0,Fe=_e&&(!Ce||["ReactNative","NativeScript","NS"].indexOf(Ce.product)<0),Ue="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Be=_e&&window.location.href||"http://localhost",De=u(u({},Object.freeze({__proto__:null,hasBrowserEnv:_e,hasStandardBrowserWebWorkerEnv:Ue,hasStandardBrowserEnv:Fe,navigator:Ce,origin:Be})),Ne);function Ie(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),u=o>=e.length;return i=!i&&ye.isArray(n)?n.length:i,u?(ye.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&ye.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&ye.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=ye.isObject(e);if(i&&ye.isHTMLForm(e)&&(e=new FormData(e)),ye.isFormData(e))return o?JSON.stringify(Ie(e)):e;if(ye.isArrayBuffer(e)||ye.isBuffer(e)||ye.isStream(e)||ye.isFile(e)||ye.isBlob(e)||ye.isReadableStream(e))return e;if(ye.isArrayBufferView(e))return e.buffer;if(ye.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return xe(e,new De.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return De.isNode&&ye.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=ye.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return xe(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(ye.isString(e))try{return(t||JSON.parse)(e),ye.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||qe.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(ye.isResponse(e)||ye.isReadableStream(e))return e;if(e&&ye.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw me.from(e,me.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:De.classes.FormData,Blob:De.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ye.forEach(["delete","get","head","post","put","patch"],(function(e){qe.headers[e]={}}));var Me=qe,ze=ye.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),He=Symbol("internals");function Je(e){return e&&String(e).trim().toLowerCase()}function We(e){return!1===e||null==e?e:ye.isArray(e)?e.map(We):String(e)}function Ge(e,t,r,n,o){return ye.isFunction(n)?n.call(this,t,r):(o&&(t=r),ye.isString(t)?ye.isString(n)?-1!==t.indexOf(n):ye.isRegExp(n)?n.test(t):void 0:void 0)}var Ke=function(e,t){function r(e){d(this,r),e&&this.set(e)}return y(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=Je(t);if(!o)throw new Error("header name must be a non-empty string");var i=ye.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=We(e))}var i=function(e,t){return ye.forEach(e,(function(e,r){return o(e,r,t)}))};if(ye.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(ye.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,r,n,o={};return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&ze[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)})),o}(e),t);else if(ye.isHeaders(e)){var a,u=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=O(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(e.entries());try{for(u.s();!(a=u.n()).done;){var s=b(a.value,2),c=s[0];o(s[1],c,r)}}catch(e){u.e(e)}finally{u.f()}}else null!=e&&o(t,e,r);return this}},{key:"get",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(ye.isFunction(t))return t.call(this,n,r);if(ye.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ge(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=Je(e)){var o=ye.findKey(r,e);!o||t&&!Ge(0,r[o],o,t)||(delete r[o],n=!0)}}return ye.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ge(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return ye.forEach(this,(function(n,o){var i=ye.findKey(r,o);if(i)return t[i]=We(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=We(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n 1?r-1:0),o=1;o 1&&void 0!==arguments[1]?arguments[1]:Date.now();o=i,r=null,n&&(clearTimeout(n),n=null),e.apply(null,t)};return[function(){for(var e=Date.now(),t=e-o,u=arguments.length,s=new Array(u),c=0;c=i?a(s,e):(r=s,n||(n=setTimeout((function(){n=null,a(r)}),i-t)))},function(){return r&&a(r)}]}ye.inherits(Ye,me,{__CANCEL__:!0});var tt=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,n=0,o=Ze(50,250);return et((function(r){var i=r.loaded,a=r.lengthComputable?r.total:void 0,u=i-n,s=o(u);n=i;var c=m({loaded:i,total:a,progress:a?i/a:void 0,bytes:u,rate:s||void 0,estimated:s&&a&&i<=a?(a-i)/s:void 0,event:r,lengthComputable:null!=a},t?"download":"upload",!0);e(c)}),r)},rt=function(e,t){var r=null!=e;return[function(n){return t[0]({lengthComputable:r,total:e,loaded:n})},t[1]]},nt=function(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n 1?t-1:0),n=1;n 1?"since :\n"+u.map(At).join("\n"):" "+At(u[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Nt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ye(null,e)}function _t(e){return Nt(e),e.headers=Ve.from(e.headers),e.data=Xe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Lt(e.adapter||Me.adapter)(e).then((function(t){return Nt(e),t.data=Xe.call(e,e.transformResponse,t),t.headers=Ve.from(t.headers),t}),(function(t){return $e(t)||(Nt(e),t&&t.response&&(t.response.data=Xe.call(e,e.transformResponse,t.response),t.response.headers=Ve.from(t.response.headers))),Promise.reject(t)}))}var Ct="1.7.9",Ft={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Ft[e]=function(r){return f(r)===e||"a"+(t<1?"n ":" ")+e}}));var Ut={};Ft.transitional=function(e,t,r){function n(e,t){return"[Axios v1.7.9] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new me(n(o," has been removed"+(t?" in "+t:"")),me.ERR_DEPRECATED);return t&&!Ut[o]&&(Ut[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}},Ft.spelling=function(e){return function(t,r){return console.warn("".concat(r," is likely a misspelling of ").concat(e)),!0}};var Bt={assertOptions:function(e,t,r){if("object"!==f(e))throw new me("options must be an object",me.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),o=n.length;o-- >0;){var i=n[o],a=t[i];if(a){var u=e[i],s=void 0===u||a(u,i,e);if(!0!==s)throw new me("option "+i+" must be "+s,me.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new me("Unknown option "+i,me.ERR_BAD_OPTION)}},validators:Ft},Dt=Bt.validators,It=function(){function e(t){d(this,e),this.defaults=t,this.interceptors={request:new Pe,response:new Pe}}var t;return y(e,[{key:"request",value:(t=h(s().mark((function e(t,r){var n,o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,r);case 3:return e.abrupt("return",e.sent);case 6:if(e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error){n={},Error.captureStackTrace?Error.captureStackTrace(n):n=new Error,o=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.t0.stack?o&&!String(e.t0.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+o):e.t0.stack=o}catch(e){}}throw e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,r){return t.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=st(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&Bt.assertOptions(n,{silentJSONParsing:Dt.transitional(Dt.boolean),forcedJSONParsing:Dt.transitional(Dt.boolean),clarifyTimeoutError:Dt.transitional(Dt.boolean)},!1),null!=o&&(ye.isFunction(o)?t.paramsSerializer={serialize:o}:Bt.assertOptions(o,{encode:Dt.function,serialize:Dt.function},!0)),Bt.assertOptions(t,{baseUrl:Dt.spelling("baseURL"),withXsrfToken:Dt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&ye.merge(i.common,i[t.method]);i&&ye.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=Ve.concat(a,i);var u=[],s=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,u.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,p=0;if(!s){var h=[_t.bind(this),void 0];for(h.unshift.apply(h,u),h.push.apply(h,f),l=h.length,c=Promise.resolve(t);p 0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Ye(e,t,o),r(n.reason))}))}return y(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}},{key:"toAbortSignal",value:function(){var e=this,t=new AbortController,r=function(e){t.abort(e)};return this.subscribe(r),t.signal.unsubscribe=function(){return e.unsubscribe(r)},t.signal}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}(),zt=Mt;var Ht={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ht).forEach((function(e){var t=b(e,2),r=t[0],n=t[1];Ht[n]=r}));var Jt=Ht;var Wt=function e(t){var r=new qt(t),n=R(qt.prototype.request,r);return ye.extend(n,qt.prototype,r,{allOwnKeys:!0}),ye.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(st(t,r))},n}(Me);return Wt.Axios=qt,Wt.CanceledError=Ye,Wt.CancelToken=zt,Wt.isCancel=$e,Wt.VERSION=Ct,Wt.toFormData=xe,Wt.AxiosError=me,Wt.Cancel=Wt.CanceledError,Wt.all=function(e){return Promise.all(e)},Wt.spread=function(e){return function(t){return e.apply(null,t)}},Wt.isAxiosError=function(e){return ye.isObject(e)&&!0===e.isAxiosError},Wt.mergeConfig=st,Wt.AxiosHeaders=Ve,Wt.formToJSON=function(e){return Ie(ye.isHTMLForm(e)?new FormData(e):e)},Wt.getAdapter=Lt,Wt.HttpStatusCode=Jt,Wt.default=Wt,Wt})); -//# sourceMappingURL=axios.min.js.map diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/book.js" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/book.js" deleted file mode 100644 index 8661841..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/book.js" +++ /dev/null @@ -1,188 +0,0 @@ -(function () { - // 私有变量 - const addBtn = document.querySelector('#add-book-btn'); - const modal = document.querySelector('.modal'); - const closeModalBtn = document.querySelector('#close-form-btn'); - const tbody = document.querySelector('tbody'); - const form = document.querySelector('#book-form'); - const searchBox = document.querySelector("#search-box"); - const formTitle = document.querySelector("#form-title"); - - // 表单选项 - let itemId = document.querySelector("#book-id"); - let itemName = document.querySelector("#book-name"); - let itemAuthor = document.querySelector("#author"); - let itemPublisher = document.querySelector("#publisher"); - - - - let data = []; - // api接口设置 - const API_BASE_URL = "http://localhost/book"; - - // 搜索图书# 修改bookName - function searchBooks(query) { - axios.get(API_BASE_URL + `?bookName=${query}`).then(res => { - if (res.data.code === 500) { - alert(`${res.data.msg}`); - return; - } - data = res.data.data; - renderTable(data); - }); - } - - // 渲染表格数据 # 修改item.后面的属性名称 - function renderTable(data) { - if (data.length === 0) return alert("无内容"); - tbody.innerHTML = data.map(item => { - return ` - `; - }).join(''); - - // 添加事件监听器(事件委托) - tbody.addEventListener('click', handleTableClick); - } - - // 更新图书时,先回显要被修改的旧数据 - function updateBook(id) { - axios.get(API_BASE_URL + `/${id}`).then(res => { - const data = res.data.data; - showOrCloseModal(); - form.reset(); - // ########以下内容要修改########## - - formTitle.innerText = '更新图书'; - itemId.value = data.bookId; - itemName.value = data.bookName; - itemAuthor.value = data.bookAuthor; - itemPublisher.value = data.bookPublisher; - - // ######以上内容要修改##### - }); - } - - - // 处理表格点击事件 - function handleTableClick(e) { - if (e.target.classList.contains('delete-btn')) { - deleteBook(e.target.closest('tr').dataset.id); - } else if (e.target.classList.contains('update-btn')) { - updateBook(e.target.closest('tr').dataset.id); - } - } - - // 开关浮层 - function showOrCloseModal(show = true) { - if (show) { - modal.style.display = 'block'; - } else { - modal.style.display = 'none'; - } - - document.querySelector("#book-id").value = null; // 重置当前编辑的图书ID - } - - // 获取列表 - function fetchBooks() { - axios.get(API_BASE_URL).then(res => { - data = res.data.data; - renderTable(data); - }); - - } - - // 根据id删除 - function deleteBook(id) { - if (!confirm("真的要删除吗?")) return; - axios.delete(API_BASE_URL + `/${id}`).then(res => { - if (res.data.code === 500) return alert(res.data.msg) - alert(res.data.data); - fetchBooks(); - }); - } - - - - // 点击保存按钮:添加或更新图书 - function saveBook() { - // 获取表单项的值 - let bookId = itemId.value; - const bookName = itemName.value; - const bookAuthor = itemAuthor.value; - const bookPublisher = itemPublisher.value; - - // 非空判断 - if (!bookName || !bookAuthor || !bookPublisher) { - alert("所有字段都必须填写!"); - return; - } - - // 表单项的值,封装成一个对象 - const book = { - bookId: bookId || null, // 如果为空,则视为添加新图书 - bookName: bookName, - bookAuthor: bookAuthor, - bookPublisher: bookPublisher - }; - - // 根据编号判断是添加还是更新 - if (bookId) { - axios.put(API_BASE_URL, book).then(res => { - res.data.code === 200 ? alert(res.data.data) : alert(res.data.msg); - fetchBooks(); - showOrCloseModal(false); - }) - } else { - axios.post(API_BASE_URL, book).then(res => { - res.data.code === 200 ? alert(res.data.data) : alert(res.data.msg); - fetchBooks(); - showOrCloseModal(false); - }) - } - - } - - - - // 初始化事件监听器 - function init() { - addBtn.addEventListener('click', () => { - form.reset(); - formTitle.innerText = '添加图书'; - bookId = null; - showOrCloseModal(); - }); - - closeModalBtn.addEventListener('click', () => { - bookId = null; // 重置当前编辑的图书ID - showOrCloseModal(false); - }); - - form.addEventListener('submit', (e) => { - e.preventDefault(); - saveBook(); - }); - - searchBox.addEventListener('keyup', (e) => { - if (e.key === "Enter") { - searchBooks(searchBox.value); - searchBox.value = ''; - } - }); - - // 初始加载图书列表 - fetchBooks(); - } - - // 执行初始化函数 - init(); -})(); \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/data.js" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/data.js" deleted file mode 100644 index 915bee6..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/data.js" +++ /dev/null @@ -1,182 +0,0 @@ -// 私有变量 -const addBtn = document.querySelector('#add-btn'); -const modal = document.querySelector('.modal'); -const closeModalBtn = document.querySelector('#close-form-btn'); -const tbody = document.querySelector('tbody'); -const form = document.querySelector('#item-form'); -const searchBox = document.querySelector("#search-box"); -const formTitle = document.querySelector("#form-title"); - -// 表单选项 -//#######################改改改################################ -let studentId = document.querySelector("#studentId"); -let studentName = document.querySelector("#studentName"); -let classname = document.querySelector("#classname"); -let classTeacher = document.querySelector("#classTeacher"); -//############################################################# - - -let data = []; -// api接口设置 -// const API_BASE_URL = "http://localhost/book"; -const API_BASE_URL = "http://localhost/blog"; // #### 改改改 #### - -// 搜索功能 -function search(name) { - axios.get(API_BASE_URL + `?title=${name}`).then(res => { - data = res.data; - renderTable(data); - }); -} - -// 渲染表格数据 # 修改item.后面的属性名称 -function renderTable(data) { - if (data.length === 0) return alert("无内容"); - tbody.innerHTML = data.map(item => { - return `${item.bookId} -${item.bookName} -${item.bookAuthor} -${item.bookPublisher} -- - - -- `; - }).join(''); - - // 添加事件监听器(事件委托) - tbody.addEventListener('click', handleTableClick); -} - -// 更新,先回显要被修改的旧数据 -function update(id) { - axios.get(API_BASE_URL + `/${id}`).then(res => { - const data = res.data; - showOrCloseModal(); - form.reset(); - - // ########以下内容要修改########## - - // formTitle.innerText = '更新图书'; - formTitle.innerText = '更新博客'; - studentId.value = data.blogId; - studentName.value = data.blogTitle; - classname.value = data.blogAuthor; - classTeacher.value = data.blogText; - - // ######以上内容要修改##### - }); -} - - -// 处理表格点击事件 -function handleTableClick(e) { - if (e.target.classList.contains('delete-btn')) { - deleteItem(e.target.closest('tr').dataset.id); - } else if (e.target.classList.contains('update-btn')) { - update(e.target.closest('tr').dataset.id); - } -} - -// 开关浮层 -function showOrCloseModal(show = true) { - if (show) { - modal.style.display = 'block'; - } else { - modal.style.display = 'none'; - } - - studentId.value = null; // 重置当前编辑的图书ID - -} - -// 获取列表 -function fetch() { - axios.get(API_BASE_URL).then(res => { - console.log(res) - data = res.data; - renderTable(data); - }); - -} - -// 根据id删除 -function deleteItem(id) { - if (!confirm("真的要删除吗?")) return; - axios.delete(API_BASE_URL + `/${id}`).then(res => { - alert("删除成功!") - fetch(); - }); -} - - -// 点击保存按钮:添加或更新图书 -function save() { - - // 获取表单项的值######改改##### - - // 非空判断 - if (!studentName.value || !classname.value || !classTeacher.value) { - alert("所有字段都必须填写!"); - return; - } - // 表单项的值,封装成一个对象 - const item = { - blogId: studentId.value || null, // 如果为空,则视为添加新图书 - blogTitle: studentName.value, - blogAuthor: classname.value, - blogText: classTeacher.value - }; - - // 根据编号判断是添加还是更新 - if (studentId.value!='') { - axios.put(API_BASE_URL, item).then(res => { - alert("修改成功") - fetch(); - showOrCloseModal(false); - }) - } else { - axios.post(API_BASE_URL, item).then(res => { - console.log(item) - alert("添加成功") - fetch(); - showOrCloseModal(false); - }) - } - -} - - -// 初始化事件监听器 -function init() { - addBtn.addEventListener('click', () => { - form.reset(); - // formTitle.innerText = '添加图书'; - formTitle.innerText = '添加博客'; - showOrCloseModal(); - }); - - closeModalBtn.addEventListener('click', () => { - studentId.value = null; //### 初始化id - showOrCloseModal(false); - }); - - form.addEventListener('submit', (e) => { - e.preventDefault(); - save(); - }); - - searchBox.addEventListener('keyup', (e) => { - if (e.key === "Enter") { - search(searchBox.value); - searchBox.value = ''; - } - }); - - // 初始加载列表 - fetch(); -} - -// 执行初始化函数 -init(); diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/JdbcConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/JdbcConfig.class" deleted file mode 100644 index 38f06e9361e3d7f2cea798f07c5af6ec242d1e6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 890 zcmah{T~8B16g^W)yOwIPqI~!Ts930UqM{FAOti!Y)1VP0@o~C4)Tz5Wb#{vIuk@uP zn)n0!QO0|>1Y$zsKFs|(_uMmg_V=G3zW{7NR&Wuw%D7!Y0k;AyvRw+W%=S)zyKL_T zSYdm=j7Ax&0;OjrHU7E4L}PVNpxCyN7N~Vhs&|G-SG)JB8&js${item.blogId} -${item.blogTitle} -${item.blogAuthor} -${item.blogText} -- - - -f5%*%3ME%p72q~`f|!_=EZ@0rYywijt?z4FGUByGK8T~B5MXVTujQ;Gg+ z-Dj5S^`V#Q6e?e8m9pTm*jI+{Tsyl kr11;M&8Q4^(eyfU0s0pm_ zYW{x>+71C*$q}ul74} BLs?fGb63t*>I8{nEon zk2jt?t)j)z)pOrPV480uW0m&gn{Ho+p6D~}$Mf2;%Ca3=74 3EamYQkD5tdM;|B=4}1n+{*X^JFSL3VQO7~*?gzD#E+PgYPTzd8os z3T7xG8MsCy+}tNyAiMk%g^$OW=rrra5hk1U(g@{dJs9CavtAits`-sj1u*jhaf74; rB!Xqk5Yqxx7HJkwV{T$RnHErO7IQRpp0ccJfouWS^Yg}O_9pNbDQeP5 diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/MyBatisConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/MyBatisConfig.class" deleted file mode 100644 index df19704766d61b86809b866f4e1df696b6cf1e8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889 zcmb7C%Wl&^6g`t?F=^5kTAG$e%PM`)*{~}@B0*g_AQ6a!SWVn%m}1Yk_M|j_1sf`X z#0T(Eh&$s_9!e$f;$Gi-e9xRS*WbQ>{tDnB?gyx0y^h-fN?3Q{P91maxW`a?q_nb+ z8OoilAw#8S4kbe?R9ZfpBqN!<6r-3rOQDHGJQSI7^+mH{->RHpEsRXUBcqShnD?h$ zVO8Gq)jq>=ei9F4o-3mdL}X1i?Mk5;x}ES?oQg9}IDaav7??>G$^EU+WMiI8M~;Q( zX{Pj;4`y)?d2o0+$gnb-kYW3ODBCY4+NwkjRj$bC6RnLUDMpjg2cD?Vbd-rizBk!B zXWYs&%f;oV+*x$;3Qq^h-{2oNv**nJl=e4cZe=Eoou-oaOp+QcwI#ZlK7Kp3FVa+I zgUFv $AVV$d~_@$%P^ly`)i#H z?W^`Y#3rirU%ICR=Co0~Mir;bC|9@7!9IF8pjh+G2Cmb4qxgXGJXH)$w1~tFzoJ~G z-1>sj>vNR*yE~sy+5JGR5*$slfa$aa8ea5t8yCHTj)n GbpK{R6-OwhBmNBah8I>I}JKZL~jONbl}-88R)~R}AI0HtISG zddl62-k2h_wv}Ss6;8)^7R>ku9WrdUr46{WW}t_>GjZAsTM0N~D0FP(q&nBJNOdvU z9EqtQ@@-_i4pdi%nv_qCv0iv>4GAB%tsC+%Q5-lCs3+?l<3e6NdoJcz`A@mXB}A(F z4`MK}Mj79c!Vob#72}9HEz*mcp>k6#3Gu)7aY1U%lTLkcB$xf3oDXDYF?02DMlFZ4 zWClg&{WC}4?f lDLH4cOgPRL6I;Rx`38xuk}uPp$~{Tok%Ic-@pxvAXU>fM{l}MY0Pf?Si#)D6xR%F?i|bg;cZ_b}7+wmRIrk>V3xH!u&Z>#o0uBhL}_M7I%uT~wDJycL- zV7`NO4|napbn XR(gD*wUn z^lQg6uytB>B!D!($7-=p+CHlot8nP6U^qknMv5dgnO2W9pCluht$qgkn3&JenoABn z%+cN(I-r1g(iqO8NUIHQB1>? 2SxS3gG5IY6KLN+leo6oU diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/WebConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/WebConfig.class" deleted file mode 100644 index 1ac063d11c651c156745d862db8ae380201946db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmaKqO;6k~5Qbl~VY7tgD_uVO$qhK*3%4R9v{j`_3x@_#Rqe$|O>mpFBgeZ){Z;L$ zQl<6>^hY5k$rhGf+8pfhc;=aR#`$yo^EZG4YzJsz)5n&N$3C9;c-q1 =#PoS$^o2_K zI~jK?>m@@cmF}%Eu6A@YQ52HmJ3G4{dY{Em@J#5GSAL3~i&UzG8(1p0{y@m#-VsHu z6El)_n8`_Ocz1Im@?7bZYOUS}Mb46+FhOJnHj%GY+1%o-=>1Yw8*>O~2on;i_E?`$ zUXtq07`CQvPKL?f%jG*zU7vw*8pBx5tpJ9P#-_Ze=oeP><(08t_?3)#QFqOYL7p4y z_;Fk~D-w6CwQ<5Jqw9jNRFMmpTuM8d(;IqWB{KC@T5Q9ozoGm*(8v+cI!`A~JEMJe z?+4g-GG@@GwOKo{Kz4g%FJg&K9+t5}QDyQ$1p@-_7iQi!!bbFsyyJw{7$HDS2& |92vx~IvV9v1gTb1>^?%dXB1W)Jef@ZF2jv@BpL)j}EL>ltFDcF|h z*rusFzC&}>EnyF=7$r;dDh`oOHty0@Th zY%nIg))V--Xz9Yw+3oqFpbR`UHLIkqcp`d}*#=SxF@uMD8_!CJZ)#?R#>dsiM)8S+ z DZ?_nD-t?Jva1q~h6OcmZ8quq-kfQ# z=j}E1rf%sD+5L_#>0U%Sh{4Wktt%9O`s0H^sGF&fuqZ*VHIqe9m-NN_L#oJR_O1lU zu5Xs`6`REN%DN+=Tgbz($Xr$Udi+=Q&pKB;t+2+D@KuEh>kDS8pjp?21rkza%`FGQ z#9*-+;!Df(3)g7@*9k{=D<&0IsYgwDcF^f;r#;1q_P>Pmid}IE`VB)g%OMfTnr59A zUDZl&n`zK83#4|PWzv3m%{jK~E;>fZuz0Vz#5bq(%d*x>aaF`x!4bTYL`A_-3?{Lu zU<+pzoWz$3#&KG~8Eh*!hw}<1#V`#P;W1G+EfrkBB5o*{!K{MoVzq=1B^>dUClb@y zieVN-;*Zt`b0ks%(+a-AV=;Wq{ACra;$v1y4JxQ2qPM7Iia_n~yyfX7!I+|AxjMHZ z+w;w|UFKs^F8ra;Ez10OGbwA3{?H}nrSAM*7qmQ&H~0skpMNm;qayObd4RhF=T|v* za%OhWfn)xk5Qc(tdh`cKFA$UPjJp_K<0x)`2tyo|;1pgbI&hrd7*14ihq>oZ9o`I4 zXZbe9XI%ny>?d@*fE;T;KIS9$2PZ>h-oaZKA)2tci}NtQ*?W*&jAD$>lEUCqJ|Rmg zB)l3DW_-dIh&QsGh_Gd (EU8A8b8WFqHL|eD85~h;B9s#6 z_~>&S_@0Ys%rZWHP-pQlW> 5_-Ky$bj0$t`T3N A~iXj|Nvm$2%xu%UB^< zoWgdSs~Cl^4 8>QvRY=lH#-z57N&7A3PeN#^2!ceA!C!Fj&U1A4 z_Uxip7`%%^y@$EpMc@9?i`MX9Xl67LF?>SA81DF8*-u;Ua(|ECPstUi+-Ls*7fTZ8 diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/entity/Blog.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/entity/Blog.class" deleted file mode 100644 index af1cbdbf2ac0b573c52e29badca3dd0f31f92d4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2949 zcma)7-*XdH6#j0qn{1Lz36TORRY6hHw55Wmm{NYqk4OthD@sLSo38Cbnqay?dGg7B zf*0T9r4Kq|%Z$!A`hqk5O(K40? wFSbg~URwu~b=9P!)xgD07})a~1N__ne2$M9rx$P0adDuf8;?kQRrtEq}SuRImbX z_gkMEmt6l`2ox`l5Xv~;SR~4>X|L{HZLKW0%{ga5<2I^J?WWW8L=P7Yf7x4A*gais ztW3Cd-}4_$2p*3-aHBTtllj?}Ke(6iEUX7gneco$MkHY)vUS~J;}I~WYQ7IW*Y?z z**Jh<8!yZ73Wk}Zk)*S62JhH-6$fn;F=FGGs3nm`WjKq23j3nfajxan7Tu #siB?;%_N7K;%S#KqLAyJrt^VxIS(GVbr$Y; zzdYPRS9m>E$1t<`f6X|=PO_g($UscUq7)Opf|-;BGg;$203{sJeu&xxHO1L1{Q|WX zxV^?P5iDl#I%Qis;4t2x_GV~(i?b4*`vAp$qA`Xpki9Js!_)^T9tFy73&c?O0WzXM z1KR?PVLSvXbB@WgO9$4WevZ5?86fS|9wA9WphQ7M=sH5aHSb-_(RIXjiYXC|V!quU zGrm(y$&M)I(f*jmPBA6ZqL{2k{dRScbBZiJ9xeR{(^wn*6Xs)>@wL%EV9tz{HjoHZ z3du44e-IlL>nb&?Y>fYfOu=}D-A`bT7mN+0+V1JHNtbjvQ82|P@eKJV$QH~(Vv|#* zEU1~XRY;1H6*?sgR@=#tLWpn5UmfGy`qrHoKjtU@UA}V=-{U fIaYCk zl7Tr~#0Qj2%(Fq2DJAfTwKqvAiSJmYCn;H&;+bQ}Car%kki;qbIrb)Tnm 0jXptgd;@l{o-P|=C>Wu|l1OP&rfdc#1}WHN70kdi+@JST`snboaoona zptgk3^OR!PgDd!u4~Vm7kKqC(gZ+FTnHS!L*>8||LDCH}s}#wEQZMM<)nl?S2(#_b z_Az>wLbt>wx2|V&mCg}H`Bl)2;vQ#dyk~wx_SRDj 4`96DoZ$lMuBkD_2Z$-BPG bv+SEqJ=%j<|0`Xx;>SMC~VD% z>g5$^^8 -TN_WwQSY zrYfS8Cn^`JJB6UHBJ7ziDD2yQR75H^*FYV8vF4W^nuB(x261B7C;XdgQZo-Jb#})& zb#iDomOR~Q`lPAj$wmR2iD%L5eK2$^Ol+ZbmU3kl#+;s&8F{_5;!|L1#g?FxDPUX` z^VJ )`o2HX8BdnSPUtFV&LK{I-6QLsM#=qy-49o40Ld__%+H zFTYHHz!Lr`0F+Avu0aWR%eY&DGF0%phWK^-tb78J!YXoZz)jp2u_|IUSj+3z=WsTV qvk6->_4T~>He$En_6&9>$953A`v-O}$L^!z1LOFiQ7j|!2;eugmS;r( diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/BlogService.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/BlogService.class" deleted file mode 100644 index 597922c19df63ffc80e960e5d177d6b873b5e4ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 510 zcma)3!AiqG6r8QGvDMVJM*IPV^kOc8hltP~gg~H&_yaLn!j^R-$)?a>^WX>gQR3Te zDaG{Q=`pkO-p-r%{qy++-~rbzu3Y#GqlQbK>$#K*S(OdLG?*o;Y@LOz7BWmkqa%hv zDoT~ ByJr&H!0npLw-ueE&%n^5O96d{;RFuhQ$jt9U7P{L Y4=~*G=Y%idS$>2|TgRr7Vq!a|zgOspZvX%Q diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/impl/BlogServiceImpl.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/impl/BlogServiceImpl.class" deleted file mode 100644 index 7086e789782bd30e164afbe77efec052d8684c2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2823 zcma)8TXWk)7(J`VmpF3jhNLA;pm*xnO$D^ji_=09+G23hl9WKpt+K5;YGf(May$7K zJo5wSOCQ=9NT)EvzzfXqn}BjwQeyd%DKqi6((bp%=R148b^iMI=U)Mw!^SX%@yQ5Q zuqwkX89tR^O@_~8_&kFN+)m+6hN)l3@THvjN`|jf_$Gr<+)m@J91R(&Y1HIcPr*## zo ^hvg1`W-*gjy$WqteS0g=N=0A_q$qhNt)lb4V!kE zh|74RdY`T=&D`PXxzc7G-J>OegzK-%p4lhuc0!7=(?z*prE4m?>KnBUCIlX3zq0)V z(lx`mD!-qP>qcumv^hnhyosAD<)y16=$Wmy?F)=_0j7O7^o#UfWSMSXWLDj_S2M3! z(mCT&yqNXR$btm&13S0no1W?VTbrgHZ7FFuh*wi+XqdvZh7&lcA&(givpAzc$D10? z%5V S3SnsLjpmuw=N; zvm&7imIQJgsPMdq9w!yU `TDdDv@@201hMy&yarFQ=k^Wgr}K^j^JJ9$g@7rkw3q<*ayTD?X^Yjr9hWZihwS0 zl-5WVia$XNrWCp&x$BB#WZiCZZ0`v33C9F67mI}-kWe2Nf5-6mNDMtL{)XYD(}ith zf>%C_ET3k$q|W|{kxBIr?0*Dpc2eDj7G$W>1Vb^$hZ>y=;dcow;tD;^{-&SaXBQ~+ z{$b2>ZU_Z-*aDwaED~!1$yEApjHd9xKRA%WRsN*~;+3fK%8DwvNKmOxLYB~L$dF4Y z&dzx;l?)`8IHZu*UIh6aN0pF=bEP@;av;HUuCz`8(z)Uzq-M8~y?c3jaN&h;YgG6U zuZnWep9x+cAMr_n{CDu r+t09XEVqsQlJGXh#$Ms`HpY9c7x(aVL^H00f@LBqxUqZh-30yvIvOGp diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" deleted file mode 100644 index 789825b..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" +++ /dev/null @@ -1,10 +0,0 @@ -com\config\WebConfig.class -com\service\impl\BlogServiceImpl.class -com\controller\BlogController.class -com\config\JdbcConfig.class -com\config\MyBatisConfig.class -com\entity\Blog.class -com\service\BlogService.class -com\mapper\BlogMapper.class -com\config\SpringConfig.class -com\config\SpringMvcConfig.class diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" deleted file mode 100644 index e158182..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" +++ /dev/null @@ -1,10 +0,0 @@ -E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\JdbcConfig.java -E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\MyBatisConfig.java -E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\SpringConfig.java -E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\SpringMvcConfig.java -E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\WebConfig.java -E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\controller\BlogController.java -E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\entity\Blog.java -E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\mapper\BlogMapper.java -E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\service\BlogService.java -E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\service\impl\BlogServiceImpl.java diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" deleted file mode 100644 index 76c9512..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" +++ /dev/null @@ -1,64 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler - -.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler - -############################################################ -# Handler specific properties. -# Describes specific configuration info for Handlers. -############################################################ - -1catalina.org.apache.juli.FileHandler.level = FINE -1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs -1catalina.org.apache.juli.FileHandler.prefix = catalina. - -2localhost.org.apache.juli.FileHandler.level = FINE -2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs -2localhost.org.apache.juli.FileHandler.prefix = localhost. - -3manager.org.apache.juli.FileHandler.level = FINE -3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs -3manager.org.apache.juli.FileHandler.prefix = manager. - -4host-manager.org.apache.juli.FileHandler.level = FINE -4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs -4host-manager.org.apache.juli.FileHandler.prefix = host-manager. - -java.util.logging.ConsoleHandler.level = FINE -java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter - - -############################################################ -# Facility specific properties. -# Provides extra control for each logger. -############################################################ - -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler - -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler - -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler - -# For example, set the org.apache.catalina.util.LifecycleBase logger to log -# each component that extends LifecycleBase changing state: -#org.apache.catalina.util.LifecycleBase.level = FINE - -# To see debug messages in TldLocationsCache, uncomment the following line: -#org.apache.jasper.compiler.TldLocationsCache.level = FINE diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" deleted file mode 100644 index 7114f5d..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" deleted file mode 100644 index cc8383c..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" +++ /dev/null @@ -1,4283 +0,0 @@ - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" deleted file mode 100644 index 773f569..0000000 --- "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" +++ /dev/null @@ -1,103 +0,0 @@ -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET / HTTP/1.1" 200 2139 http-bio-80-exec-1 35 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-3 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-2 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /js/data.js HTTP/1.1" 200 5206 http-bio-80-exec-5 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /student HTTP/1.1" 404 965 http-bio-80-exec-7 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:18:00 +0800] "GET /favicon.ico HTTP/1.1" 404 973 http-bio-80-exec-8 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:18:00 +0800] "GET /student HTTP/1.1" 404 965 http-bio-80-exec-9 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-2 7 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-1 96 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-4 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-6 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-8 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-9 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-10 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:25 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 698 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:09 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-1 774 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:12 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-3 20 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:26 +0800] "GET /blog?title=1 HTTP/1.1" 200 12 http-bio-80-exec-4 102 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:13 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-6 17 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:50 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-8 5 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:55 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-9 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET / HTTP/1.1" 200 2139 http-bio-80-exec-10 8 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-10 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-7 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/data.js HTTP/1.1" 200 5193 http-bio-80-exec-4 5 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 4 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-7 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-7 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:53 +0800] "GET / HTTP/1.1" 200 2136 http-bio-80-exec-7 5 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:53 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:54 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 10 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:01 +0800] "GET /blog?title=%E8%BE%89%E8%BE%89 HTTP/1.1" 200 118 http-bio-80-exec-7 5 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-7 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 4 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:13 +0800] "GET /blog/2 HTTP/1.1" 200 119 http-bio-80-exec-7 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:37 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-7 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:37 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:38 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 233 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-7 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-7 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 9 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:32 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-7 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-7 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-7 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-5 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-5 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 4 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-4 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:35 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-4 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:37 +0800] "PUT /blog HTTP/1.1" 200 11 http-bio-80-exec-4 47 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:38 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 7 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:03 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-4 5 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:04 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-4 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-4 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-4 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:07 +0800] "GET /blog/3 HTTP/1.1" 200 119 http-bio-80-exec-4 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:12 +0800] "DELETE /blog/3 HTTP/1.1" 500 4607 http-bio-80-exec-4 20 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-5 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-5 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 11 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-5 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-5 2 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-5 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 5 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-5 1 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-1 48 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-3 7 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-2 14 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:56 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 776 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:00 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-6 56 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:01 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-7 5 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:04 +0800] "DELETE /blog/4 HTTP/1.1" 200 11 http-bio-80-exec-8 21 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:05 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-9 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-1 132 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-3 24 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-2 5 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:37 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 1045 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:37 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 4 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:27 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-8 12 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:27 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 15 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:53 +0800] "GET /blog?title=%E9%99%88 HTTP/1.1" 200 121 http-bio-80-exec-10 77 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:24 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-10 8 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:55 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-10 12 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:55 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 7 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:18 +0800] "DELETE /blog/2 HTTP/1.1" 200 11 http-bio-80-exec-10 237 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:19 +0800] "GET /blog HTTP/1.1" 200 118 http-bio-80-exec-10 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-10 13 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-10 14 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET /blog HTTP/1.1" 200 118 http-bio-80-exec-10 4 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:55 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-10 48 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:56 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 3 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:37:23 +0800] "GET /blog/5 HTTP/1.1" 200 119 http-bio-80-exec-10 4 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:38:19 +0800] "PUT /blog HTTP/1.1" 200 11 http-bio-80-exec-10 7 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:38:20 +0800] "GET /blog HTTP/1.1" 200 230 http-bio-80-exec-10 7 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:39:30 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-1 13 -0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:39:30 +0800] "GET /blog HTTP/1.1" 200 230 http-bio-80-exec-1 8 -- Gitee From b247c6277a6b3203dcde868bb766465c1b8712ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E7=8E=AE=E9=93=AD?= <2373854303@qq.com> Date: Mon, 6 Jan 2025 10:39:15 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4106=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\347\273\203\344\271\240(\345\233\233).md" | 943 ++++ .../MyBlog/.idea/.gitignore" | 8 + .../MyBlog/.idea/compiler.xml" | 16 + .../MyBlog/.idea/dataSources.xml" | 12 + .../MyBlog/.idea/encodings.xml" | 7 + .../MyBlog/.idea/jarRepositories.xml" | 20 + .../MyBlog/.idea/misc.xml" | 17 + .../MyBlog/.idea/sqldialects.xml" | 6 + .../MyBlog/pom.xml" | 103 + .../src/main/java/com/config/JdbcConfig.java" | 20 + .../main/java/com/config/MyBatisConfig.java" | 19 + .../main/java/com/config/SpringConfig.java" | 11 + .../java/com/config/SpringMvcConfig.java" | 17 + .../src/main/java/com/config/WebConfig.java" | 20 + .../java/com/controller/BlogController.java" | 55 + .../src/main/java/com/entity/Blog.java" | 15 + .../src/main/java/com/mapper/BlogMapper.java" | 33 + .../main/java/com/service/BlogService.java" | 25 + .../com/service/impl/BlogServiceImpl.java" | 53 + .../MyBlog/src/main/webapp/css/styles.css" | 128 + .../MyBlog/src/main/webapp/index.html" | 62 + .../MyBlog/src/main/webapp/js/axios.min.js" | 2 + .../MyBlog/src/main/webapp/js/book.js" | 188 + .../MyBlog/src/main/webapp/js/data.js" | 182 + .../classes/com/config/JdbcConfig.class" | Bin 0 -> 890 bytes .../classes/com/config/MyBatisConfig.class" | Bin 0 -> 889 bytes .../classes/com/config/SpringConfig.class" | Bin 0 -> 591 bytes .../classes/com/config/SpringMvcConfig.class" | Bin 0 -> 1284 bytes .../classes/com/config/WebConfig.class" | Bin 0 -> 830 bytes .../com/controller/BlogController.class" | Bin 0 -> 3615 bytes .../target/classes/com/entity/Blog.class" | Bin 0 -> 2949 bytes .../classes/com/mapper/BlogMapper.class" | Bin 0 -> 1261 bytes .../classes/com/service/BlogService.class" | Bin 0 -> 510 bytes .../com/service/impl/BlogServiceImpl.class" | Bin 0 -> 2823 bytes .../compile/default-compile/createdFiles.lst" | 10 + .../compile/default-compile/inputFiles.lst" | 10 + .../target/tomcat/conf/logging.properties" | 64 + .../target/tomcat/conf/tomcat-users.xml" | 26 + .../MyBlog/target/tomcat/conf/web.xml" | 4283 +++++++++++++++++ .../target/tomcat/logs/access_log.2025-01-06" | 103 + 40 files changed, 6458 insertions(+) create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/.gitignore" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/compiler.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/dataSources.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/encodings.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/jarRepositories.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/misc.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/sqldialects.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/pom.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/JdbcConfig.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/MyBatisConfig.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringConfig.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringMvcConfig.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/WebConfig.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/controller/BlogController.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/entity/Blog.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/mapper/BlogMapper.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/BlogService.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/impl/BlogServiceImpl.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/css/styles.css" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/index.html" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/axios.min.js" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/book.js" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/data.js" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/JdbcConfig.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/MyBatisConfig.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/SpringConfig.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/SpringMvcConfig.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/WebConfig.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/controller/BlogController.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/entity/Blog.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/mapper/BlogMapper.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/BlogService.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/impl/BlogServiceImpl.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" new file mode 100644 index 0000000..4f1b137 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233).md" @@ -0,0 +1,943 @@ +## 课堂笔记 + +#### **综合练习(四)(博客管理系统)** + +**一、准备sql数据** + +**二、设置好 Maven 并导入依赖项** + +**三、构建好项目结构** + +**四、编写 Blog 实体类、Blog 里的各种配置类** + +**五、编写 BlogMapper 接口、BlogService 接口、BlogServiceImpl 实现类** + +**六、编写 BlogController 类** + +**七、启动Tomcat** + +**八、修改前端请求页面** + +**九、浏览器 开始测试各个请求** + +## 课后作业 + +#### **综合练习(四)(博客管理系统)** + +#### **项目结构预览** + + + +#### 具体步骤 + +##### **一、准备sql数据** + +```sql +/* + Navicat Premium Dump SQL + + Source Server : mysql + Source Server Type : MySQL + Source Server Version : 80034 (8.0.34) + Source Host : localhost:3306 + Source Schema : demo + + Target Server Type : MySQL + Target Server Version : 80034 (8.0.34) + File Encoding : 65001 + + Date: 06/01/2025 08:15:18 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for blog +-- ---------------------------- +DROP TABLE IF EXISTS `blog`; +CREATE TABLE `blog` ( + `blogId` int NOT NULL AUTO_INCREMENT, + `blogTitle` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `blogAuthor` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `blogText` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`blogId`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of blog +-- ---------------------------- +INSERT INTO `blog` VALUES (1, '辉辉的个人博客', '刘文辉', '这是一个博客'); +INSERT INTO `blog` VALUES (2, '陈俊杰的个人博客', '陈俊杰', '这是一个博客'); + +SET FOREIGN_KEY_CHECKS = 1; +``` + +##### **二、设置好 Maven 并导入依赖项** + +**pom.xml 依赖配置文件** + +```xml +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -default -org.apache.catalina.servlets.DefaultServlet -- -debug -0 -- -listings -false -1 -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -jsp -org.apache.jasper.servlet.JspServlet -- -fork -false -- -xpoweredBy -false -3 -- - - -default -/ -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -jsp -*.jsp -*.jspx -- - - - - - - - - - -30 -- -123 -application/vnd.lotus-1-2-3 -- -3dml -text/vnd.in3d.3dml -- -3g2 -video/3gpp2 -- -3gp -video/3gpp -- -7z -application/x-7z-compressed -- -aab -application/x-authorware-bin -- -aac -audio/x-aac -- -aam -application/x-authorware-map -- -aas -application/x-authorware-seg -- -abs -audio/x-mpeg -- -abw -application/x-abiword -- -ac -application/pkix-attr-cert -- -acc -application/vnd.americandynamics.acc -- -ace -application/x-ace-compressed -- -acu -application/vnd.acucobol -- -acutc -application/vnd.acucorp -- -adp -audio/adpcm -- -aep -application/vnd.audiograph -- -afm -application/x-font-type1 -- -afp -application/vnd.ibm.modcap -- -ahead -application/vnd.ahead.space -- -ai -application/postscript -- -aif -audio/x-aiff -- -aifc -audio/x-aiff -- -aiff -audio/x-aiff -- -aim -application/x-aim -- -air -application/vnd.adobe.air-application-installer-package+zip -- -ait -application/vnd.dvb.ait -- -ami -application/vnd.amiga.ami -- -anx -application/annodex -- -apk -application/vnd.android.package-archive -- -application -application/x-ms-application -- -apr -application/vnd.lotus-approach -- -art -image/x-jg -- -asc -application/pgp-signature -- -asf -video/x-ms-asf -- -asm -text/x-asm -- -aso -application/vnd.accpac.simply.aso -- -asx -video/x-ms-asf -- -atc -application/vnd.acucorp -- -atom -application/atom+xml -- -atomcat -application/atomcat+xml -- -atomsvc -application/atomsvc+xml -- -atx -application/vnd.antix.game-component -- -au -audio/basic -- -avi -video/x-msvideo -- -avx -video/x-rad-screenplay -- -aw -application/applixware -- -axa -audio/annodex -- -axv -video/annodex -- -azf -application/vnd.airzip.filesecure.azf -- -azs -application/vnd.airzip.filesecure.azs -- -azw -application/vnd.amazon.ebook -- -bat -application/x-msdownload -- -bcpio -application/x-bcpio -- -bdf -application/x-font-bdf -- -bdm -application/vnd.syncml.dm+wbxml -- -bed -application/vnd.realvnc.bed -- -bh2 -application/vnd.fujitsu.oasysprs -- -bin -application/octet-stream -- -bmi -application/vnd.bmi -- -bmp -image/bmp -- -body -text/html -- -book -application/vnd.framemaker -- -box -application/vnd.previewsystems.box -- -boz -application/x-bzip2 -- -bpk -application/octet-stream -- -btif -image/prs.btif -- -bz -application/x-bzip -- -bz2 -application/x-bzip2 -- -c -text/x-c -- -c11amc -application/vnd.cluetrust.cartomobile-config -- -c11amz -application/vnd.cluetrust.cartomobile-config-pkg -- -c4d -application/vnd.clonk.c4group -- -c4f -application/vnd.clonk.c4group -- -c4g -application/vnd.clonk.c4group -- -c4p -application/vnd.clonk.c4group -- -c4u -application/vnd.clonk.c4group -- -cab -application/vnd.ms-cab-compressed -- -cap -application/vnd.tcpdump.pcap -- -car -application/vnd.curl.car -- -cat -application/vnd.ms-pki.seccat -- -cc -text/x-c -- -cct -application/x-director -- -ccxml -application/ccxml+xml -- -cdbcmsg -application/vnd.contact.cmsg -- -cdf -application/x-cdf -- -cdkey -application/vnd.mediastation.cdkey -- -cdmia -application/cdmi-capability -- -cdmic -application/cdmi-container -- -cdmid -application/cdmi-domain -- -cdmio -application/cdmi-object -- -cdmiq -application/cdmi-queue -- -cdx -chemical/x-cdx -- -cdxml -application/vnd.chemdraw+xml -- -cdy -application/vnd.cinderella -- -cer -application/pkix-cert -- -cgm -image/cgm -- -chat -application/x-chat -- -chm -application/vnd.ms-htmlhelp -- -chrt -application/vnd.kde.kchart -- -cif -chemical/x-cif -- -cii -application/vnd.anser-web-certificate-issue-initiation -- -cil -application/vnd.ms-artgalry -- -cla -application/vnd.claymore -- -class -application/java -- -clkk -application/vnd.crick.clicker.keyboard -- -clkp -application/vnd.crick.clicker.palette -- -clkt -application/vnd.crick.clicker.template -- -clkw -application/vnd.crick.clicker.wordbank -- -clkx -application/vnd.crick.clicker -- -clp -application/x-msclip -- -cmc -application/vnd.cosmocaller -- -cmdf -chemical/x-cmdf -- -cml -chemical/x-cml -- -cmp -application/vnd.yellowriver-custom-menu -- -cmx -image/x-cmx -- -cod -application/vnd.rim.cod -- -com -application/x-msdownload -- -conf -text/plain -- -cpio -application/x-cpio -- -cpp -text/x-c -- -cpt -application/mac-compactpro -- -crd -application/x-mscardfile -- -crl -application/pkix-crl -- -crt -application/x-x509-ca-cert -- -cryptonote -application/vnd.rig.cryptonote -- -csh -application/x-csh -- -csml -chemical/x-csml -- -csp -application/vnd.commonspace -- -css -text/css -- -cst -application/x-director -- -csv -text/csv -- -cu -application/cu-seeme -- -curl -text/vnd.curl -- -cww -application/prs.cww -- -cxt -application/x-director -- -cxx -text/x-c -- -dae -model/vnd.collada+xml -- -daf -application/vnd.mobius.daf -- -dataless -application/vnd.fdsn.seed -- -davmount -application/davmount+xml -- -dcr -application/x-director -- -dcurl -text/vnd.curl.dcurl -- -dd2 -application/vnd.oma.dd2+xml -- -ddd -application/vnd.fujixerox.ddd -- -deb -application/x-debian-package -- -def -text/plain -- -deploy -application/octet-stream -- -der -application/x-x509-ca-cert -- -dfac -application/vnd.dreamfactory -- -dib -image/bmp -- -dic -text/x-c -- -dir -application/x-director -- -dis -application/vnd.mobius.dis -- -dist -application/octet-stream -- -distz -application/octet-stream -- -djv -image/vnd.djvu -- -djvu -image/vnd.djvu -- -dll -application/x-msdownload -- -dmg -application/octet-stream -- -dmp -application/vnd.tcpdump.pcap -- -dms -application/octet-stream -- -dna -application/vnd.dna -- -doc -application/msword -- -docm -application/vnd.ms-word.document.macroenabled.12 -- -docx -application/vnd.openxmlformats-officedocument.wordprocessingml.document -- -dot -application/msword -- -dotm -application/vnd.ms-word.template.macroenabled.12 -- -dotx -application/vnd.openxmlformats-officedocument.wordprocessingml.template -- -dp -application/vnd.osgi.dp -- -dpg -application/vnd.dpgraph -- -dra -audio/vnd.dra -- -dsc -text/prs.lines.tag -- -dssc -application/dssc+der -- -dtb -application/x-dtbook+xml -- -dtd -application/xml-dtd -- -dts -audio/vnd.dts -- -dtshd -audio/vnd.dts.hd -- -dump -application/octet-stream -- -dv -video/x-dv -- -dvb -video/vnd.dvb.file -- -dvi -application/x-dvi -- -dwf -model/vnd.dwf -- -dwg -image/vnd.dwg -- -dxf -image/vnd.dxf -- -dxp -application/vnd.spotfire.dxp -- -dxr -application/x-director -- -ecelp4800 -audio/vnd.nuera.ecelp4800 -- -ecelp7470 -audio/vnd.nuera.ecelp7470 -- -ecelp9600 -audio/vnd.nuera.ecelp9600 -- -ecma -application/ecmascript -- -edm -application/vnd.novadigm.edm -- -edx -application/vnd.novadigm.edx -- -efif -application/vnd.picsel -- -ei6 -application/vnd.pg.osasli -- -elc -application/octet-stream -- -eml -message/rfc822 -- -emma -application/emma+xml -- -eol -audio/vnd.digital-winds -- -eot -application/vnd.ms-fontobject -- -eps -application/postscript -- -epub -application/epub+zip -- -es3 -application/vnd.eszigno3+xml -- -esf -application/vnd.epson.esf -- -et3 -application/vnd.eszigno3+xml -- -etx -text/x-setext -- -exe -application/octet-stream -- -exi -application/exi -- -ext -application/vnd.novadigm.ext -- -ez -application/andrew-inset -- -ez2 -application/vnd.ezpix-album -- -ez3 -application/vnd.ezpix-package -- -f -text/x-fortran -- -f4v -video/x-f4v -- -f77 -text/x-fortran -- -f90 -text/x-fortran -- -fbs -image/vnd.fastbidsheet -- -fcs -application/vnd.isac.fcs -- -fdf -application/vnd.fdf -- -fe_launch -application/vnd.denovo.fcselayout-link -- -fg5 -application/vnd.fujitsu.oasysgp -- -fgd -application/x-director -- -fh -image/x-freehand -- -fh4 -image/x-freehand -- -fh5 -image/x-freehand -- -fh7 -image/x-freehand -- -fhc -image/x-freehand -- -fig -application/x-xfig -- -flac -audio/flac -- -fli -video/x-fli -- -flo -application/vnd.micrografx.flo -- -flv -video/x-flv -- -flw -application/vnd.kde.kivio -- -flx -text/vnd.fmi.flexstor -- -fly -text/vnd.fly -- -fm -application/vnd.framemaker -- -fnc -application/vnd.frogans.fnc -- -for -text/x-fortran -- -fpx -image/vnd.fpx -- -frame -application/vnd.framemaker -- -fsc -application/vnd.fsc.weblaunch -- -fst -image/vnd.fst -- -ftc -application/vnd.fluxtime.clip -- -fti -application/vnd.anser-web-funds-transfer-initiation -- -fvt -video/vnd.fvt -- -fxp -application/vnd.adobe.fxp -- -fxpl -application/vnd.adobe.fxp -- -fzs -application/vnd.fuzzysheet -- -g2w -application/vnd.geoplan -- -g3 -image/g3fax -- -g3w -application/vnd.geospace -- -gac -application/vnd.groove-account -- -gbr -application/rpki-ghostbusters -- -gdl -model/vnd.gdl -- -geo -application/vnd.dynageo -- -gex -application/vnd.geometry-explorer -- -ggb -application/vnd.geogebra.file -- -ggt -application/vnd.geogebra.tool -- -ghf -application/vnd.groove-help -- -gif -image/gif -- -gim -application/vnd.groove-identity-message -- -gmx -application/vnd.gmx -- -gnumeric -application/x-gnumeric -- -gph -application/vnd.flographit -- -gqf -application/vnd.grafeq -- -gqs -application/vnd.grafeq -- -gram -application/srgs -- -gre -application/vnd.geometry-explorer -- -grv -application/vnd.groove-injector -- -grxml -application/srgs+xml -- -gsf -application/x-font-ghostscript -- -gtar -application/x-gtar -- -gtm -application/vnd.groove-tool-message -- -gtw -model/vnd.gtw -- -gv -text/vnd.graphviz -- -gxt -application/vnd.geonext -- -gz -application/x-gzip -- -h -text/x-c -- -h261 -video/h261 -- -h263 -video/h263 -- -h264 -video/h264 -- -hal -application/vnd.hal+xml -- -hbci -application/vnd.hbci -- -hdf -application/x-hdf -- -hh -text/x-c -- -hlp -application/winhlp -- -hpgl -application/vnd.hp-hpgl -- -hpid -application/vnd.hp-hpid -- -hps -application/vnd.hp-hps -- -hqx -application/mac-binhex40 -- -htc -text/x-component -- -htke -application/vnd.kenameaapp -- -htm -text/html -- -html -text/html -- -hvd -application/vnd.yamaha.hv-dic -- -hvp -application/vnd.yamaha.hv-voice -- -hvs -application/vnd.yamaha.hv-script -- -i2g -application/vnd.intergeo -- -icc -application/vnd.iccprofile -- -ice -x-conference/x-cooltalk -- -icm -application/vnd.iccprofile -- -ico -image/x-icon -- -ics -text/calendar -- -ief -image/ief -- -ifb -text/calendar -- -ifm -application/vnd.shana.informed.formdata -- -iges -model/iges -- -igl -application/vnd.igloader -- -igm -application/vnd.insors.igm -- -igs -model/iges -- -igx -application/vnd.micrografx.igx -- -iif -application/vnd.shana.informed.interchange -- -imp -application/vnd.accpac.simply.imp -- -ims -application/vnd.ms-ims -- -in -text/plain -- -ink -application/inkml+xml -- -inkml -application/inkml+xml -- -iota -application/vnd.astraea-software.iota -- -ipfix -application/ipfix -- -ipk -application/vnd.shana.informed.package -- -irm -application/vnd.ibm.rights-management -- -irp -application/vnd.irepository.package+xml -- -iso -application/octet-stream -- -itp -application/vnd.shana.informed.formtemplate -- -ivp -application/vnd.immervision-ivp -- -ivu -application/vnd.immervision-ivu -- -jad -text/vnd.sun.j2me.app-descriptor -- -jam -application/vnd.jam -- -jar -application/java-archive -- -java -text/x-java-source -- -jisp -application/vnd.jisp -- -jlt -application/vnd.hp-jlyt -- -jnlp -application/x-java-jnlp-file -- -joda -application/vnd.joost.joda-archive -- -jpe -image/jpeg -- -jpeg -image/jpeg -- -jpg -image/jpeg -- -jpgm -video/jpm -- -jpgv -video/jpeg -- -jpm -video/jpm -- -js -application/javascript -- -jsf -text/plain -- -json -application/json -- -jspf -text/plain -- -kar -audio/midi -- -karbon -application/vnd.kde.karbon -- -kfo -application/vnd.kde.kformula -- -kia -application/vnd.kidspiration -- -kml -application/vnd.google-earth.kml+xml -- -kmz -application/vnd.google-earth.kmz -- -kne -application/vnd.kinar -- -knp -application/vnd.kinar -- -kon -application/vnd.kde.kontour -- -kpr -application/vnd.kde.kpresenter -- -kpt -application/vnd.kde.kpresenter -- -ksp -application/vnd.kde.kspread -- -ktr -application/vnd.kahootz -- -ktx -image/ktx -- -ktz -application/vnd.kahootz -- -kwd -application/vnd.kde.kword -- -kwt -application/vnd.kde.kword -- -lasxml -application/vnd.las.las+xml -- -latex -application/x-latex -- -lbd -application/vnd.llamagraphics.life-balance.desktop -- -lbe -application/vnd.llamagraphics.life-balance.exchange+xml -- -les -application/vnd.hhe.lesson-player -- -lha -application/octet-stream -- -link66 -application/vnd.route66.link66+xml -- -list -text/plain -- -list3820 -application/vnd.ibm.modcap -- -listafp -application/vnd.ibm.modcap -- -log -text/plain -- -lostxml -application/lost+xml -- -lrf -application/octet-stream -- -lrm -application/vnd.ms-lrm -- -ltf -application/vnd.frogans.ltf -- -lvp -audio/vnd.lucent.voice -- -lwp -application/vnd.lotus-wordpro -- -lzh -application/octet-stream -- -m13 -application/x-msmediaview -- -m14 -application/x-msmediaview -- -m1v -video/mpeg -- -m21 -application/mp21 -- -m2a -audio/mpeg -- -m2v -video/mpeg -- -m3a -audio/mpeg -- -m3u -audio/x-mpegurl -- -m3u8 -application/vnd.apple.mpegurl -- -m4a -audio/mp4 -- -m4b -audio/mp4 -- -m4r -audio/mp4 -- -m4u -video/vnd.mpegurl -- -m4v -video/mp4 -- -ma -application/mathematica -- -mac -image/x-macpaint -- -mads -application/mads+xml -- -mag -application/vnd.ecowin.chart -- -maker -application/vnd.framemaker -- -man -text/troff -- -mathml -application/mathml+xml -- -mb -application/mathematica -- -mbk -application/vnd.mobius.mbk -- -mbox -application/mbox -- -mc1 -application/vnd.medcalcdata -- -mcd -application/vnd.mcd -- -mcurl -text/vnd.curl.mcurl -- -mdb -application/x-msaccess -- -mdi -image/vnd.ms-modi -- -me -text/troff -- -mesh -model/mesh -- -meta4 -application/metalink4+xml -- -mets -application/mets+xml -- -mfm -application/vnd.mfmp -- -mft -application/rpki-manifest -- -mgp -application/vnd.osgeo.mapguide.package -- -mgz -application/vnd.proteus.magazine -- -mid -audio/midi -- -midi -audio/midi -- -mif -application/x-mif -- -mime -message/rfc822 -- -mj2 -video/mj2 -- -mjp2 -video/mj2 -- -mlp -application/vnd.dolby.mlp -- -mmd -application/vnd.chipnuts.karaoke-mmd -- -mmf -application/vnd.smaf -- -mmr -image/vnd.fujixerox.edmics-mmr -- -mny -application/x-msmoney -- -mobi -application/x-mobipocket-ebook -- -mods -application/mods+xml -- -mov -video/quicktime -- -movie -video/x-sgi-movie -- -mp1 -audio/mpeg -- -mp2 -audio/mpeg -- -mp21 -application/mp21 -- -mp2a -audio/mpeg -- -mp3 -audio/mpeg -- -mp4 -video/mp4 -- -mp4a -audio/mp4 -- -mp4s -application/mp4 -- -mp4v -video/mp4 -- -mpa -audio/mpeg -- -mpc -application/vnd.mophun.certificate -- -mpe -video/mpeg -- -mpeg -video/mpeg -- -mpega -audio/x-mpeg -- -mpg -video/mpeg -- -mpg4 -video/mp4 -- -mpga -audio/mpeg -- -mpkg -application/vnd.apple.installer+xml -- -mpm -application/vnd.blueice.multipass -- -mpn -application/vnd.mophun.application -- -mpp -application/vnd.ms-project -- -mpt -application/vnd.ms-project -- -mpv2 -video/mpeg2 -- -mpy -application/vnd.ibm.minipay -- -mqy -application/vnd.mobius.mqy -- -mrc -application/marc -- -mrcx -application/marcxml+xml -- -ms -text/troff -- -mscml -application/mediaservercontrol+xml -- -mseed -application/vnd.fdsn.mseed -- -mseq -application/vnd.mseq -- -msf -application/vnd.epson.msf -- -msh -model/mesh -- -msi -application/x-msdownload -- -msl -application/vnd.mobius.msl -- -msty -application/vnd.muvee.style -- -mts -model/vnd.mts -- -mus -application/vnd.musician -- -musicxml -application/vnd.recordare.musicxml+xml -- -mvb -application/x-msmediaview -- -mwf -application/vnd.mfer -- -mxf -application/mxf -- -mxl -application/vnd.recordare.musicxml -- -mxml -application/xv+xml -- -mxs -application/vnd.triscape.mxs -- -mxu -video/vnd.mpegurl -- -n-gage -application/vnd.nokia.n-gage.symbian.install -- -n3 -text/n3 -- -nb -application/mathematica -- -nbp -application/vnd.wolfram.player -- -nc -application/x-netcdf -- -ncx -application/x-dtbncx+xml -- -ngdat -application/vnd.nokia.n-gage.data -- -nlu -application/vnd.neurolanguage.nlu -- -nml -application/vnd.enliven -- -nnd -application/vnd.noblenet-directory -- -nns -application/vnd.noblenet-sealer -- -nnw -application/vnd.noblenet-web -- -npx -image/vnd.net-fpx -- -nsf -application/vnd.lotus-notes -- -oa2 -application/vnd.fujitsu.oasys2 -- -oa3 -application/vnd.fujitsu.oasys3 -- -oas -application/vnd.fujitsu.oasys -- -obd -application/x-msbinder -- -oda -application/oda -- - -odb -application/vnd.oasis.opendocument.database -- - -odc -application/vnd.oasis.opendocument.chart -- - -odf -application/vnd.oasis.opendocument.formula -- -odft -application/vnd.oasis.opendocument.formula-template -- - -odg -application/vnd.oasis.opendocument.graphics -- - -odi -application/vnd.oasis.opendocument.image -- - -odm -application/vnd.oasis.opendocument.text-master -- - -odp -application/vnd.oasis.opendocument.presentation -- - -ods -application/vnd.oasis.opendocument.spreadsheet -- - -odt -application/vnd.oasis.opendocument.text -- -oga -audio/ogg -- -ogg -audio/ogg -- -ogv -video/ogg -- - -ogx -application/ogg -- -onepkg -application/onenote -- -onetmp -application/onenote -- -onetoc -application/onenote -- -onetoc2 -application/onenote -- -opf -application/oebps-package+xml -- -oprc -application/vnd.palm -- -org -application/vnd.lotus-organizer -- -osf -application/vnd.yamaha.openscoreformat -- -osfpvg -application/vnd.yamaha.openscoreformat.osfpvg+xml -- -otc -application/vnd.oasis.opendocument.chart-template -- -otf -application/x-font-otf -- - -otg -application/vnd.oasis.opendocument.graphics-template -- - -oth -application/vnd.oasis.opendocument.text-web -- -oti -application/vnd.oasis.opendocument.image-template -- - -otp -application/vnd.oasis.opendocument.presentation-template -- - -ots -application/vnd.oasis.opendocument.spreadsheet-template -- - -ott -application/vnd.oasis.opendocument.text-template -- -oxps -application/oxps -- -oxt -application/vnd.openofficeorg.extension -- -p -text/x-pascal -- -p10 -application/pkcs10 -- -p12 -application/x-pkcs12 -- -p7b -application/x-pkcs7-certificates -- -p7c -application/pkcs7-mime -- -p7m -application/pkcs7-mime -- -p7r -application/x-pkcs7-certreqresp -- -p7s -application/pkcs7-signature -- -p8 -application/pkcs8 -- -pas -text/x-pascal -- -paw -application/vnd.pawaafile -- -pbd -application/vnd.powerbuilder6 -- -pbm -image/x-portable-bitmap -- -pcap -application/vnd.tcpdump.pcap -- -pcf -application/x-font-pcf -- -pcl -application/vnd.hp-pcl -- -pclxl -application/vnd.hp-pclxl -- -pct -image/pict -- -pcurl -application/vnd.curl.pcurl -- -pcx -image/x-pcx -- -pdb -application/vnd.palm -- -application/pdf -- -pfa -application/x-font-type1 -- -pfb -application/x-font-type1 -- -pfm -application/x-font-type1 -- -pfr -application/font-tdpfr -- -pfx -application/x-pkcs12 -- -pgm -image/x-portable-graymap -- -pgn -application/x-chess-pgn -- -pgp -application/pgp-encrypted -- -pic -image/pict -- -pict -image/pict -- -pkg -application/octet-stream -- -pki -application/pkixcmp -- -pkipath -application/pkix-pkipath -- -plb -application/vnd.3gpp.pic-bw-large -- -plc -application/vnd.mobius.plc -- -plf -application/vnd.pocketlearn -- -pls -audio/x-scpls -- -pml -application/vnd.ctc-posml -- -png -image/png -- -pnm -image/x-portable-anymap -- -pnt -image/x-macpaint -- -portpkg -application/vnd.macports.portpkg -- -pot -application/vnd.ms-powerpoint -- -potm -application/vnd.ms-powerpoint.template.macroenabled.12 -- -potx -application/vnd.openxmlformats-officedocument.presentationml.template -- -ppam -application/vnd.ms-powerpoint.addin.macroenabled.12 -- -ppd -application/vnd.cups-ppd -- -ppm -image/x-portable-pixmap -- -pps -application/vnd.ms-powerpoint -- -ppsm -application/vnd.ms-powerpoint.slideshow.macroenabled.12 -- -ppsx -application/vnd.openxmlformats-officedocument.presentationml.slideshow -- -ppt -application/vnd.ms-powerpoint -- -pptm -application/vnd.ms-powerpoint.presentation.macroenabled.12 -- -pptx -application/vnd.openxmlformats-officedocument.presentationml.presentation -- -pqa -application/vnd.palm -- -prc -application/x-mobipocket-ebook -- -pre -application/vnd.lotus-freelance -- -prf -application/pics-rules -- -ps -application/postscript -- -psb -application/vnd.3gpp.pic-bw-small -- -psd -image/vnd.adobe.photoshop -- -psf -application/x-font-linux-psf -- -pskcxml -application/pskc+xml -- -ptid -application/vnd.pvi.ptid1 -- -pub -application/x-mspublisher -- -pvb -application/vnd.3gpp.pic-bw-var -- -pwn -application/vnd.3m.post-it-notes -- -pya -audio/vnd.ms-playready.media.pya -- -pyv -video/vnd.ms-playready.media.pyv -- -qam -application/vnd.epson.quickanime -- -qbo -application/vnd.intu.qbo -- -qfx -application/vnd.intu.qfx -- -qps -application/vnd.publishare-delta-tree -- -qt -video/quicktime -- -qti -image/x-quicktime -- -qtif -image/x-quicktime -- -qwd -application/vnd.quark.quarkxpress -- -qwt -application/vnd.quark.quarkxpress -- -qxb -application/vnd.quark.quarkxpress -- -qxd -application/vnd.quark.quarkxpress -- -qxl -application/vnd.quark.quarkxpress -- -qxt -application/vnd.quark.quarkxpress -- -ra -audio/x-pn-realaudio -- -ram -audio/x-pn-realaudio -- -rar -application/x-rar-compressed -- -ras -image/x-cmu-raster -- -rcprofile -application/vnd.ipunplugged.rcprofile -- -rdf -application/rdf+xml -- -rdz -application/vnd.data-vision.rdz -- -rep -application/vnd.businessobjects -- -res -application/x-dtbresource+xml -- -rgb -image/x-rgb -- -rif -application/reginfo+xml -- -rip -audio/vnd.rip -- -rl -application/resource-lists+xml -- -rlc -image/vnd.fujixerox.edmics-rlc -- -rld -application/resource-lists-diff+xml -- -rm -application/vnd.rn-realmedia -- -rmi -audio/midi -- -rmp -audio/x-pn-realaudio-plugin -- -rms -application/vnd.jcp.javame.midlet-rms -- -rnc -application/relax-ng-compact-syntax -- -roa -application/rpki-roa -- -roff -text/troff -- -rp9 -application/vnd.cloanto.rp9 -- -rpss -application/vnd.nokia.radio-presets -- -rpst -application/vnd.nokia.radio-preset -- -rq -application/sparql-query -- -rs -application/rls-services+xml -- -rsd -application/rsd+xml -- -rss -application/rss+xml -- -rtf -application/rtf -- -rtx -text/richtext -- -s -text/x-asm -- -saf -application/vnd.yamaha.smaf-audio -- -sbml -application/sbml+xml -- -sc -application/vnd.ibm.secure-container -- -scd -application/x-msschedule -- -scm -application/vnd.lotus-screencam -- -scq -application/scvp-cv-request -- -scs -application/scvp-cv-response -- -scurl -text/vnd.curl.scurl -- -sda -application/vnd.stardivision.draw -- -sdc -application/vnd.stardivision.calc -- -sdd -application/vnd.stardivision.impress -- -sdkd -application/vnd.solent.sdkm+xml -- -sdkm -application/vnd.solent.sdkm+xml -- -sdp -application/sdp -- -sdw -application/vnd.stardivision.writer -- -see -application/vnd.seemail -- -seed -application/vnd.fdsn.seed -- -sema -application/vnd.sema -- -semd -application/vnd.semd -- -semf -application/vnd.semf -- -ser -application/java-serialized-object -- -setpay -application/set-payment-initiation -- -setreg -application/set-registration-initiation -- -sfd-hdstx -application/vnd.hydrostatix.sof-data -- -sfs -application/vnd.spotfire.sfs -- -sgl -application/vnd.stardivision.writer-global -- -sgm -text/sgml -- -sgml -text/sgml -- -sh -application/x-sh -- -shar -application/x-shar -- - -shf -application/shf+xml -- -sig -application/pgp-signature -- -silo -model/mesh -- -sis -application/vnd.symbian.install -- -sisx -application/vnd.symbian.install -- -sit -application/x-stuffit -- -sitx -application/x-stuffitx -- -skd -application/vnd.koan -- -skm -application/vnd.koan -- -skp -application/vnd.koan -- -skt -application/vnd.koan -- -sldm -application/vnd.ms-powerpoint.slide.macroenabled.12 -- -sldx -application/vnd.openxmlformats-officedocument.presentationml.slide -- -slt -application/vnd.epson.salt -- -sm -application/vnd.stepmania.stepchart -- -smf -application/vnd.stardivision.math -- -smi -application/smil+xml -- -smil -application/smil+xml -- -smzip -application/vnd.stepmania.package -- -snd -audio/basic -- -snf -application/x-font-snf -- -so -application/octet-stream -- -spc -application/x-pkcs7-certificates -- -spf -application/vnd.yamaha.smaf-phrase -- -spl -application/x-futuresplash -- -spot -text/vnd.in3d.spot -- -spp -application/scvp-vp-response -- -spq -application/scvp-vp-request -- -spx -audio/ogg -- -src -application/x-wais-source -- -sru -application/sru+xml -- -srx -application/sparql-results+xml -- -sse -application/vnd.kodak-descriptor -- -ssf -application/vnd.epson.ssf -- -ssml -application/ssml+xml -- -st -application/vnd.sailingtracker.track -- -stc -application/vnd.sun.xml.calc.template -- -std -application/vnd.sun.xml.draw.template -- -stf -application/vnd.wt.stf -- -sti -application/vnd.sun.xml.impress.template -- -stk -application/hyperstudio -- -stl -application/vnd.ms-pki.stl -- -str -application/vnd.pg.format -- -stw -application/vnd.sun.xml.writer.template -- -sub -text/vnd.dvb.subtitle -- -sus -application/vnd.sus-calendar -- -susp -application/vnd.sus-calendar -- -sv4cpio -application/x-sv4cpio -- -sv4crc -application/x-sv4crc -- -svc -application/vnd.dvb.service -- -svd -application/vnd.svd -- -svg -image/svg+xml -- -svgz -image/svg+xml -- -swa -application/x-director -- -swf -application/x-shockwave-flash -- -swi -application/vnd.aristanetworks.swi -- -sxc -application/vnd.sun.xml.calc -- -sxd -application/vnd.sun.xml.draw -- -sxg -application/vnd.sun.xml.writer.global -- -sxi -application/vnd.sun.xml.impress -- -sxm -application/vnd.sun.xml.math -- -sxw -application/vnd.sun.xml.writer -- -t -text/troff -- -taglet -application/vnd.mynfc -- -tao -application/vnd.tao.intent-module-archive -- -tar -application/x-tar -- -tcap -application/vnd.3gpp2.tcap -- -tcl -application/x-tcl -- -teacher -application/vnd.smart.teacher -- -tei -application/tei+xml -- -teicorpus -application/tei+xml -- -tex -application/x-tex -- -texi -application/x-texinfo -- -texinfo -application/x-texinfo -- -text -text/plain -- -tfi -application/thraud+xml -- -tfm -application/x-tex-tfm -- -thmx -application/vnd.ms-officetheme -- -tif -image/tiff -- -tiff -image/tiff -- -tmo -application/vnd.tmobile-livetv -- -torrent -application/x-bittorrent -- -tpl -application/vnd.groove-tool-template -- -tpt -application/vnd.trid.tpt -- -tr -text/troff -- -tra -application/vnd.trueapp -- -trm -application/x-msterminal -- -tsd -application/timestamped-data -- -tsv -text/tab-separated-values -- -ttc -application/x-font-ttf -- -ttf -application/x-font-ttf -- -ttl -text/turtle -- -twd -application/vnd.simtech-mindmapper -- -twds -application/vnd.simtech-mindmapper -- -txd -application/vnd.genomatix.tuxedo -- -txf -application/vnd.mobius.txf -- -txt -text/plain -- -u32 -application/x-authorware-bin -- -udeb -application/x-debian-package -- -ufd -application/vnd.ufdl -- -ufdl -application/vnd.ufdl -- -ulw -audio/basic -- -umj -application/vnd.umajin -- -unityweb -application/vnd.unity -- -uoml -application/vnd.uoml+xml -- -uri -text/uri-list -- -uris -text/uri-list -- -urls -text/uri-list -- -ustar -application/x-ustar -- -utz -application/vnd.uiq.theme -- -uu -text/x-uuencode -- -uva -audio/vnd.dece.audio -- -uvd -application/vnd.dece.data -- -uvf -application/vnd.dece.data -- -uvg -image/vnd.dece.graphic -- -uvh -video/vnd.dece.hd -- -uvi -image/vnd.dece.graphic -- -uvm -video/vnd.dece.mobile -- -uvp -video/vnd.dece.pd -- -uvs -video/vnd.dece.sd -- -uvt -application/vnd.dece.ttml+xml -- -uvu -video/vnd.uvvu.mp4 -- -uvv -video/vnd.dece.video -- -uvva -audio/vnd.dece.audio -- -uvvd -application/vnd.dece.data -- -uvvf -application/vnd.dece.data -- -uvvg -image/vnd.dece.graphic -- -uvvh -video/vnd.dece.hd -- -uvvi -image/vnd.dece.graphic -- -uvvm -video/vnd.dece.mobile -- -uvvp -video/vnd.dece.pd -- -uvvs -video/vnd.dece.sd -- -uvvt -application/vnd.dece.ttml+xml -- -uvvu -video/vnd.uvvu.mp4 -- -uvvv -video/vnd.dece.video -- -uvvx -application/vnd.dece.unspecified -- -uvvz -application/vnd.dece.zip -- -uvx -application/vnd.dece.unspecified -- -uvz -application/vnd.dece.zip -- -vcard -text/vcard -- -vcd -application/x-cdlink -- -vcf -text/x-vcard -- -vcg -application/vnd.groove-vcard -- -vcs -text/x-vcalendar -- -vcx -application/vnd.vcx -- -vis -application/vnd.visionary -- -viv -video/vnd.vivo -- -vor -application/vnd.stardivision.writer -- -vox -application/x-authorware-bin -- -vrml -model/vrml -- -vsd -application/vnd.visio -- -vsf -application/vnd.vsf -- -vss -application/vnd.visio -- -vst -application/vnd.visio -- -vsw -application/vnd.visio -- -vtu -model/vnd.vtu -- -vxml -application/voicexml+xml -- -w3d -application/x-director -- -wad -application/x-doom -- -wav -audio/x-wav -- -wax -audio/x-ms-wax -- - -wbmp -image/vnd.wap.wbmp -- -wbs -application/vnd.criticaltools.wbs+xml -- -wbxml -application/vnd.wap.wbxml -- -wcm -application/vnd.ms-works -- -wdb -application/vnd.ms-works -- -weba -audio/webm -- -webm -video/webm -- -webp -image/webp -- -wg -application/vnd.pmi.widget -- -wgt -application/widget -- -wks -application/vnd.ms-works -- -wm -video/x-ms-wm -- -wma -audio/x-ms-wma -- -wmd -application/x-ms-wmd -- -wmf -application/x-msmetafile -- - -wml -text/vnd.wap.wml -- - -wmlc -application/vnd.wap.wmlc -- - -wmls -text/vnd.wap.wmlscript -- - -wmlsc -application/vnd.wap.wmlscriptc -- -wmv -video/x-ms-wmv -- -wmx -video/x-ms-wmx -- -wmz -application/x-ms-wmz -- -woff -application/x-font-woff -- -wpd -application/vnd.wordperfect -- -wpl -application/vnd.ms-wpl -- -wps -application/vnd.ms-works -- -wqd -application/vnd.wqd -- -wri -application/x-mswrite -- -wrl -model/vrml -- -wsdl -application/wsdl+xml -- -wspolicy -application/wspolicy+xml -- -wtb -application/vnd.webturbo -- -wvx -video/x-ms-wvx -- -x32 -application/x-authorware-bin -- -x3d -application/vnd.hzn-3d-crossword -- -xap -application/x-silverlight-app -- -xar -application/vnd.xara -- -xbap -application/x-ms-xbap -- -xbd -application/vnd.fujixerox.docuworks.binder -- -xbm -image/x-xbitmap -- -xdf -application/xcap-diff+xml -- -xdm -application/vnd.syncml.dm+xml -- -xdp -application/vnd.adobe.xdp+xml -- -xdssc -application/dssc+xml -- -xdw -application/vnd.fujixerox.docuworks -- -xenc -application/xenc+xml -- -xer -application/patch-ops-error+xml -- -xfdf -application/vnd.adobe.xfdf -- -xfdl -application/vnd.xfdl -- -xht -application/xhtml+xml -- -xhtml -application/xhtml+xml -- -xhvml -application/xv+xml -- -xif -image/vnd.xiff -- -xla -application/vnd.ms-excel -- -xlam -application/vnd.ms-excel.addin.macroenabled.12 -- -xlc -application/vnd.ms-excel -- -xlm -application/vnd.ms-excel -- -xls -application/vnd.ms-excel -- -xlsb -application/vnd.ms-excel.sheet.binary.macroenabled.12 -- -xlsm -application/vnd.ms-excel.sheet.macroenabled.12 -- -xlsx -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet -- -xlt -application/vnd.ms-excel -- -xltm -application/vnd.ms-excel.template.macroenabled.12 -- -xltx -application/vnd.openxmlformats-officedocument.spreadsheetml.template -- -xlw -application/vnd.ms-excel -- -xml -application/xml -- -xo -application/vnd.olpc-sugar -- -xop -application/xop+xml -- -xpi -application/x-xpinstall -- -xpm -image/x-xpixmap -- -xpr -application/vnd.is-xpr -- -xps -application/vnd.ms-xpsdocument -- -xpw -application/vnd.intercon.formnet -- -xpx -application/vnd.intercon.formnet -- -xsl -application/xml -- -xslt -application/xslt+xml -- -xsm -application/vnd.syncml+xml -- -xspf -application/xspf+xml -- -xul -application/vnd.mozilla.xul+xml -- -xvm -application/xv+xml -- -xvml -application/xv+xml -- -xwd -image/x-xwindowdump -- -xyz -chemical/x-xyz -- -yang -application/yang -- -yin -application/yin+xml -- -z -application/x-compress -- -Z -application/x-compress -- -zaz -application/vnd.zzazz.deck+xml -- -zip -application/zip -- -zir -application/vnd.zul -- -zirz -application/vnd.zul -- - - - - - - - - - - - - - - - -zmm -application/vnd.handheld-entertainment+xml -- - -index.html -index.htm -index.jsp -+ +``` + +##### **三、构建好项目结构** + + + +##### **四、编写 Blog 实体类、config 里的各种配置类** + + **Blog 实体类** + +```java +package com.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data // 自动生成 set,get,toString 方法 +@AllArgsConstructor // 自动生成 有参构造 方法 +@NoArgsConstructor // 自动生成 无参构造 方法 +public class Blog { + private int blogId; + private String blogTitle; + private String blogAuthor; + private String blogText; +} +``` + +**JdbcConfig 配置类** + +```java +package com.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component // 声明组件 +public class JdbcConfig { + @Bean // 创建一个Bean + public DataSource dataSource(){ + DruidDataSource druidDataSource = new DruidDataSource(); + druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + druidDataSource.setUrl("jdbc:mysql:///demo"); + druidDataSource.setUsername("root"); + druidDataSource.setPassword("123456"); + return druidDataSource; + } +} +``` + +**MybatisConfig 配置类** + +```java +package com.config; + +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component // 声明组件 +@MapperScan("com.mapper") // 扫包 +public class MyBatisConfig { + @Bean // 创建一个Bean + public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ + SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); + sqlSessionFactoryBean.setDataSource(dataSource); + return sqlSessionFactoryBean; + } +} +``` + +**SpringConfig 配置类** + +```java +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration // 声明为配置文件 +@ComponentScan("com.service") // 扫包 +@Import({JdbcConfig.class, MyBatisConfig.class}) // 导入类 +public class SpringConfig { +} +``` + +**SpringMvcConfig 配置类** + +```java +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration // 声明为配置文件 +@ComponentScan("com.controller") // 扫包 +@EnableWebMvc // MVC 核心注解 +public class SpringMvcConfig implements WebMvcConfigurer { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/**").addResourceLocations("/"); + } +} +``` + +**WebConfig 配置类** + +```java +package com.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class>[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + + @Override + protected Class>[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} +``` + +##### **五、编写 BlogMapper 接口、BlogService 接口、BlogServiceImpl 实现类** + +**BlogMapper 接口** + +```java +package com.mapper; + +import com.entity.Blog; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper // 声明为 Mapper 配置文件 +public interface BlogMapper { + // 查询所有博客信息 + @Select("select * from blog;") + List4.0.0 +com.jd +myBlog +war +1.0-SNAPSHOT ++ + +UTF-8 ++ + ++ + + +org.springframework +spring-webmvc +5.2.25.RELEASE ++ + + +org.springframework +spring-test +5.2.25.RELEASE ++ + +org.springframework +spring-jdbc +5.2.25.RELEASE ++ + +javax.servlet +javax.servlet-api +3.1.0 +provided ++ + + +com.fasterxml.jackson.core +jackson-databind +2.9.0 ++ + +org.projectlombok +lombok +1.18.36 ++ + + +org.mybatis +mybatis +3.5.16 ++ + +com.mysql +mysql-connector-j +8.3.0 ++ + + +junit +junit +4.13.2 +test ++ + + + +com.alibaba +druid +1.1.20 ++ +org.mybatis +mybatis-spring +2.0.6 ++ ++ ++ +org.apache.tomcat.maven +tomcat7-maven-plugin +2.2 ++ +/ +80 +utf-8 +selectAllBlogs(); + + // id 查询一个博客信息 + @Select("select * from blog where blogId = #{id};") + Blog selectOneBlogById(int id); + + // title 查询博客信息 + @Select("select * from blog where blogTitle like '%${title}%';") + List selectOneBlogByTitle(String title); + + // id 删除一个博客信息 + @Delete("delete from blog where blogId = #{id};") + int deleteOneBlog(int id); + + // 新增一个博客信息 + @Insert("insert into blog (blogTitle, blogAuthor, blogText) values (#{blogTitle},#{blogAuthor},#{blogText});") + int insertOneBlog(Blog blog); + + // 修改一个博客信息 + @Update("update blog set blogTitle= #{blogTitle},blogAuthor= #{blogAuthor}, blogText= #{blogText} where blogId = #{blogId};") + int updateOneBlog(Blog blog); +} +``` + +**BlogService 接口** + +```java +package com.service; + +import com.entity.Blog; + +import java.util.List; + +public interface BlogService { + // 查询所有博客信息 + List selectAllBlogs(); + + // id 查询一个博客信息 + Blog selectOneBlogById(int id); + + // title 查询博客信息 + List selectOneBlogByTitle(String title); + + // id 删除一个博客信息 + int deleteOneBlog(int id); + + // 新增一个博客信息 + int insertOneBlog(Blog blog); + + // 修改一个博客信息 + int updateOneBlog(Blog blog); +} +``` + +**BlogServiceImpl 实现类** + +```java +package com.service.impl; + +import com.entity.Blog; +import com.mapper.BlogMapper; +import com.service.BlogService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Data // 自动生成 set,get,toString 方法 +@Service // 声明为 Service 配置文件 +public class BlogServiceImpl implements BlogService { + @Autowired // 自动装配 + private BlogMapper blogMapper; // 注入接口 + + // 查询所有博客信息 + @Override + public List selectAllBlogs() { + return blogMapper.selectAllBlogs(); + } + + // id 查询一个博客信息 + @Override + public Blog selectOneBlogById(int id) { + return blogMapper.selectOneBlogById(id); + } + + // title 查询博客信息 + @Override + public List selectOneBlogByTitle(String title) { + return blogMapper.selectOneBlogByTitle(title); + } + + // id 删除一个博客信息 + @Override + public int deleteOneBlog(int id) { + return blogMapper.deleteOneBlog(id); + } + + // 新增一个博客信息 + @Override + public int insertOneBlog(Blog blog) { + return blogMapper.insertOneBlog(blog); + } + + // 修改一个博客信息 + @Override + public int updateOneBlog(Blog blog) { + return blogMapper.updateOneBlog(blog); + } +} +``` + +##### **六、编写 BlogController 类** + +**BlogController 类** + +```java +package com.controller; + +import com.entity.Blog; +import com.service.BlogService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Data // 自动生成 set,get,toString 方法 +@RestController // 声明为 RestController 配置文件 +@CrossOrigin // 跨域运行 +@RequestMapping("/blog") // 请求地址 + +public class BlogController { + @Autowired // 自动装配 + private BlogService blogService; // 注入接口 + + // 查询所有博客信息 + @GetMapping + public List selectAllBlogs() { + return blogService.selectAllBlogs(); + } + + // id 查询一个博客信息 + @GetMapping("/{id}") + public Blog selectOneBlogById(@PathVariable String id) { + return blogService.selectOneBlogById(Integer.parseInt(id)); + } + + // title 查询博客信息 + @GetMapping(params = "title") + public List selectOneBlogByTitle(String title) { + return blogService.selectOneBlogByTitle(title); + } + + // id 删除一个博客信息 + @DeleteMapping("/{id}") + public int deleteOneBlog(@PathVariable String id) { + return blogService.deleteOneBlog(Integer.parseInt(id)); + } + + // 新增一个博客信息 + @PostMapping + public int insertOneBlog(@RequestBody Blog blog) { + return blogService.insertOneBlog(blog); + } + + // 修改一个博客信息 + @PutMapping + public int updateOneBlog(@RequestBody Blog blog) { + return blogService.updateOneBlog(blog); + } +} +``` + +##### **七、启动Tomcat** + + + +##### **八、修改前端请求页面** + +**index.html** + +```html + + + + + + + 学生管理系统 + + + + ++ ++ + + +``` + +**styles.css** + +```css +body { + font-family: Arial, sans-serif; + background-color: #e0f7fa; /* 浅蓝色背景 */ + margin: 0; + padding: 20px; +} + +.container { + max-width: 800px; + margin: 0 auto; + background: #ffffff; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + padding: 20px; + box-shadow: 0 0 10px rgba(0, 123, 255, 0.1); /* 蓝色阴影 */ +} + +h1 { + text-align: center; + color: #007bff; /* 深蓝色标题 */ +} + +#search-box { + padding: 10px; + width: calc(100% - 120px); + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; + height: 18px; +} + +#add-book-btn { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色按钮 */ + color: white; + border: none; + height: 40px; + border-radius: 4px; + cursor: pointer; +} + +#add-book-btn:hover { + background-color: #0056b3; /* 深一些的蓝色按钮悬停效果 */ +} + +table { + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; +} + +th, td { + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + text-align: center; +} + +th { + background-color: #d1ecf1; /* 浅蓝色表头背景 */ +} +tr:hover { + background-color: #e0f7fa; /* 浅蓝色高亮背景,与页面背景相近但稍浅 */ +} +.modal { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.4); /* 蓝色半透明背景 */ +} + +.modal-content { + background-color: #fefefe; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + /* 注意:以下两行原本用于居中的代码是错误的,应该移除或更正 */ + transform: translate(60%, 40%); + /* margin应该用于.modal而不是.modal-content来实现居中 */ + padding: 35px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + width: 40%; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); /* 蓝色阴影 */ + /* 为了实现.modal-content的居中,您可能需要添加额外的CSS或使用JavaScript */ +} + +/* 注意:.close-btn的颜色已经在.modal-content之外定义,如果需要更改为蓝色调,可以如下修改 */ +.close-btn { + color: #007bff; /* 深蓝色关闭按钮 */ + float: right; + font-size: 28px; + font-weight: bold; + cursor: pointer; +} + +.close-btn:hover, +.close-btn:focus { + color: #0056b3; /* 深一些的蓝色关闭按钮悬停效果 */ + text-decoration: none; + cursor: pointer; +} + +form { + display: flex; + flex-direction: column; +} + +label { + margin-bottom: 8px; + color: #007bff; /* 深蓝色标签 */ +} + +input[type="text"], input[type="hidden"] { + margin-bottom: 15px; + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; +} + +button[type="submit"] { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色提交按钮 */ + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +button[type="submit"]:hover { + background-color: #0056b3; /* 深一些的蓝色提交按钮悬停效果 */ +} +``` + +**data.js** + +```javascript +// 私有变量 +const addBtn = document.querySelector('#add-btn'); +const modal = document.querySelector('.modal'); +const closeModalBtn = document.querySelector('#close-form-btn'); +const tbody = document.querySelector('tbody'); +const form = document.querySelector('#item-form'); +const searchBox = document.querySelector("#search-box"); +const formTitle = document.querySelector("#form-title"); + +// 表单选项 +//#######################改改改################################ +let studentId = document.querySelector("#studentId"); +let studentName = document.querySelector("#studentName"); +let classname = document.querySelector("#classname"); +let classTeacher = document.querySelector("#classTeacher"); +//############################################################# + + +let data = []; +// api接口设置 +// const API_BASE_URL = "http://localhost/book"; +const API_BASE_URL = "http://localhost/blog"; // #### 改改改 #### + +// 搜索功能 +function search(name) { + axios.get(API_BASE_URL + `?title=${name}`).then(res => { + data = res.data; + renderTable(data); + }); +} + +// 渲染表格数据 # 修改item.后面的属性名称 +function renderTable(data) { + if (data.length === 0) return alert("无内容"); + tbody.innerHTML = data.map(item => { + return `博客管理系统
++ + + + +++ +
++ + + + + +ID + +标题 + +作者 + +文本 +操作 +++ ++ `; + }).join(''); + + // 添加事件监听器(事件委托) + tbody.addEventListener('click', handleTableClick); +} + +// 更新,先回显要被修改的旧数据 +function update(id) { + axios.get(API_BASE_URL + `/${id}`).then(res => { + const data = res.data; + showOrCloseModal(); + form.reset(); + + // ########以下内容要修改########## + + // formTitle.innerText = '更新图书'; + formTitle.innerText = '更新博客'; + studentId.value = data.blogId; + studentName.value = data.blogTitle; + classname.value = data.blogAuthor; + classTeacher.value = data.blogText; + + // ######以上内容要修改##### + }); +} + + +// 处理表格点击事件 +function handleTableClick(e) { + if (e.target.classList.contains('delete-btn')) { + deleteItem(e.target.closest('tr').dataset.id); + } else if (e.target.classList.contains('update-btn')) { + update(e.target.closest('tr').dataset.id); + } +} + +// 开关浮层 +function showOrCloseModal(show = true) { + if (show) { + modal.style.display = 'block'; + } else { + modal.style.display = 'none'; + } + + studentId.value = null; // 重置当前编辑的图书ID + +} + +// 获取列表 +function fetch() { + axios.get(API_BASE_URL).then(res => { + console.log(res) + data = res.data; + renderTable(data); + }); + +} + +// 根据id删除 +function deleteItem(id) { + if (!confirm("真的要删除吗?")) return; + axios.delete(API_BASE_URL + `/${id}`).then(res => { + alert("删除成功!") + fetch(); + }); +} + + +// 点击保存按钮:添加或更新图书 +function save() { + + // 获取表单项的值######改改##### + + // 非空判断 + if (!studentName.value || !classname.value || !classTeacher.value) { + alert("所有字段都必须填写!"); + return; + } + // 表单项的值,封装成一个对象 + const item = { + blogId: studentId.value || null, // 如果为空,则视为添加新图书 + blogTitle: studentName.value, + blogAuthor: classname.value, + blogText: classTeacher.value + }; + + // 根据编号判断是添加还是更新 + if (studentId.value!='') { + axios.put(API_BASE_URL, item).then(res => { + alert("修改成功") + fetch(); + showOrCloseModal(false); + }) + } else { + axios.post(API_BASE_URL, item).then(res => { + console.log(item) + alert("添加成功") + fetch(); + showOrCloseModal(false); + }) + } + +} + + +// 初始化事件监听器 +function init() { + addBtn.addEventListener('click', () => { + form.reset(); + // formTitle.innerText = '添加图书'; + formTitle.innerText = '添加博客'; + showOrCloseModal(); + }); + + closeModalBtn.addEventListener('click', () => { + studentId.value = null; //### 初始化id + showOrCloseModal(false); + }); + + form.addEventListener('submit', (e) => { + e.preventDefault(); + save(); + }); + + searchBox.addEventListener('keyup', (e) => { + if (e.key === "Enter") { + search(searchBox.value); + searchBox.value = ''; + } + }); + + // 初始加载列表 + fetch(); +} + +// 执行初始化函数 +init(); +``` + +##### **九、浏览器 开始测试各个请求** + +**查询所有博客信息请求并渲染展示** + + + +**用 name 查询博客信息请求并渲染展示** + + + +**用 id 查询博客信息请求** + + + +**用 id 删除博客信息请求** + + + + + + + +**新增博客信息请求** + + + + + + + +**修改博客信息请求** + + + + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/.gitignore" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/.gitignore" new file mode 100644 index 0000000..35410ca --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/.gitignore" @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/compiler.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/compiler.xml" new file mode 100644 index 0000000..1a4bf9d --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/compiler.xml" @@ -0,0 +1,16 @@ + +${item.blogId} +${item.blogTitle} +${item.blogAuthor} +${item.blogText} ++ + + ++ \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/dataSources.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/dataSources.xml" new file mode 100644 index 0000000..35a8929 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/dataSources.xml" @@ -0,0 +1,12 @@ + ++ ++ ++ ++ + + + + ++ + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/encodings.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/encodings.xml" new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/encodings.xml" @@ -0,0 +1,7 @@ + ++ ++ +mysql.8 +true +com.mysql.cj.jdbc.Driver +jdbc:mysql://localhost:3306 +$ProjectFileDir$ ++ \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/jarRepositories.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/jarRepositories.xml" new file mode 100644 index 0000000..abb532a --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/jarRepositories.xml" @@ -0,0 +1,20 @@ + ++ ++ + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/misc.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/misc.xml" new file mode 100644 index 0000000..79a352f --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/misc.xml" @@ -0,0 +1,17 @@ + ++ ++ ++ + + + ++ + + + ++ + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/sqldialects.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/sqldialects.xml" new file mode 100644 index 0000000..56782ca --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/.idea/sqldialects.xml" @@ -0,0 +1,6 @@ + ++ + ++ + ++ ++
++ + + ++ \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/pom.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/pom.xml" new file mode 100644 index 0000000..b37d3ae --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/pom.xml" @@ -0,0 +1,103 @@ ++ ++ + diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/JdbcConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/JdbcConfig.java" new file mode 100644 index 0000000..d379cd1 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/JdbcConfig.java" @@ -0,0 +1,20 @@ +package com.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component // 声明组件 +public class JdbcConfig { + @Bean // 创建一个Bean + public DataSource dataSource(){ + DruidDataSource druidDataSource = new DruidDataSource(); + druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + druidDataSource.setUrl("jdbc:mysql:///demo"); + druidDataSource.setUsername("root"); + druidDataSource.setPassword("123456"); + return druidDataSource; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/MyBatisConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/MyBatisConfig.java" new file mode 100644 index 0000000..81472cf --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/MyBatisConfig.java" @@ -0,0 +1,19 @@ +package com.config; + +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component // 声明组件 +@MapperScan("com.mapper") // 扫包 +public class MyBatisConfig { + @Bean // 创建一个Bean + public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ + SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); + sqlSessionFactoryBean.setDataSource(dataSource); + return sqlSessionFactoryBean; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringConfig.java" new file mode 100644 index 0000000..3047958 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringConfig.java" @@ -0,0 +1,11 @@ +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration // 声明为配置文件 +@ComponentScan("com.service") // 扫包 +@Import({JdbcConfig.class, MyBatisConfig.class}) // 导入类 +public class SpringConfig { +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringMvcConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringMvcConfig.java" new file mode 100644 index 0000000..7c074af --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/SpringMvcConfig.java" @@ -0,0 +1,17 @@ +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration // 声明为配置文件 +@ComponentScan("com.controller") // 扫包 +@EnableWebMvc // MVC 核心注解 +public class SpringMvcConfig implements WebMvcConfigurer { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/**").addResourceLocations("/"); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/WebConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/WebConfig.java" new file mode 100644 index 0000000..8d00677 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/config/WebConfig.java" @@ -0,0 +1,20 @@ +package com.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class>[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + + @Override + protected Class>[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/controller/BlogController.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/controller/BlogController.java" new file mode 100644 index 0000000..ca9934d --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/controller/BlogController.java" @@ -0,0 +1,55 @@ +package com.controller; + +import com.entity.Blog; +import com.service.BlogService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Data // 自动生成 set,get,toString 方法 +@RestController // 声明为 RestController 配置文件 +@CrossOrigin // 跨域运行 +@RequestMapping("/blog") // 请求地址 + +public class BlogController { + @Autowired // 自动装配 + private BlogService blogService; // 注入接口 + + // 查询所有博客信息 + @GetMapping + public List4.0.0 +com.jd +myBlog +war +1.0-SNAPSHOT ++ + +UTF-8 ++ + ++ + + +org.springframework +spring-webmvc +5.2.25.RELEASE ++ + + +org.springframework +spring-test +5.2.25.RELEASE ++ + +org.springframework +spring-jdbc +5.2.25.RELEASE ++ + +javax.servlet +javax.servlet-api +3.1.0 +provided ++ + + +com.fasterxml.jackson.core +jackson-databind +2.9.0 ++ + +org.projectlombok +lombok +1.18.36 ++ + + +org.mybatis +mybatis +3.5.16 ++ + +com.mysql +mysql-connector-j +8.3.0 ++ + + +junit +junit +4.13.2 +test ++ + + + +com.alibaba +druid +1.1.20 ++ +org.mybatis +mybatis-spring +2.0.6 ++ ++ ++ +org.apache.tomcat.maven +tomcat7-maven-plugin +2.2 ++ +/ +80 +utf-8 +selectAllBlogs() { + return blogService.selectAllBlogs(); + } + + // id 查询一个博客信息 + @GetMapping("/{id}") + public Blog selectOneBlogById(@PathVariable String id) { + return blogService.selectOneBlogById(Integer.parseInt(id)); + } + + // title 查询博客信息 + @GetMapping(params = "title") + public List selectOneBlogByTitle(String title) { + return blogService.selectOneBlogByTitle(title); + } + + // id 删除一个博客信息 + @DeleteMapping("/{id}") + public int deleteOneBlog(@PathVariable String id) { + return blogService.deleteOneBlog(Integer.parseInt(id)); + } + + // 新增一个博客信息 + @PostMapping + public int insertOneBlog(@RequestBody Blog blog) { + return blogService.insertOneBlog(blog); + } + + // 修改一个博客信息 + @PutMapping + public int updateOneBlog(@RequestBody Blog blog) { + return blogService.updateOneBlog(blog); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/entity/Blog.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/entity/Blog.java" new file mode 100644 index 0000000..dcf5906 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/entity/Blog.java" @@ -0,0 +1,15 @@ +package com.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data // 自动生成 set,get,toString 方法 +@AllArgsConstructor // 自动生成 有参构造 方法 +@NoArgsConstructor // 自动生成 无参构造 方法 +public class Blog { + private int blogId; + private String blogTitle; + private String blogAuthor; + private String blogText; +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/mapper/BlogMapper.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/mapper/BlogMapper.java" new file mode 100644 index 0000000..7df0e32 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/mapper/BlogMapper.java" @@ -0,0 +1,33 @@ +package com.mapper; + +import com.entity.Blog; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper // 声明为 Mapper 配置文件 +public interface BlogMapper { + // 查询所有博客信息 + @Select("select * from blog;") + List selectAllBlogs(); + + // id 查询一个博客信息 + @Select("select * from blog where blogId = #{id};") + Blog selectOneBlogById(int id); + + // title 查询博客信息 + @Select("select * from blog where blogTitle like '%${title}%';") + List selectOneBlogByTitle(String title); + + // id 删除一个博客信息 + @Delete("delete from blog where blogId = #{id};") + int deleteOneBlog(int id); + + // 新增一个博客信息 + @Insert("insert into blog (blogTitle, blogAuthor, blogText) values (#{blogTitle},#{blogAuthor},#{blogText});") + int insertOneBlog(Blog blog); + + // 修改一个博客信息 + @Update("update blog set blogTitle= #{blogTitle},blogAuthor= #{blogAuthor}, blogText= #{blogText} where blogId = #{blogId};") + int updateOneBlog(Blog blog); +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/BlogService.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/BlogService.java" new file mode 100644 index 0000000..28e72ec --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/BlogService.java" @@ -0,0 +1,25 @@ +package com.service; + +import com.entity.Blog; + +import java.util.List; + +public interface BlogService { + // 查询所有博客信息 + List selectAllBlogs(); + + // id 查询一个博客信息 + Blog selectOneBlogById(int id); + + // title 查询博客信息 + List selectOneBlogByTitle(String title); + + // id 删除一个博客信息 + int deleteOneBlog(int id); + + // 新增一个博客信息 + int insertOneBlog(Blog blog); + + // 修改一个博客信息 + int updateOneBlog(Blog blog); +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/impl/BlogServiceImpl.java" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/impl/BlogServiceImpl.java" new file mode 100644 index 0000000..9d140f7 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/java/com/service/impl/BlogServiceImpl.java" @@ -0,0 +1,53 @@ +package com.service.impl; + +import com.entity.Blog; +import com.mapper.BlogMapper; +import com.service.BlogService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Data // 自动生成 set,get,toString 方法 +@Service // 声明为 Service 配置文件 +public class BlogServiceImpl implements BlogService { + @Autowired // 自动装配 + private BlogMapper blogMapper; // 注入接口 + + // 查询所有博客信息 + @Override + public List selectAllBlogs() { + return blogMapper.selectAllBlogs(); + } + + // id 查询一个博客信息 + @Override + public Blog selectOneBlogById(int id) { + return blogMapper.selectOneBlogById(id); + } + + // title 查询博客信息 + @Override + public List selectOneBlogByTitle(String title) { + return blogMapper.selectOneBlogByTitle(title); + } + + // id 删除一个博客信息 + @Override + public int deleteOneBlog(int id) { + return blogMapper.deleteOneBlog(id); + } + + // 新增一个博客信息 + @Override + public int insertOneBlog(Blog blog) { + return blogMapper.insertOneBlog(blog); + } + + // 修改一个博客信息 + @Override + public int updateOneBlog(Blog blog) { + return blogMapper.updateOneBlog(blog); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/css/styles.css" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/css/styles.css" new file mode 100644 index 0000000..fb397cd --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/css/styles.css" @@ -0,0 +1,128 @@ +body { + font-family: Arial, sans-serif; + background-color: #e0f7fa; /* 浅蓝色背景 */ + margin: 0; + padding: 20px; +} + +.container { + max-width: 800px; + margin: 0 auto; + background: #ffffff; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + padding: 20px; + box-shadow: 0 0 10px rgba(0, 123, 255, 0.1); /* 蓝色阴影 */ +} + +h1 { + text-align: center; + color: #007bff; /* 深蓝色标题 */ +} + +#search-box { + padding: 10px; + width: calc(100% - 120px); + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; + height: 18px; +} + +#add-book-btn { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色按钮 */ + color: white; + border: none; + height: 40px; + border-radius: 4px; + cursor: pointer; +} + +#add-book-btn:hover { + background-color: #0056b3; /* 深一些的蓝色按钮悬停效果 */ +} + +table { + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; +} + +th, td { + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + text-align: center; +} + +th { + background-color: #d1ecf1; /* 浅蓝色表头背景 */ +} +tr:hover { + background-color: #e0f7fa; /* 浅蓝色高亮背景,与页面背景相近但稍浅 */ +} +.modal { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.4); /* 蓝色半透明背景 */ +} + +.modal-content { + background-color: #fefefe; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + /* 注意:以下两行原本用于居中的代码是错误的,应该移除或更正 */ + transform: translate(60%, 40%); + /* margin应该用于.modal而不是.modal-content来实现居中 */ + padding: 35px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + width: 40%; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); /* 蓝色阴影 */ + /* 为了实现.modal-content的居中,您可能需要添加额外的CSS或使用JavaScript */ +} + +/* 注意:.close-btn的颜色已经在.modal-content之外定义,如果需要更改为蓝色调,可以如下修改 */ +.close-btn { + color: #007bff; /* 深蓝色关闭按钮 */ + float: right; + font-size: 28px; + font-weight: bold; + cursor: pointer; +} + +.close-btn:hover, +.close-btn:focus { + color: #0056b3; /* 深一些的蓝色关闭按钮悬停效果 */ + text-decoration: none; + cursor: pointer; +} + +form { + display: flex; + flex-direction: column; +} + +label { + margin-bottom: 8px; + color: #007bff; /* 深蓝色标签 */ +} + +input[type="text"], input[type="hidden"] { + margin-bottom: 15px; + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; +} + +button[type="submit"] { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色提交按钮 */ + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +button[type="submit"]:hover { + background-color: #0056b3; /* 深一些的蓝色提交按钮悬停效果 */ +} \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/index.html" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/index.html" new file mode 100644 index 0000000..953d54d --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/index.html" @@ -0,0 +1,62 @@ + + + + + + + 学生管理系统 + + + + ++ ++ + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/axios.min.js" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/axios.min.js" new file mode 100644 index 0000000..0ac6c50 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/axios.min.js" @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e){var r,n;function o(r,n){try{var a=e[r](n),u=a.value,s=u instanceof t;Promise.resolve(s?u.v:u).then((function(t){if(s){var n="return"===r?"return":"next";if(!u.k||t.done)return o(n,t);t=e[n](t).value}i(a.done?"return":"normal",t)}),(function(e){o("throw",e)}))}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?o(r.key,r.arg):n=null}this._invoke=function(e,t){return new Promise((function(i,a){var u={key:e,arg:t,resolve:i,reject:a,next:null};n?n=n.next=u:(r=n=u,o(e,t))}))},"function"!=typeof e.return&&(this.return=void 0)}function t(e,t){this.v=e,this.k=t}function r(e){var r={},n=!1;function o(r,o){return n=!0,o=new Promise((function(t){t(e[r](o))})),{done:!1,value:new t(o,1)}}return r["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},r.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(r.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(r.return=function(e){return n?(n=!1,e):o("return",e)}),r}function n(e){var t,r,n,i=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);i--;){if(r&&null!=(t=e[r]))return t.call(e);if(n&&null!=(t=e[n]))return new o(t.call(e));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return o=function(e){this.s=e,this.n=e.next},o.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new o(e)}function i(e){return new t(e,0)}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t博客管理系统
++ + + + +++ +
++ + + + + +ID + +标题 + +作者 + +文本 +操作 +++ +=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(s&&c){if(this.prev =0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev =0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function l(t){return function(){return new e(t.apply(this,arguments))}}function p(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){p(i,n,o,a,u,"next",e)}function u(e){p(i,n,o,a,u,"throw",e)}a(void 0)}))}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var r=0;r e.length)&&(t=e.length);for(var r=0,n=new Array(t);r 2&&void 0!==arguments[2]?arguments[2]:{},i=o.allOwnKeys,a=void 0!==i&&i;if(null!=e)if("object"!==f(e)&&(e=[e]),N(e))for(r=0,n=e.length;r 0;)if(t===(r=n[o]).toLowerCase())return r;return null}var Q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Z=function(e){return!_(e)&&e!==Q};var ee,te=(ee="undefined"!=typeof Uint8Array&&j(Uint8Array),function(e){return ee&&e instanceof ee}),re=P("HTMLFormElement"),ne=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),oe=P("RegExp"),ie=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};$(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},ae="abcdefghijklmnopqrstuvwxyz",ue="0123456789",se={DIGIT:ue,ALPHA:ae,ALPHA_DIGIT:ae+ae.toUpperCase()+ue};var ce,fe,le,pe,he=P("AsyncFunction"),de=(ce="function"==typeof setImmediate,fe=U(Q.postMessage),ce?setImmediate:fe?(le="axios@".concat(Math.random()),pe=[],Q.addEventListener("message",(function(e){var t=e.source,r=e.data;t===Q&&r===le&&pe.length&&pe.shift()()}),!1),function(e){pe.push(e),Q.postMessage(le,"*")}):function(e){return setTimeout(e)}),ve="undefined"!=typeof queueMicrotask?queueMicrotask.bind(Q):"undefined"!=typeof process&&process.nextTick||de,ye={isArray:N,isArrayBuffer:C,isBuffer:function(e){return null!==e&&!_(e)&&null!==e.constructor&&!_(e.constructor)&&U(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||U(e.append)&&("formdata"===(t=A(e))||"object"===t&&U(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&C(e.buffer)},isString:F,isNumber:B,isBoolean:function(e){return!0===e||!1===e},isObject:D,isPlainObject:I,isReadableStream:G,isRequest:K,isResponse:V,isHeaders:X,isUndefined:_,isDate:q,isFile:M,isBlob:z,isRegExp:oe,isFunction:U,isStream:function(e){return D(e)&&U(e.pipe)},isURLSearchParams:J,isTypedArray:te,isFileList:H,forEach:$,merge:function e(){for(var t=Z(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&Y(n,o)||o;I(n[i])&&I(t)?n[i]=e(n[i],t):I(t)?n[i]=e({},t):N(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return $(t,(function(t,n){r&&U(t)?e[n]=R(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,u={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||u[a]||(t[a]=e[a],u[a]=!0);e=!1!==r&&j(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:A,kindOfTest:P,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(N(e))return e;var t=e.length;if(!B(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:re,hasOwnProperty:ne,hasOwnProp:ne,reduceDescriptors:ie,freezeMethods:function(e){ie(e,(function(t,r){if(U(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];U(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return N(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:Y,global:Q,isContextDefined:Z,ALPHABET:se,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:se.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&U(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(D(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=N(r)?[]:{};return $(r,(function(t,r){var i=e(t,n+1);!_(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:he,isThenable:function(e){return e&&(D(e)||U(e))&&U(e.then)&&U(e.catch)},setImmediate:de,asap:ve};function me(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status?o.status:null)}ye.inherits(me,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ye.toJSONObject(this.config),code:this.code,status:this.status}}});var be=me.prototype,ge={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){ge[e]={value:e}})),Object.defineProperties(me,ge),Object.defineProperty(be,"isAxiosError",{value:!0}),me.from=function(e,t,r,n,o,i){var a=Object.create(be);return ye.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),me.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function we(e){return ye.isPlainObject(e)||ye.isArray(e)}function Ee(e){return ye.endsWith(e,"[]")?e.slice(0,-2):e}function Oe(e,t,r){return e?e.concat(t).map((function(e,t){return e=Ee(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var Se=ye.toFlatObject(ye,{},null,(function(e){return/^is[A-Z]/.test(e)}));function xe(e,t,r){if(!ye.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=ye.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!ye.isUndefined(t[e])}))).metaTokens,o=r.visitor||c,i=r.dots,a=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&ye.isSpecCompliantForm(t);if(!ye.isFunction(o))throw new TypeError("visitor must be a function");function s(e){if(null===e)return"";if(ye.isDate(e))return e.toISOString();if(!u&&ye.isBlob(e))throw new me("Blob is not supported. Use a Buffer instead.");return ye.isArrayBuffer(e)||ye.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,r,o){var u=e;if(e&&!o&&"object"===f(e))if(ye.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(ye.isArray(e)&&function(e){return ye.isArray(e)&&!e.some(we)}(e)||(ye.isFileList(e)||ye.endsWith(r,"[]"))&&(u=ye.toArray(e)))return r=Ee(r),u.forEach((function(e,n){!ye.isUndefined(e)&&null!==e&&t.append(!0===a?Oe([r],n,i):null===a?r:r+"[]",s(e))})),!1;return!!we(e)||(t.append(Oe(o,r,i),s(e)),!1)}var l=[],p=Object.assign(Se,{defaultVisitor:c,convertValue:s,isVisitable:we});if(!ye.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!ye.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),ye.forEach(r,(function(r,i){!0===(!(ye.isUndefined(r)||null===r)&&o.call(t,r,ye.isString(i)?i.trim():i,n,p))&&e(r,n?n.concat(i):[i])})),l.pop()}}(e),t}function Re(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Te(e,t){this._pairs=[],e&&xe(e,this,t)}var ke=Te.prototype;function je(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ae(e,t,r){if(!t)return e;var n=r&&r.encode||je;ye.isFunction(r)&&(r={serialize:r});var o,i=r&&r.serialize;if(o=i?i(t,r):ye.isURLSearchParams(t)?t.toString():new Te(t,r).toString(n)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}ke.append=function(e,t){this._pairs.push([e,t])},ke.toString=function(e){var t=e?function(t){return e.call(this,t,Re)}:Re;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Pe=function(){function e(){d(this,e),this.handlers=[]}return y(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){ye.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),Le={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Ne={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Te,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},_e="undefined"!=typeof window&&"undefined"!=typeof document,Ce="object"===("undefined"==typeof navigator?"undefined":f(navigator))&&navigator||void 0,Fe=_e&&(!Ce||["ReactNative","NativeScript","NS"].indexOf(Ce.product)<0),Ue="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Be=_e&&window.location.href||"http://localhost",De=u(u({},Object.freeze({__proto__:null,hasBrowserEnv:_e,hasStandardBrowserWebWorkerEnv:Ue,hasStandardBrowserEnv:Fe,navigator:Ce,origin:Be})),Ne);function Ie(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),u=o>=e.length;return i=!i&&ye.isArray(n)?n.length:i,u?(ye.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&ye.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&ye.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=ye.isObject(e);if(i&&ye.isHTMLForm(e)&&(e=new FormData(e)),ye.isFormData(e))return o?JSON.stringify(Ie(e)):e;if(ye.isArrayBuffer(e)||ye.isBuffer(e)||ye.isStream(e)||ye.isFile(e)||ye.isBlob(e)||ye.isReadableStream(e))return e;if(ye.isArrayBufferView(e))return e.buffer;if(ye.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return xe(e,new De.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return De.isNode&&ye.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=ye.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return xe(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(ye.isString(e))try{return(t||JSON.parse)(e),ye.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||qe.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(ye.isResponse(e)||ye.isReadableStream(e))return e;if(e&&ye.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw me.from(e,me.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:De.classes.FormData,Blob:De.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ye.forEach(["delete","get","head","post","put","patch"],(function(e){qe.headers[e]={}}));var Me=qe,ze=ye.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),He=Symbol("internals");function Je(e){return e&&String(e).trim().toLowerCase()}function We(e){return!1===e||null==e?e:ye.isArray(e)?e.map(We):String(e)}function Ge(e,t,r,n,o){return ye.isFunction(n)?n.call(this,t,r):(o&&(t=r),ye.isString(t)?ye.isString(n)?-1!==t.indexOf(n):ye.isRegExp(n)?n.test(t):void 0:void 0)}var Ke=function(e,t){function r(e){d(this,r),e&&this.set(e)}return y(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=Je(t);if(!o)throw new Error("header name must be a non-empty string");var i=ye.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=We(e))}var i=function(e,t){return ye.forEach(e,(function(e,r){return o(e,r,t)}))};if(ye.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(ye.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,r,n,o={};return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&ze[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)})),o}(e),t);else if(ye.isHeaders(e)){var a,u=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=O(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(e.entries());try{for(u.s();!(a=u.n()).done;){var s=b(a.value,2),c=s[0];o(s[1],c,r)}}catch(e){u.e(e)}finally{u.f()}}else null!=e&&o(t,e,r);return this}},{key:"get",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(ye.isFunction(t))return t.call(this,n,r);if(ye.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ge(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=Je(e)){var o=ye.findKey(r,e);!o||t&&!Ge(0,r[o],o,t)||(delete r[o],n=!0)}}return ye.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ge(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return ye.forEach(this,(function(n,o){var i=ye.findKey(r,o);if(i)return t[i]=We(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=We(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n 1?r-1:0),o=1;o 1&&void 0!==arguments[1]?arguments[1]:Date.now();o=i,r=null,n&&(clearTimeout(n),n=null),e.apply(null,t)};return[function(){for(var e=Date.now(),t=e-o,u=arguments.length,s=new Array(u),c=0;c=i?a(s,e):(r=s,n||(n=setTimeout((function(){n=null,a(r)}),i-t)))},function(){return r&&a(r)}]}ye.inherits(Ye,me,{__CANCEL__:!0});var tt=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,n=0,o=Ze(50,250);return et((function(r){var i=r.loaded,a=r.lengthComputable?r.total:void 0,u=i-n,s=o(u);n=i;var c=m({loaded:i,total:a,progress:a?i/a:void 0,bytes:u,rate:s||void 0,estimated:s&&a&&i<=a?(a-i)/s:void 0,event:r,lengthComputable:null!=a},t?"download":"upload",!0);e(c)}),r)},rt=function(e,t){var r=null!=e;return[function(n){return t[0]({lengthComputable:r,total:e,loaded:n})},t[1]]},nt=function(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n 1?t-1:0),n=1;n 1?"since :\n"+u.map(At).join("\n"):" "+At(u[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Nt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ye(null,e)}function _t(e){return Nt(e),e.headers=Ve.from(e.headers),e.data=Xe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Lt(e.adapter||Me.adapter)(e).then((function(t){return Nt(e),t.data=Xe.call(e,e.transformResponse,t),t.headers=Ve.from(t.headers),t}),(function(t){return $e(t)||(Nt(e),t&&t.response&&(t.response.data=Xe.call(e,e.transformResponse,t.response),t.response.headers=Ve.from(t.response.headers))),Promise.reject(t)}))}var Ct="1.7.9",Ft={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Ft[e]=function(r){return f(r)===e||"a"+(t<1?"n ":" ")+e}}));var Ut={};Ft.transitional=function(e,t,r){function n(e,t){return"[Axios v1.7.9] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new me(n(o," has been removed"+(t?" in "+t:"")),me.ERR_DEPRECATED);return t&&!Ut[o]&&(Ut[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}},Ft.spelling=function(e){return function(t,r){return console.warn("".concat(r," is likely a misspelling of ").concat(e)),!0}};var Bt={assertOptions:function(e,t,r){if("object"!==f(e))throw new me("options must be an object",me.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),o=n.length;o-- >0;){var i=n[o],a=t[i];if(a){var u=e[i],s=void 0===u||a(u,i,e);if(!0!==s)throw new me("option "+i+" must be "+s,me.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new me("Unknown option "+i,me.ERR_BAD_OPTION)}},validators:Ft},Dt=Bt.validators,It=function(){function e(t){d(this,e),this.defaults=t,this.interceptors={request:new Pe,response:new Pe}}var t;return y(e,[{key:"request",value:(t=h(s().mark((function e(t,r){var n,o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,r);case 3:return e.abrupt("return",e.sent);case 6:if(e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error){n={},Error.captureStackTrace?Error.captureStackTrace(n):n=new Error,o=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.t0.stack?o&&!String(e.t0.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+o):e.t0.stack=o}catch(e){}}throw e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,r){return t.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=st(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&Bt.assertOptions(n,{silentJSONParsing:Dt.transitional(Dt.boolean),forcedJSONParsing:Dt.transitional(Dt.boolean),clarifyTimeoutError:Dt.transitional(Dt.boolean)},!1),null!=o&&(ye.isFunction(o)?t.paramsSerializer={serialize:o}:Bt.assertOptions(o,{encode:Dt.function,serialize:Dt.function},!0)),Bt.assertOptions(t,{baseUrl:Dt.spelling("baseURL"),withXsrfToken:Dt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&ye.merge(i.common,i[t.method]);i&&ye.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=Ve.concat(a,i);var u=[],s=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,u.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,p=0;if(!s){var h=[_t.bind(this),void 0];for(h.unshift.apply(h,u),h.push.apply(h,f),l=h.length,c=Promise.resolve(t);p 0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Ye(e,t,o),r(n.reason))}))}return y(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}},{key:"toAbortSignal",value:function(){var e=this,t=new AbortController,r=function(e){t.abort(e)};return this.subscribe(r),t.signal.unsubscribe=function(){return e.unsubscribe(r)},t.signal}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}(),zt=Mt;var Ht={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ht).forEach((function(e){var t=b(e,2),r=t[0],n=t[1];Ht[n]=r}));var Jt=Ht;var Wt=function e(t){var r=new qt(t),n=R(qt.prototype.request,r);return ye.extend(n,qt.prototype,r,{allOwnKeys:!0}),ye.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(st(t,r))},n}(Me);return Wt.Axios=qt,Wt.CanceledError=Ye,Wt.CancelToken=zt,Wt.isCancel=$e,Wt.VERSION=Ct,Wt.toFormData=xe,Wt.AxiosError=me,Wt.Cancel=Wt.CanceledError,Wt.all=function(e){return Promise.all(e)},Wt.spread=function(e){return function(t){return e.apply(null,t)}},Wt.isAxiosError=function(e){return ye.isObject(e)&&!0===e.isAxiosError},Wt.mergeConfig=st,Wt.AxiosHeaders=Ve,Wt.formToJSON=function(e){return Ie(ye.isHTMLForm(e)?new FormData(e):e)},Wt.getAdapter=Lt,Wt.HttpStatusCode=Jt,Wt.default=Wt,Wt})); +//# sourceMappingURL=axios.min.js.map diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/book.js" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/book.js" new file mode 100644 index 0000000..8661841 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/book.js" @@ -0,0 +1,188 @@ +(function () { + // 私有变量 + const addBtn = document.querySelector('#add-book-btn'); + const modal = document.querySelector('.modal'); + const closeModalBtn = document.querySelector('#close-form-btn'); + const tbody = document.querySelector('tbody'); + const form = document.querySelector('#book-form'); + const searchBox = document.querySelector("#search-box"); + const formTitle = document.querySelector("#form-title"); + + // 表单选项 + let itemId = document.querySelector("#book-id"); + let itemName = document.querySelector("#book-name"); + let itemAuthor = document.querySelector("#author"); + let itemPublisher = document.querySelector("#publisher"); + + + + let data = []; + // api接口设置 + const API_BASE_URL = "http://localhost/book"; + + // 搜索图书# 修改bookName + function searchBooks(query) { + axios.get(API_BASE_URL + `?bookName=${query}`).then(res => { + if (res.data.code === 500) { + alert(`${res.data.msg}`); + return; + } + data = res.data.data; + renderTable(data); + }); + } + + // 渲染表格数据 # 修改item.后面的属性名称 + function renderTable(data) { + if (data.length === 0) return alert("无内容"); + tbody.innerHTML = data.map(item => { + return ` + `; + }).join(''); + + // 添加事件监听器(事件委托) + tbody.addEventListener('click', handleTableClick); + } + + // 更新图书时,先回显要被修改的旧数据 + function updateBook(id) { + axios.get(API_BASE_URL + `/${id}`).then(res => { + const data = res.data.data; + showOrCloseModal(); + form.reset(); + // ########以下内容要修改########## + + formTitle.innerText = '更新图书'; + itemId.value = data.bookId; + itemName.value = data.bookName; + itemAuthor.value = data.bookAuthor; + itemPublisher.value = data.bookPublisher; + + // ######以上内容要修改##### + }); + } + + + // 处理表格点击事件 + function handleTableClick(e) { + if (e.target.classList.contains('delete-btn')) { + deleteBook(e.target.closest('tr').dataset.id); + } else if (e.target.classList.contains('update-btn')) { + updateBook(e.target.closest('tr').dataset.id); + } + } + + // 开关浮层 + function showOrCloseModal(show = true) { + if (show) { + modal.style.display = 'block'; + } else { + modal.style.display = 'none'; + } + + document.querySelector("#book-id").value = null; // 重置当前编辑的图书ID + } + + // 获取列表 + function fetchBooks() { + axios.get(API_BASE_URL).then(res => { + data = res.data.data; + renderTable(data); + }); + + } + + // 根据id删除 + function deleteBook(id) { + if (!confirm("真的要删除吗?")) return; + axios.delete(API_BASE_URL + `/${id}`).then(res => { + if (res.data.code === 500) return alert(res.data.msg) + alert(res.data.data); + fetchBooks(); + }); + } + + + + // 点击保存按钮:添加或更新图书 + function saveBook() { + // 获取表单项的值 + let bookId = itemId.value; + const bookName = itemName.value; + const bookAuthor = itemAuthor.value; + const bookPublisher = itemPublisher.value; + + // 非空判断 + if (!bookName || !bookAuthor || !bookPublisher) { + alert("所有字段都必须填写!"); + return; + } + + // 表单项的值,封装成一个对象 + const book = { + bookId: bookId || null, // 如果为空,则视为添加新图书 + bookName: bookName, + bookAuthor: bookAuthor, + bookPublisher: bookPublisher + }; + + // 根据编号判断是添加还是更新 + if (bookId) { + axios.put(API_BASE_URL, book).then(res => { + res.data.code === 200 ? alert(res.data.data) : alert(res.data.msg); + fetchBooks(); + showOrCloseModal(false); + }) + } else { + axios.post(API_BASE_URL, book).then(res => { + res.data.code === 200 ? alert(res.data.data) : alert(res.data.msg); + fetchBooks(); + showOrCloseModal(false); + }) + } + + } + + + + // 初始化事件监听器 + function init() { + addBtn.addEventListener('click', () => { + form.reset(); + formTitle.innerText = '添加图书'; + bookId = null; + showOrCloseModal(); + }); + + closeModalBtn.addEventListener('click', () => { + bookId = null; // 重置当前编辑的图书ID + showOrCloseModal(false); + }); + + form.addEventListener('submit', (e) => { + e.preventDefault(); + saveBook(); + }); + + searchBox.addEventListener('keyup', (e) => { + if (e.key === "Enter") { + searchBooks(searchBox.value); + searchBox.value = ''; + } + }); + + // 初始加载图书列表 + fetchBooks(); + } + + // 执行初始化函数 + init(); +})(); \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/data.js" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/data.js" new file mode 100644 index 0000000..915bee6 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/src/main/webapp/js/data.js" @@ -0,0 +1,182 @@ +// 私有变量 +const addBtn = document.querySelector('#add-btn'); +const modal = document.querySelector('.modal'); +const closeModalBtn = document.querySelector('#close-form-btn'); +const tbody = document.querySelector('tbody'); +const form = document.querySelector('#item-form'); +const searchBox = document.querySelector("#search-box"); +const formTitle = document.querySelector("#form-title"); + +// 表单选项 +//#######################改改改################################ +let studentId = document.querySelector("#studentId"); +let studentName = document.querySelector("#studentName"); +let classname = document.querySelector("#classname"); +let classTeacher = document.querySelector("#classTeacher"); +//############################################################# + + +let data = []; +// api接口设置 +// const API_BASE_URL = "http://localhost/book"; +const API_BASE_URL = "http://localhost/blog"; // #### 改改改 #### + +// 搜索功能 +function search(name) { + axios.get(API_BASE_URL + `?title=${name}`).then(res => { + data = res.data; + renderTable(data); + }); +} + +// 渲染表格数据 # 修改item.后面的属性名称 +function renderTable(data) { + if (data.length === 0) return alert("无内容"); + tbody.innerHTML = data.map(item => { + return `${item.bookId} +${item.bookName} +${item.bookAuthor} +${item.bookPublisher} ++ + + ++ `; + }).join(''); + + // 添加事件监听器(事件委托) + tbody.addEventListener('click', handleTableClick); +} + +// 更新,先回显要被修改的旧数据 +function update(id) { + axios.get(API_BASE_URL + `/${id}`).then(res => { + const data = res.data; + showOrCloseModal(); + form.reset(); + + // ########以下内容要修改########## + + // formTitle.innerText = '更新图书'; + formTitle.innerText = '更新博客'; + studentId.value = data.blogId; + studentName.value = data.blogTitle; + classname.value = data.blogAuthor; + classTeacher.value = data.blogText; + + // ######以上内容要修改##### + }); +} + + +// 处理表格点击事件 +function handleTableClick(e) { + if (e.target.classList.contains('delete-btn')) { + deleteItem(e.target.closest('tr').dataset.id); + } else if (e.target.classList.contains('update-btn')) { + update(e.target.closest('tr').dataset.id); + } +} + +// 开关浮层 +function showOrCloseModal(show = true) { + if (show) { + modal.style.display = 'block'; + } else { + modal.style.display = 'none'; + } + + studentId.value = null; // 重置当前编辑的图书ID + +} + +// 获取列表 +function fetch() { + axios.get(API_BASE_URL).then(res => { + console.log(res) + data = res.data; + renderTable(data); + }); + +} + +// 根据id删除 +function deleteItem(id) { + if (!confirm("真的要删除吗?")) return; + axios.delete(API_BASE_URL + `/${id}`).then(res => { + alert("删除成功!") + fetch(); + }); +} + + +// 点击保存按钮:添加或更新图书 +function save() { + + // 获取表单项的值######改改##### + + // 非空判断 + if (!studentName.value || !classname.value || !classTeacher.value) { + alert("所有字段都必须填写!"); + return; + } + // 表单项的值,封装成一个对象 + const item = { + blogId: studentId.value || null, // 如果为空,则视为添加新图书 + blogTitle: studentName.value, + blogAuthor: classname.value, + blogText: classTeacher.value + }; + + // 根据编号判断是添加还是更新 + if (studentId.value!='') { + axios.put(API_BASE_URL, item).then(res => { + alert("修改成功") + fetch(); + showOrCloseModal(false); + }) + } else { + axios.post(API_BASE_URL, item).then(res => { + console.log(item) + alert("添加成功") + fetch(); + showOrCloseModal(false); + }) + } + +} + + +// 初始化事件监听器 +function init() { + addBtn.addEventListener('click', () => { + form.reset(); + // formTitle.innerText = '添加图书'; + formTitle.innerText = '添加博客'; + showOrCloseModal(); + }); + + closeModalBtn.addEventListener('click', () => { + studentId.value = null; //### 初始化id + showOrCloseModal(false); + }); + + form.addEventListener('submit', (e) => { + e.preventDefault(); + save(); + }); + + searchBox.addEventListener('keyup', (e) => { + if (e.key === "Enter") { + search(searchBox.value); + searchBox.value = ''; + } + }); + + // 初始加载列表 + fetch(); +} + +// 执行初始化函数 +init(); diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/JdbcConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/JdbcConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..38f06e9361e3d7f2cea798f07c5af6ec242d1e6f GIT binary patch literal 890 zcmah{T~8B16g^W)yOwIPqI~!Ts930UqM{FAOti!Y)1VP0@o~C4)Tz5Wb#{vIuk@uP zn)n0!QO0|>1Y$zsKFs|(_uMmg_V=G3zW{7NR&Wuw%D7!Y0k;AyvRw+W%=S)zyKL_T zSYdm=j7Ax&0;OjrHU7E4L}PVNpxCyN7N~Vhs&|G-SG)JB8&js${item.blogId} +${item.blogTitle} +${item.blogAuthor} +${item.blogText} ++ + + +f5%*%3ME%p72q~`f|!_=EZ@0rYywijt?z4FGUByGK8T~B5MXVTujQ;Gg+ z-Dj5S^`V#Q6e?e8m9pTm*jI+{Tsyl kr11;M&8Q4^(eyfU0s0pm_ zYW{x>+71C*$q}ul74} BLs?fGb63t*>I8{nEon zk2jt?t)j)z)pOrPV480uW0m&gn{Ho+p6D~}$Mf2;%Ca3=74 3EamYQkD5tdM;|B=4}1n+{*X^JFSL3VQO7~*?gzD#E+PgYPTzd8os z3T7xG8MsCy+}tNyAiMk%g^$OW=rrra5hk1U(g@{dJs9CavtAits`-sj1u*jhaf74; rB!Xqk5Yqxx7HJkwV{T$RnHErO7IQRpp0ccJfouWS^Yg}O_9pNbDQeP5 literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/MyBatisConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/MyBatisConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..df19704766d61b86809b866f4e1df696b6cf1e8a GIT binary patch literal 889 zcmb7C%Wl&^6g`t?F=^5kTAG$e%PM`)*{~}@B0*g_AQ6a!SWVn%m}1Yk_M|j_1sf`X z#0T(Eh&$s_9!e$f;$Gi-e9xRS*WbQ>{tDnB?gyx0y^h-fN?3Q{P91maxW`a?q_nb+ z8OoilAw#8S4kbe?R9ZfpBqN!<6r-3rOQDHGJQSI7^+mH{->RHpEsRXUBcqShnD?h$ zVO8Gq)jq>=ei9F4o-3mdL}X1i?Mk5;x}ES?oQg9}IDaav7??>G$^EU+WMiI8M~;Q( zX{Pj;4`y)?d2o0+$gnb-kYW3ODBCY4+NwkjRj$bC6RnLUDMpjg2cD?Vbd-rizBk!B zXWYs&%f;oV+*x$;3Qq^h-{2oNv**nJl=e4cZe=Eoou-oaOp+QcwI#ZlK7Kp3FVa+I zgUFv $AVV$d~_@$%P^ly`)i#H z?W^`Y#3rirU%ICR=Co0~Mir;bC|9@7!9IF8pjh+G2Cmb4qxgXGJXH)$w1~tFzoJ~G z-1>sj>vNR*yE~sy+5JGR5*$slfa$aa8ea5t8yCHTj)n GbpK{R6-OwhBmNBah8I>I}JKZL~jONbl}-88R)~R}AI0HtISG zddl62-k2h_wv}Ss6;8)^7R>ku9WrdUr46{WW}t_>GjZAsTM0N~D0FP(q&nBJNOdvU z9EqtQ@@-_i4pdi%nv_qCv0iv>4GAB%tsC+%Q5-lCs3+?l<3e6NdoJcz`A@mXB}A(F z4`MK}Mj79c!Vob#72}9HEz*mcp>k6#3Gu)7aY1U%lTLkcB$xf3oDXDYF?02DMlFZ4 zWClg&{WC}4?f lDLH4cOgPRL6I;Rx`38xuk}uPp$~{Tok%Ic-@pxvAXU>fM{l}MY0Pf?Si#)D6xR%F?i|bg;cZ_b}7+wmRIrk>V3xH!u&Z>#o0uBhL}_M7I%uT~wDJycL- zV7`NO4|napbn XR(gD*wUn z^lQg6uytB>B!D!($7-=p+CHlot8nP6U^qknMv5dgnO2W9pCluht$qgkn3&JenoABn z%+cN(I-r1g(iqO8NUIHQB1>? 2SxS3gG5IY6KLN+leo6oU literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/WebConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/config/WebConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..1ac063d11c651c156745d862db8ae380201946db GIT binary patch literal 830 zcmaKqO;6k~5Qbl~VY7tgD_uVO$qhK*3%4R9v{j`_3x@_#Rqe$|O>mpFBgeZ){Z;L$ zQl<6>^hY5k$rhGf+8pfhc;=aR#`$yo^EZG4YzJsz)5n&N$3C9;c-q1 =#PoS$^o2_K zI~jK?>m@@cmF}%Eu6A@YQ52HmJ3G4{dY{Em@J#5GSAL3~i&UzG8(1p0{y@m#-VsHu z6El)_n8`_Ocz1Im@?7bZYOUS}Mb46+FhOJnHj%GY+1%o-=>1Yw8*>O~2on;i_E?`$ zUXtq07`CQvPKL?f%jG*zU7vw*8pBx5tpJ9P#-_Ze=oeP><(08t_?3)#QFqOYL7p4y z_;Fk~D-w6CwQ<5Jqw9jNRFMmpTuM8d(;IqWB{KC@T5Q9ozoGm*(8v+cI!`A~JEMJe z?+4g-GG@@GwOKo{Kz4g%FJg&K9+t5}QDyQ$1p@-_7iQi!!bbFsyyJw{7$HDS2& |92vx~IvV9v1gTb1>^?%dXB1W)Jef@ZF2jv@BpL)j}EL>ltFDcF|h z*rusFzC&}>EnyF=7$r;dDh`oOHty0@Th zY%nIg))V--Xz9Yw+3oqFpbR`UHLIkqcp`d}*#=SxF@uMD8_!CJZ)#?R#>dsiM)8S+ z DZ?_nD-t?Jva1q~h6OcmZ8quq-kfQ# z=j}E1rf%sD+5L_#>0U%Sh{4Wktt%9O`s0H^sGF&fuqZ*VHIqe9m-NN_L#oJR_O1lU zu5Xs`6`REN%DN+=Tgbz($Xr$Udi+=Q&pKB;t+2+D@KuEh>kDS8pjp?21rkza%`FGQ z#9*-+;!Df(3)g7@*9k{=D<&0IsYgwDcF^f;r#;1q_P>Pmid}IE`VB)g%OMfTnr59A zUDZl&n`zK83#4|PWzv3m%{jK~E;>fZuz0Vz#5bq(%d*x>aaF`x!4bTYL`A_-3?{Lu zU<+pzoWz$3#&KG~8Eh*!hw}<1#V`#P;W1G+EfrkBB5o*{!K{MoVzq=1B^>dUClb@y zieVN-;*Zt`b0ks%(+a-AV=;Wq{ACra;$v1y4JxQ2qPM7Iia_n~yyfX7!I+|AxjMHZ z+w;w|UFKs^F8ra;Ez10OGbwA3{?H}nrSAM*7qmQ&H~0skpMNm;qayObd4RhF=T|v* za%OhWfn)xk5Qc(tdh`cKFA$UPjJp_K<0x)`2tyo|;1pgbI&hrd7*14ihq>oZ9o`I4 zXZbe9XI%ny>?d@*fE;T;KIS9$2PZ>h-oaZKA)2tci}NtQ*?W*&jAD$>lEUCqJ|Rmg zB)l3DW_-dIh&QsGh_Gd (EU8A8b8WFqHL|eD85~h;B9s#6 z_~>&S_@0Ys%rZWHP-pQlW> 5_-Ky$bj0$t`T3N A~iXj|Nvm$2%xu%UB^< zoWgdSs~Cl^4 8>QvRY=lH#-z57N&7A3PeN#^2!ceA!C!Fj&U1A4 z_Uxip7`%%^y@$EpMc@9?i`MX9Xl67LF?>SA81DF8*-u;Ua(|ECPstUi+-Ls*7fTZ8 literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/entity/Blog.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/entity/Blog.class" new file mode 100644 index 0000000000000000000000000000000000000000..af1cbdbf2ac0b573c52e29badca3dd0f31f92d4c GIT binary patch literal 2949 zcma)7-*XdH6#j0qn{1Lz36TORRY6hHw55Wmm{NYqk4OthD@sLSo38Cbnqay?dGg7B zf*0T9r4Kq|%Z$!A`hqk5O(K40? wFSbg~URwu~b=9P!)xgD07})a~1N__ne2$M9rx$P0adDuf8;?kQRrtEq}SuRImbX z_gkMEmt6l`2ox`l5Xv~;SR~4>X|L{HZLKW0%{ga5<2I^J?WWW8L=P7Yf7x4A*gais ztW3Cd-}4_$2p*3-aHBTtllj?}Ke(6iEUX7gneco$MkHY)vUS~J;}I~WYQ7IW*Y?z z**Jh<8!yZ73Wk}Zk)*S62JhH-6$fn;F=FGGs3nm`WjKq23j3nfajxan7Tu #siB?;%_N7K;%S#KqLAyJrt^VxIS(GVbr$Y; zzdYPRS9m>E$1t<`f6X|=PO_g($UscUq7)Opf|-;BGg;$203{sJeu&xxHO1L1{Q|WX zxV^?P5iDl#I%Qis;4t2x_GV~(i?b4*`vAp$qA`Xpki9Js!_)^T9tFy73&c?O0WzXM z1KR?PVLSvXbB@WgO9$4WevZ5?86fS|9wA9WphQ7M=sH5aHSb-_(RIXjiYXC|V!quU zGrm(y$&M)I(f*jmPBA6ZqL{2k{dRScbBZiJ9xeR{(^wn*6Xs)>@wL%EV9tz{HjoHZ z3du44e-IlL>nb&?Y>fYfOu=}D-A`bT7mN+0+V1JHNtbjvQ82|P@eKJV$QH~(Vv|#* zEU1~XRY;1H6*?sgR@=#tLWpn5UmfGy`qrHoKjtU@UA}V=-{U fIaYCk zl7Tr~#0Qj2%(Fq2DJAfTwKqvAiSJmYCn;H&;+bQ}Car%kki;qbIrb)Tnm 0jXptgd;@l{o-P|=C>Wu|l1OP&rfdc#1}WHN70kdi+@JST`snboaoona zptgk3^OR!PgDd!u4~Vm7kKqC(gZ+FTnHS!L*>8||LDCH}s}#wEQZMM<)nl?S2(#_b z_Az>wLbt>wx2|V&mCg}H`Bl)2;vQ#dyk~wx_SRDj 4`96DoZ$lMuBkD_2Z$-BPG bv+SEqJ=%j<|0`Xx;>SMC~VD% z>g5$^^8 -TN_WwQSY zrYfS8Cn^`JJB6UHBJ7ziDD2yQR75H^*FYV8vF4W^nuB(x261B7C;XdgQZo-Jb#})& zb#iDomOR~Q`lPAj$wmR2iD%L5eK2$^Ol+ZbmU3kl#+;s&8F{_5;!|L1#g?FxDPUX` z^VJ )`o2HX8BdnSPUtFV&LK{I-6QLsM#=qy-49o40Ld__%+H zFTYHHz!Lr`0F+Avu0aWR%eY&DGF0%phWK^-tb78J!YXoZz)jp2u_|IUSj+3z=WsTV qvk6->_4T~>He$En_6&9>$953A`v-O}$L^!z1LOFiQ7j|!2;eugmS;r( literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/BlogService.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/BlogService.class" new file mode 100644 index 0000000000000000000000000000000000000000..597922c19df63ffc80e960e5d177d6b873b5e4ac GIT binary patch literal 510 zcma)3!AiqG6r8QGvDMVJM*IPV^kOc8hltP~gg~H&_yaLn!j^R-$)?a>^WX>gQR3Te zDaG{Q=`pkO-p-r%{qy++-~rbzu3Y#GqlQbK>$#K*S(OdLG?*o;Y@LOz7BWmkqa%hv zDoT~ ByJr&H!0npLw-ueE&%n^5O96d{;RFuhQ$jt9U7P{L Y4=~*G=Y%idS$>2|TgRr7Vq!a|zgOspZvX%Q literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/impl/BlogServiceImpl.class" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/classes/com/service/impl/BlogServiceImpl.class" new file mode 100644 index 0000000000000000000000000000000000000000..7086e789782bd30e164afbe77efec052d8684c2d GIT binary patch literal 2823 zcma)8TXWk)7(J`VmpF3jhNLA;pm*xnO$D^ji_=09+G23hl9WKpt+K5;YGf(May$7K zJo5wSOCQ=9NT)EvzzfXqn}BjwQeyd%DKqi6((bp%=R148b^iMI=U)Mw!^SX%@yQ5Q zuqwkX89tR^O@_~8_&kFN+)m+6hN)l3@THvjN`|jf_$Gr<+)m@J91R(&Y1HIcPr*## zo ^hvg1`W-*gjy$WqteS0g=N=0A_q$qhNt)lb4V!kE zh|74RdY`T=&D`PXxzc7G-J>OegzK-%p4lhuc0!7=(?z*prE4m?>KnBUCIlX3zq0)V z(lx`mD!-qP>qcumv^hnhyosAD<)y16=$Wmy?F)=_0j7O7^o#UfWSMSXWLDj_S2M3! z(mCT&yqNXR$btm&13S0no1W?VTbrgHZ7FFuh*wi+XqdvZh7&lcA&(givpAzc$D10? z%5V S3SnsLjpmuw=N; zvm&7imIQJgsPMdq9w!yU `TDdDv@@201hMy&yarFQ=k^Wgr}K^j^JJ9$g@7rkw3q<*ayTD?X^Yjr9hWZihwS0 zl-5WVia$XNrWCp&x$BB#WZiCZZ0`v33C9F67mI}-kWe2Nf5-6mNDMtL{)XYD(}ith zf>%C_ET3k$q|W|{kxBIr?0*Dpc2eDj7G$W>1Vb^$hZ>y=;dcow;tD;^{-&SaXBQ~+ z{$b2>ZU_Z-*aDwaED~!1$yEApjHd9xKRA%WRsN*~;+3fK%8DwvNKmOxLYB~L$dF4Y z&dzx;l?)`8IHZu*UIh6aN0pF=bEP@;av;HUuCz`8(z)Uzq-M8~y?c3jaN&h;YgG6U zuZnWep9x+cAMr_n{CDu r+t09XEVqsQlJGXh#$Ms`HpY9c7x(aVL^H00f@LBqxUqZh-30yvIvOGp literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" new file mode 100644 index 0000000..789825b --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" @@ -0,0 +1,10 @@ +com\config\WebConfig.class +com\service\impl\BlogServiceImpl.class +com\controller\BlogController.class +com\config\JdbcConfig.class +com\config\MyBatisConfig.class +com\entity\Blog.class +com\service\BlogService.class +com\mapper\BlogMapper.class +com\config\SpringConfig.class +com\config\SpringMvcConfig.class diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" new file mode 100644 index 0000000..e158182 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" @@ -0,0 +1,10 @@ +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\JdbcConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\MyBatisConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\SpringConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\SpringMvcConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\config\WebConfig.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\controller\BlogController.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\entity\Blog.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\mapper\BlogMapper.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\service\BlogService.java +E:\学习专用\SSM框架基础(专用)\课后作业\2025.01.06\20250106 综合练习(四)\MyBlog\src\main\java\com\service\impl\BlogServiceImpl.java diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" new file mode 100644 index 0000000..76c9512 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/logging.properties" @@ -0,0 +1,64 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +############################################################ +# Handler specific properties. +# Describes specific configuration info for Handlers. +############################################################ + +1catalina.org.apache.juli.FileHandler.level = FINE +1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +1catalina.org.apache.juli.FileHandler.prefix = catalina. + +2localhost.org.apache.juli.FileHandler.level = FINE +2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +2localhost.org.apache.juli.FileHandler.prefix = localhost. + +3manager.org.apache.juli.FileHandler.level = FINE +3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +3manager.org.apache.juli.FileHandler.prefix = manager. + +4host-manager.org.apache.juli.FileHandler.level = FINE +4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +4host-manager.org.apache.juli.FileHandler.prefix = host-manager. + +java.util.logging.ConsoleHandler.level = FINE +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter + + +############################################################ +# Facility specific properties. +# Provides extra control for each logger. +############################################################ + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler + +# For example, set the org.apache.catalina.util.LifecycleBase logger to log +# each component that extends LifecycleBase changing state: +#org.apache.catalina.util.LifecycleBase.level = FINE + +# To see debug messages in TldLocationsCache, uncomment the following line: +#org.apache.jasper.compiler.TldLocationsCache.level = FINE diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" new file mode 100644 index 0000000..7114f5d --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/tomcat-users.xml" @@ -0,0 +1,26 @@ + + + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" new file mode 100644 index 0000000..cc8383c --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/conf/web.xml" @@ -0,0 +1,4283 @@ + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" new file mode 100644 index 0000000..773f569 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250106 \347\273\274\345\220\210\347\273\203\344\271\240(\345\233\233)/MyBlog/target/tomcat/logs/access_log.2025-01-06" @@ -0,0 +1,103 @@ +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET / HTTP/1.1" 200 2139 http-bio-80-exec-1 35 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-3 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-2 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /js/data.js HTTP/1.1" 200 5206 http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:17:59 +0800] "GET /student HTTP/1.1" 404 965 http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:18:00 +0800] "GET /favicon.ico HTTP/1.1" 404 973 http-bio-80-exec-8 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:18:00 +0800] "GET /student HTTP/1.1" 404 965 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-2 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-1 96 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:02 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-6 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-8 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:20 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-10 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:47:25 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 698 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:09 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-1 774 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:12 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-3 20 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:50:26 +0800] "GET /blog?title=1 HTTP/1.1" 200 12 http-bio-80-exec-4 102 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:13 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-6 17 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:50 +0800] "GET /student HTTP/1.1" 404 949 http-bio-80-exec-8 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:55 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-9 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET / HTTP/1.1" 200 2139 http-bio-80-exec-10 8 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-10 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/data.js HTTP/1.1" 200 5193 http-bio-80-exec-4 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:52:57 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:53 +0800] "GET / HTTP/1.1" 200 2136 http-bio-80-exec-7 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:53 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:53:54 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 10 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:01 +0800] "GET /blog?title=%E8%BE%89%E8%BE%89 HTTP/1.1" 200 118 http-bio-80-exec-7 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:03 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:13 +0800] "GET /blog/2 HTTP/1.1" 200 119 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:37 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:37 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:54:38 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 233 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-7 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:30 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-7 9 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:32 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-7 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /css/styles.css HTTP/1.1" 200 3191 http-bio-80-exec-7 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/axios.min.js HTTP/1.1" 200 54050 http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:33 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:35 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-4 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:37 +0800] "PUT /blog HTTP/1.1" 200 11 http-bio-80-exec-4 47 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:55:38 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:03 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-4 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:04 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-4 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:05 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-4 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:07 +0800] "GET /blog/3 HTTP/1.1" 200 119 http-bio-80-exec-4 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:12 +0800] "DELETE /blog/3 HTTP/1.1" 500 4607 http-bio-80-exec-4 20 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 11 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:24 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-5 2 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-5 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:56:52 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-5 1 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-1 48 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-3 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:55 +0800] "GET /js/axios.min.js.map HTTP/1.1" 404 949 http-bio-80-exec-2 14 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:58:56 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 776 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:00 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-6 56 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:01 +0800] "GET /blog HTTP/1.1" 200 337 http-bio-80-exec-7 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:04 +0800] "DELETE /blog/4 HTTP/1.1" 200 11 http-bio-80-exec-8 21 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:08:59:05 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-9 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET / HTTP/1.1" 200 2133 http-bio-80-exec-1 132 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET /js/data.js HTTP/1.1" 200 5177 http-bio-80-exec-3 24 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:36 +0800] "GET /favicon.ico HTTP/1.1" 404 949 http-bio-80-exec-2 5 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:37 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-4 1045 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:32:37 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-5 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:27 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-8 12 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:27 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 15 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:34:53 +0800] "GET /blog?title=%E9%99%88 HTTP/1.1" 200 121 http-bio-80-exec-10 77 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:24 +0800] "GET /blog/1 HTTP/1.1" 200 116 http-bio-80-exec-10 8 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:55 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-10 12 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:35:55 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:18 +0800] "DELETE /blog/2 HTTP/1.1" 200 11 http-bio-80-exec-10 237 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:19 +0800] "GET /blog HTTP/1.1" 200 118 http-bio-80-exec-10 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-10 13 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET /js/data.js HTTP/1.1" 304 - http-bio-80-exec-10 14 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:36 +0800] "GET /blog HTTP/1.1" 200 118 http-bio-80-exec-10 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:55 +0800] "POST /blog HTTP/1.1" 200 11 http-bio-80-exec-10 48 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:36:56 +0800] "GET /blog HTTP/1.1" 200 227 http-bio-80-exec-10 3 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:37:23 +0800] "GET /blog/5 HTTP/1.1" 200 119 http-bio-80-exec-10 4 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:38:19 +0800] "PUT /blog HTTP/1.1" 200 11 http-bio-80-exec-10 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:38:20 +0800] "GET /blog HTTP/1.1" 200 230 http-bio-80-exec-10 7 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:39:30 +0800] "GET / HTTP/1.1" 304 - http-bio-80-exec-1 13 +0:0:0:0:0:0:0:1 - - [06/Jan/2025:09:39:30 +0800] "GET /blog HTTP/1.1" 200 230 http-bio-80-exec-1 8 -- Gitee From 1b4923c48deafae8d74361c148f3a9c92c40e5b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E7=8E=AE=E9=93=AD?= <2373854303@qq.com> Date: Tue, 7 Jan 2025 16:23:25 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4107=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\347\273\203\344\271\240(\344\272\224).md" | 921 ++++ .../MySchool/.idea/.gitignore" | 8 + .../MySchool/.idea/MySchool.iml" | 9 + .../MySchool/.idea/compiler.xml" | 16 + .../MySchool/.idea/dataSources.xml" | 12 + .../MySchool/.idea/encodings.xml" | 7 + .../MySchool/.idea/jarRepositories.xml" | 20 + .../MySchool/.idea/misc.xml" | 17 + .../MySchool/.idea/sqldialects.xml" | 6 + .../MySchool/pom.xml" | 103 + .../src/main/java/com/config/JdbcConfig.java" | 20 + .../main/java/com/config/MybatisConfig.java" | 19 + .../main/java/com/config/SpringConfig.java" | 12 + .../java/com/config/SpringMvcConfig.java" | 17 + .../src/main/java/com/config/WebConfig.java" | 20 + .../com/controller/SchoolController.java" | 54 + .../src/main/java/com/entity/School.java" | 15 + .../main/java/com/mapper/SchoolMapper.java" | 33 + .../main/java/com/service/SchoolService.java" | 25 + .../com/service/impl/SchoolServiceImpl.java" | 53 + .../MySchool/src/main/webapp/css/styles.css" | 128 + .../MySchool/src/main/webapp/index.html" | 62 + .../MySchool/src/main/webapp/js/axios.min.js" | 2 + .../MySchool/src/main/webapp/js/data.js" | 182 + .../classes/com/config/JdbcConfig.class" | Bin 0 -> 890 bytes .../classes/com/config/MybatisConfig.class" | Bin 0 -> 889 bytes .../classes/com/config/SpringConfig.class" | Bin 0 -> 591 bytes .../classes/com/config/SpringMvcConfig.class" | Bin 0 -> 1284 bytes .../classes/com/config/WebConfig.class" | Bin 0 -> 830 bytes .../com/controller/SchoolController.class" | Bin 0 -> 3696 bytes .../target/classes/com/entity/School.class" | Bin 0 -> 3014 bytes .../classes/com/mapper/SchoolMapper.class" | Bin 0 -> 1359 bytes .../classes/com/service/SchoolService.class" | Bin 0 -> 540 bytes .../com/service/impl/SchoolServiceImpl.class" | Bin 0 -> 2896 bytes .../compile/default-compile/createdFiles.lst" | 10 + .../compile/default-compile/inputFiles.lst" | 10 + .../target/tomcat/conf/logging.properties" | 64 + .../target/tomcat/conf/tomcat-users.xml" | 26 + .../MySchool/target/tomcat/conf/web.xml" | 4283 +++++++++++++++++ .../target/tomcat/logs/access_log.2025-01-07" | 104 + 40 files changed, 6258 insertions(+) create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224).md" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/.gitignore" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/MySchool.iml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/compiler.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/dataSources.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/encodings.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/jarRepositories.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/misc.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/sqldialects.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/pom.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/JdbcConfig.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/MybatisConfig.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringConfig.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringMvcConfig.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/WebConfig.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/controller/SchoolController.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/entity/School.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/mapper/SchoolMapper.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/SchoolService.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/impl/SchoolServiceImpl.java" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/css/styles.css" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/index.html" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/axios.min.js" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/data.js" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/JdbcConfig.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/MybatisConfig.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringConfig.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringMvcConfig.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/WebConfig.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/controller/SchoolController.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/entity/School.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/mapper/SchoolMapper.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/service/SchoolService.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/service/impl/SchoolServiceImpl.class" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/logging.properties" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/tomcat-users.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/conf/web.xml" create mode 100644 "\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/tomcat/logs/access_log.2025-01-07" diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224).md" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224).md" new file mode 100644 index 0000000..f591134 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224).md" @@ -0,0 +1,921 @@ +## 课堂笔记 + +#### **综合练习(五)(学校管理系统)** + +**一、准备sql数据** + +**二、设置好 Maven 并导入依赖项** + +**三、构建好项目结构** + +**四、编写 School 实体类、config 里的各种配置类** + +**五、编写 SchoolMapper 接口、SchoolService 接口、SchoolServiceImpl 实现类** + +**六、编写 SchoolController 类** + +**七、启动 Tomcat** + +**八、修改前端请求页面** + +**九、浏览器 开始测试各个请求** + +## 课后作业 + +#### **综合练习(五)(学校管理系统)** + +#### **项目结构预览** + + + +#### 具体步骤 + +##### **一、准备sql数据** + +```sql +drop database if exists demo; +create database demo charset utf8; +use demo; +# schoolId 学校编号, +create table school( + schoolId int PRIMARY key auto_increment, # schoolId 学校编号 + schoolName VARCHAR(50), # schoolName 学校名称 + schoolAddress VARCHAR(50),# schoolAddress 学校地址 + schoolPhone VARCHAR(255)# schoolPhone 学校电话 +) + +insert into school ( schoolName,schoolAddress,schoolPhone )values + ('清华大学','北京','10086'), + ('北京大学','北京','10010'), + ('闽西大学','闽西','12306'), + ('龙岩学院','龙岩','12315') +``` + +##### **二、设置好 Maven 并导入依赖项** + +**pom.xml 依赖配置文件** + +```xml ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +default +org.apache.catalina.servlets.DefaultServlet ++ +debug +0 ++ +listings +false +1 ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +jsp +org.apache.jasper.servlet.JspServlet ++ +fork +false ++ +xpoweredBy +false +3 ++ + + +default +/ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +jsp +*.jsp +*.jspx ++ + + + + + + + + + +30 ++ +123 +application/vnd.lotus-1-2-3 ++ +3dml +text/vnd.in3d.3dml ++ +3g2 +video/3gpp2 ++ +3gp +video/3gpp ++ +7z +application/x-7z-compressed ++ +aab +application/x-authorware-bin ++ +aac +audio/x-aac ++ +aam +application/x-authorware-map ++ +aas +application/x-authorware-seg ++ +abs +audio/x-mpeg ++ +abw +application/x-abiword ++ +ac +application/pkix-attr-cert ++ +acc +application/vnd.americandynamics.acc ++ +ace +application/x-ace-compressed ++ +acu +application/vnd.acucobol ++ +acutc +application/vnd.acucorp ++ +adp +audio/adpcm ++ +aep +application/vnd.audiograph ++ +afm +application/x-font-type1 ++ +afp +application/vnd.ibm.modcap ++ +ahead +application/vnd.ahead.space ++ +ai +application/postscript ++ +aif +audio/x-aiff ++ +aifc +audio/x-aiff ++ +aiff +audio/x-aiff ++ +aim +application/x-aim ++ +air +application/vnd.adobe.air-application-installer-package+zip ++ +ait +application/vnd.dvb.ait ++ +ami +application/vnd.amiga.ami ++ +anx +application/annodex ++ +apk +application/vnd.android.package-archive ++ +application +application/x-ms-application ++ +apr +application/vnd.lotus-approach ++ +art +image/x-jg ++ +asc +application/pgp-signature ++ +asf +video/x-ms-asf ++ +asm +text/x-asm ++ +aso +application/vnd.accpac.simply.aso ++ +asx +video/x-ms-asf ++ +atc +application/vnd.acucorp ++ +atom +application/atom+xml ++ +atomcat +application/atomcat+xml ++ +atomsvc +application/atomsvc+xml ++ +atx +application/vnd.antix.game-component ++ +au +audio/basic ++ +avi +video/x-msvideo ++ +avx +video/x-rad-screenplay ++ +aw +application/applixware ++ +axa +audio/annodex ++ +axv +video/annodex ++ +azf +application/vnd.airzip.filesecure.azf ++ +azs +application/vnd.airzip.filesecure.azs ++ +azw +application/vnd.amazon.ebook ++ +bat +application/x-msdownload ++ +bcpio +application/x-bcpio ++ +bdf +application/x-font-bdf ++ +bdm +application/vnd.syncml.dm+wbxml ++ +bed +application/vnd.realvnc.bed ++ +bh2 +application/vnd.fujitsu.oasysprs ++ +bin +application/octet-stream ++ +bmi +application/vnd.bmi ++ +bmp +image/bmp ++ +body +text/html ++ +book +application/vnd.framemaker ++ +box +application/vnd.previewsystems.box ++ +boz +application/x-bzip2 ++ +bpk +application/octet-stream ++ +btif +image/prs.btif ++ +bz +application/x-bzip ++ +bz2 +application/x-bzip2 ++ +c +text/x-c ++ +c11amc +application/vnd.cluetrust.cartomobile-config ++ +c11amz +application/vnd.cluetrust.cartomobile-config-pkg ++ +c4d +application/vnd.clonk.c4group ++ +c4f +application/vnd.clonk.c4group ++ +c4g +application/vnd.clonk.c4group ++ +c4p +application/vnd.clonk.c4group ++ +c4u +application/vnd.clonk.c4group ++ +cab +application/vnd.ms-cab-compressed ++ +cap +application/vnd.tcpdump.pcap ++ +car +application/vnd.curl.car ++ +cat +application/vnd.ms-pki.seccat ++ +cc +text/x-c ++ +cct +application/x-director ++ +ccxml +application/ccxml+xml ++ +cdbcmsg +application/vnd.contact.cmsg ++ +cdf +application/x-cdf ++ +cdkey +application/vnd.mediastation.cdkey ++ +cdmia +application/cdmi-capability ++ +cdmic +application/cdmi-container ++ +cdmid +application/cdmi-domain ++ +cdmio +application/cdmi-object ++ +cdmiq +application/cdmi-queue ++ +cdx +chemical/x-cdx ++ +cdxml +application/vnd.chemdraw+xml ++ +cdy +application/vnd.cinderella ++ +cer +application/pkix-cert ++ +cgm +image/cgm ++ +chat +application/x-chat ++ +chm +application/vnd.ms-htmlhelp ++ +chrt +application/vnd.kde.kchart ++ +cif +chemical/x-cif ++ +cii +application/vnd.anser-web-certificate-issue-initiation ++ +cil +application/vnd.ms-artgalry ++ +cla +application/vnd.claymore ++ +class +application/java ++ +clkk +application/vnd.crick.clicker.keyboard ++ +clkp +application/vnd.crick.clicker.palette ++ +clkt +application/vnd.crick.clicker.template ++ +clkw +application/vnd.crick.clicker.wordbank ++ +clkx +application/vnd.crick.clicker ++ +clp +application/x-msclip ++ +cmc +application/vnd.cosmocaller ++ +cmdf +chemical/x-cmdf ++ +cml +chemical/x-cml ++ +cmp +application/vnd.yellowriver-custom-menu ++ +cmx +image/x-cmx ++ +cod +application/vnd.rim.cod ++ +com +application/x-msdownload ++ +conf +text/plain ++ +cpio +application/x-cpio ++ +cpp +text/x-c ++ +cpt +application/mac-compactpro ++ +crd +application/x-mscardfile ++ +crl +application/pkix-crl ++ +crt +application/x-x509-ca-cert ++ +cryptonote +application/vnd.rig.cryptonote ++ +csh +application/x-csh ++ +csml +chemical/x-csml ++ +csp +application/vnd.commonspace ++ +css +text/css ++ +cst +application/x-director ++ +csv +text/csv ++ +cu +application/cu-seeme ++ +curl +text/vnd.curl ++ +cww +application/prs.cww ++ +cxt +application/x-director ++ +cxx +text/x-c ++ +dae +model/vnd.collada+xml ++ +daf +application/vnd.mobius.daf ++ +dataless +application/vnd.fdsn.seed ++ +davmount +application/davmount+xml ++ +dcr +application/x-director ++ +dcurl +text/vnd.curl.dcurl ++ +dd2 +application/vnd.oma.dd2+xml ++ +ddd +application/vnd.fujixerox.ddd ++ +deb +application/x-debian-package ++ +def +text/plain ++ +deploy +application/octet-stream ++ +der +application/x-x509-ca-cert ++ +dfac +application/vnd.dreamfactory ++ +dib +image/bmp ++ +dic +text/x-c ++ +dir +application/x-director ++ +dis +application/vnd.mobius.dis ++ +dist +application/octet-stream ++ +distz +application/octet-stream ++ +djv +image/vnd.djvu ++ +djvu +image/vnd.djvu ++ +dll +application/x-msdownload ++ +dmg +application/octet-stream ++ +dmp +application/vnd.tcpdump.pcap ++ +dms +application/octet-stream ++ +dna +application/vnd.dna ++ +doc +application/msword ++ +docm +application/vnd.ms-word.document.macroenabled.12 ++ +docx +application/vnd.openxmlformats-officedocument.wordprocessingml.document ++ +dot +application/msword ++ +dotm +application/vnd.ms-word.template.macroenabled.12 ++ +dotx +application/vnd.openxmlformats-officedocument.wordprocessingml.template ++ +dp +application/vnd.osgi.dp ++ +dpg +application/vnd.dpgraph ++ +dra +audio/vnd.dra ++ +dsc +text/prs.lines.tag ++ +dssc +application/dssc+der ++ +dtb +application/x-dtbook+xml ++ +dtd +application/xml-dtd ++ +dts +audio/vnd.dts ++ +dtshd +audio/vnd.dts.hd ++ +dump +application/octet-stream ++ +dv +video/x-dv ++ +dvb +video/vnd.dvb.file ++ +dvi +application/x-dvi ++ +dwf +model/vnd.dwf ++ +dwg +image/vnd.dwg ++ +dxf +image/vnd.dxf ++ +dxp +application/vnd.spotfire.dxp ++ +dxr +application/x-director ++ +ecelp4800 +audio/vnd.nuera.ecelp4800 ++ +ecelp7470 +audio/vnd.nuera.ecelp7470 ++ +ecelp9600 +audio/vnd.nuera.ecelp9600 ++ +ecma +application/ecmascript ++ +edm +application/vnd.novadigm.edm ++ +edx +application/vnd.novadigm.edx ++ +efif +application/vnd.picsel ++ +ei6 +application/vnd.pg.osasli ++ +elc +application/octet-stream ++ +eml +message/rfc822 ++ +emma +application/emma+xml ++ +eol +audio/vnd.digital-winds ++ +eot +application/vnd.ms-fontobject ++ +eps +application/postscript ++ +epub +application/epub+zip ++ +es3 +application/vnd.eszigno3+xml ++ +esf +application/vnd.epson.esf ++ +et3 +application/vnd.eszigno3+xml ++ +etx +text/x-setext ++ +exe +application/octet-stream ++ +exi +application/exi ++ +ext +application/vnd.novadigm.ext ++ +ez +application/andrew-inset ++ +ez2 +application/vnd.ezpix-album ++ +ez3 +application/vnd.ezpix-package ++ +f +text/x-fortran ++ +f4v +video/x-f4v ++ +f77 +text/x-fortran ++ +f90 +text/x-fortran ++ +fbs +image/vnd.fastbidsheet ++ +fcs +application/vnd.isac.fcs ++ +fdf +application/vnd.fdf ++ +fe_launch +application/vnd.denovo.fcselayout-link ++ +fg5 +application/vnd.fujitsu.oasysgp ++ +fgd +application/x-director ++ +fh +image/x-freehand ++ +fh4 +image/x-freehand ++ +fh5 +image/x-freehand ++ +fh7 +image/x-freehand ++ +fhc +image/x-freehand ++ +fig +application/x-xfig ++ +flac +audio/flac ++ +fli +video/x-fli ++ +flo +application/vnd.micrografx.flo ++ +flv +video/x-flv ++ +flw +application/vnd.kde.kivio ++ +flx +text/vnd.fmi.flexstor ++ +fly +text/vnd.fly ++ +fm +application/vnd.framemaker ++ +fnc +application/vnd.frogans.fnc ++ +for +text/x-fortran ++ +fpx +image/vnd.fpx ++ +frame +application/vnd.framemaker ++ +fsc +application/vnd.fsc.weblaunch ++ +fst +image/vnd.fst ++ +ftc +application/vnd.fluxtime.clip ++ +fti +application/vnd.anser-web-funds-transfer-initiation ++ +fvt +video/vnd.fvt ++ +fxp +application/vnd.adobe.fxp ++ +fxpl +application/vnd.adobe.fxp ++ +fzs +application/vnd.fuzzysheet ++ +g2w +application/vnd.geoplan ++ +g3 +image/g3fax ++ +g3w +application/vnd.geospace ++ +gac +application/vnd.groove-account ++ +gbr +application/rpki-ghostbusters ++ +gdl +model/vnd.gdl ++ +geo +application/vnd.dynageo ++ +gex +application/vnd.geometry-explorer ++ +ggb +application/vnd.geogebra.file ++ +ggt +application/vnd.geogebra.tool ++ +ghf +application/vnd.groove-help ++ +gif +image/gif ++ +gim +application/vnd.groove-identity-message ++ +gmx +application/vnd.gmx ++ +gnumeric +application/x-gnumeric ++ +gph +application/vnd.flographit ++ +gqf +application/vnd.grafeq ++ +gqs +application/vnd.grafeq ++ +gram +application/srgs ++ +gre +application/vnd.geometry-explorer ++ +grv +application/vnd.groove-injector ++ +grxml +application/srgs+xml ++ +gsf +application/x-font-ghostscript ++ +gtar +application/x-gtar ++ +gtm +application/vnd.groove-tool-message ++ +gtw +model/vnd.gtw ++ +gv +text/vnd.graphviz ++ +gxt +application/vnd.geonext ++ +gz +application/x-gzip ++ +h +text/x-c ++ +h261 +video/h261 ++ +h263 +video/h263 ++ +h264 +video/h264 ++ +hal +application/vnd.hal+xml ++ +hbci +application/vnd.hbci ++ +hdf +application/x-hdf ++ +hh +text/x-c ++ +hlp +application/winhlp ++ +hpgl +application/vnd.hp-hpgl ++ +hpid +application/vnd.hp-hpid ++ +hps +application/vnd.hp-hps ++ +hqx +application/mac-binhex40 ++ +htc +text/x-component ++ +htke +application/vnd.kenameaapp ++ +htm +text/html ++ +html +text/html ++ +hvd +application/vnd.yamaha.hv-dic ++ +hvp +application/vnd.yamaha.hv-voice ++ +hvs +application/vnd.yamaha.hv-script ++ +i2g +application/vnd.intergeo ++ +icc +application/vnd.iccprofile ++ +ice +x-conference/x-cooltalk ++ +icm +application/vnd.iccprofile ++ +ico +image/x-icon ++ +ics +text/calendar ++ +ief +image/ief ++ +ifb +text/calendar ++ +ifm +application/vnd.shana.informed.formdata ++ +iges +model/iges ++ +igl +application/vnd.igloader ++ +igm +application/vnd.insors.igm ++ +igs +model/iges ++ +igx +application/vnd.micrografx.igx ++ +iif +application/vnd.shana.informed.interchange ++ +imp +application/vnd.accpac.simply.imp ++ +ims +application/vnd.ms-ims ++ +in +text/plain ++ +ink +application/inkml+xml ++ +inkml +application/inkml+xml ++ +iota +application/vnd.astraea-software.iota ++ +ipfix +application/ipfix ++ +ipk +application/vnd.shana.informed.package ++ +irm +application/vnd.ibm.rights-management ++ +irp +application/vnd.irepository.package+xml ++ +iso +application/octet-stream ++ +itp +application/vnd.shana.informed.formtemplate ++ +ivp +application/vnd.immervision-ivp ++ +ivu +application/vnd.immervision-ivu ++ +jad +text/vnd.sun.j2me.app-descriptor ++ +jam +application/vnd.jam ++ +jar +application/java-archive ++ +java +text/x-java-source ++ +jisp +application/vnd.jisp ++ +jlt +application/vnd.hp-jlyt ++ +jnlp +application/x-java-jnlp-file ++ +joda +application/vnd.joost.joda-archive ++ +jpe +image/jpeg ++ +jpeg +image/jpeg ++ +jpg +image/jpeg ++ +jpgm +video/jpm ++ +jpgv +video/jpeg ++ +jpm +video/jpm ++ +js +application/javascript ++ +jsf +text/plain ++ +json +application/json ++ +jspf +text/plain ++ +kar +audio/midi ++ +karbon +application/vnd.kde.karbon ++ +kfo +application/vnd.kde.kformula ++ +kia +application/vnd.kidspiration ++ +kml +application/vnd.google-earth.kml+xml ++ +kmz +application/vnd.google-earth.kmz ++ +kne +application/vnd.kinar ++ +knp +application/vnd.kinar ++ +kon +application/vnd.kde.kontour ++ +kpr +application/vnd.kde.kpresenter ++ +kpt +application/vnd.kde.kpresenter ++ +ksp +application/vnd.kde.kspread ++ +ktr +application/vnd.kahootz ++ +ktx +image/ktx ++ +ktz +application/vnd.kahootz ++ +kwd +application/vnd.kde.kword ++ +kwt +application/vnd.kde.kword ++ +lasxml +application/vnd.las.las+xml ++ +latex +application/x-latex ++ +lbd +application/vnd.llamagraphics.life-balance.desktop ++ +lbe +application/vnd.llamagraphics.life-balance.exchange+xml ++ +les +application/vnd.hhe.lesson-player ++ +lha +application/octet-stream ++ +link66 +application/vnd.route66.link66+xml ++ +list +text/plain ++ +list3820 +application/vnd.ibm.modcap ++ +listafp +application/vnd.ibm.modcap ++ +log +text/plain ++ +lostxml +application/lost+xml ++ +lrf +application/octet-stream ++ +lrm +application/vnd.ms-lrm ++ +ltf +application/vnd.frogans.ltf ++ +lvp +audio/vnd.lucent.voice ++ +lwp +application/vnd.lotus-wordpro ++ +lzh +application/octet-stream ++ +m13 +application/x-msmediaview ++ +m14 +application/x-msmediaview ++ +m1v +video/mpeg ++ +m21 +application/mp21 ++ +m2a +audio/mpeg ++ +m2v +video/mpeg ++ +m3a +audio/mpeg ++ +m3u +audio/x-mpegurl ++ +m3u8 +application/vnd.apple.mpegurl ++ +m4a +audio/mp4 ++ +m4b +audio/mp4 ++ +m4r +audio/mp4 ++ +m4u +video/vnd.mpegurl ++ +m4v +video/mp4 ++ +ma +application/mathematica ++ +mac +image/x-macpaint ++ +mads +application/mads+xml ++ +mag +application/vnd.ecowin.chart ++ +maker +application/vnd.framemaker ++ +man +text/troff ++ +mathml +application/mathml+xml ++ +mb +application/mathematica ++ +mbk +application/vnd.mobius.mbk ++ +mbox +application/mbox ++ +mc1 +application/vnd.medcalcdata ++ +mcd +application/vnd.mcd ++ +mcurl +text/vnd.curl.mcurl ++ +mdb +application/x-msaccess ++ +mdi +image/vnd.ms-modi ++ +me +text/troff ++ +mesh +model/mesh ++ +meta4 +application/metalink4+xml ++ +mets +application/mets+xml ++ +mfm +application/vnd.mfmp ++ +mft +application/rpki-manifest ++ +mgp +application/vnd.osgeo.mapguide.package ++ +mgz +application/vnd.proteus.magazine ++ +mid +audio/midi ++ +midi +audio/midi ++ +mif +application/x-mif ++ +mime +message/rfc822 ++ +mj2 +video/mj2 ++ +mjp2 +video/mj2 ++ +mlp +application/vnd.dolby.mlp ++ +mmd +application/vnd.chipnuts.karaoke-mmd ++ +mmf +application/vnd.smaf ++ +mmr +image/vnd.fujixerox.edmics-mmr ++ +mny +application/x-msmoney ++ +mobi +application/x-mobipocket-ebook ++ +mods +application/mods+xml ++ +mov +video/quicktime ++ +movie +video/x-sgi-movie ++ +mp1 +audio/mpeg ++ +mp2 +audio/mpeg ++ +mp21 +application/mp21 ++ +mp2a +audio/mpeg ++ +mp3 +audio/mpeg ++ +mp4 +video/mp4 ++ +mp4a +audio/mp4 ++ +mp4s +application/mp4 ++ +mp4v +video/mp4 ++ +mpa +audio/mpeg ++ +mpc +application/vnd.mophun.certificate ++ +mpe +video/mpeg ++ +mpeg +video/mpeg ++ +mpega +audio/x-mpeg ++ +mpg +video/mpeg ++ +mpg4 +video/mp4 ++ +mpga +audio/mpeg ++ +mpkg +application/vnd.apple.installer+xml ++ +mpm +application/vnd.blueice.multipass ++ +mpn +application/vnd.mophun.application ++ +mpp +application/vnd.ms-project ++ +mpt +application/vnd.ms-project ++ +mpv2 +video/mpeg2 ++ +mpy +application/vnd.ibm.minipay ++ +mqy +application/vnd.mobius.mqy ++ +mrc +application/marc ++ +mrcx +application/marcxml+xml ++ +ms +text/troff ++ +mscml +application/mediaservercontrol+xml ++ +mseed +application/vnd.fdsn.mseed ++ +mseq +application/vnd.mseq ++ +msf +application/vnd.epson.msf ++ +msh +model/mesh ++ +msi +application/x-msdownload ++ +msl +application/vnd.mobius.msl ++ +msty +application/vnd.muvee.style ++ +mts +model/vnd.mts ++ +mus +application/vnd.musician ++ +musicxml +application/vnd.recordare.musicxml+xml ++ +mvb +application/x-msmediaview ++ +mwf +application/vnd.mfer ++ +mxf +application/mxf ++ +mxl +application/vnd.recordare.musicxml ++ +mxml +application/xv+xml ++ +mxs +application/vnd.triscape.mxs ++ +mxu +video/vnd.mpegurl ++ +n-gage +application/vnd.nokia.n-gage.symbian.install ++ +n3 +text/n3 ++ +nb +application/mathematica ++ +nbp +application/vnd.wolfram.player ++ +nc +application/x-netcdf ++ +ncx +application/x-dtbncx+xml ++ +ngdat +application/vnd.nokia.n-gage.data ++ +nlu +application/vnd.neurolanguage.nlu ++ +nml +application/vnd.enliven ++ +nnd +application/vnd.noblenet-directory ++ +nns +application/vnd.noblenet-sealer ++ +nnw +application/vnd.noblenet-web ++ +npx +image/vnd.net-fpx ++ +nsf +application/vnd.lotus-notes ++ +oa2 +application/vnd.fujitsu.oasys2 ++ +oa3 +application/vnd.fujitsu.oasys3 ++ +oas +application/vnd.fujitsu.oasys ++ +obd +application/x-msbinder ++ +oda +application/oda ++ + +odb +application/vnd.oasis.opendocument.database ++ + +odc +application/vnd.oasis.opendocument.chart ++ + +odf +application/vnd.oasis.opendocument.formula ++ +odft +application/vnd.oasis.opendocument.formula-template ++ + +odg +application/vnd.oasis.opendocument.graphics ++ + +odi +application/vnd.oasis.opendocument.image ++ + +odm +application/vnd.oasis.opendocument.text-master ++ + +odp +application/vnd.oasis.opendocument.presentation ++ + +ods +application/vnd.oasis.opendocument.spreadsheet ++ + +odt +application/vnd.oasis.opendocument.text ++ +oga +audio/ogg ++ +ogg +audio/ogg ++ +ogv +video/ogg ++ + +ogx +application/ogg ++ +onepkg +application/onenote ++ +onetmp +application/onenote ++ +onetoc +application/onenote ++ +onetoc2 +application/onenote ++ +opf +application/oebps-package+xml ++ +oprc +application/vnd.palm ++ +org +application/vnd.lotus-organizer ++ +osf +application/vnd.yamaha.openscoreformat ++ +osfpvg +application/vnd.yamaha.openscoreformat.osfpvg+xml ++ +otc +application/vnd.oasis.opendocument.chart-template ++ +otf +application/x-font-otf ++ + +otg +application/vnd.oasis.opendocument.graphics-template ++ + +oth +application/vnd.oasis.opendocument.text-web ++ +oti +application/vnd.oasis.opendocument.image-template ++ + +otp +application/vnd.oasis.opendocument.presentation-template ++ + +ots +application/vnd.oasis.opendocument.spreadsheet-template ++ + +ott +application/vnd.oasis.opendocument.text-template ++ +oxps +application/oxps ++ +oxt +application/vnd.openofficeorg.extension ++ +p +text/x-pascal ++ +p10 +application/pkcs10 ++ +p12 +application/x-pkcs12 ++ +p7b +application/x-pkcs7-certificates ++ +p7c +application/pkcs7-mime ++ +p7m +application/pkcs7-mime ++ +p7r +application/x-pkcs7-certreqresp ++ +p7s +application/pkcs7-signature ++ +p8 +application/pkcs8 ++ +pas +text/x-pascal ++ +paw +application/vnd.pawaafile ++ +pbd +application/vnd.powerbuilder6 ++ +pbm +image/x-portable-bitmap ++ +pcap +application/vnd.tcpdump.pcap ++ +pcf +application/x-font-pcf ++ +pcl +application/vnd.hp-pcl ++ +pclxl +application/vnd.hp-pclxl ++ +pct +image/pict ++ +pcurl +application/vnd.curl.pcurl ++ +pcx +image/x-pcx ++ +pdb +application/vnd.palm ++ +application/pdf ++ +pfa +application/x-font-type1 ++ +pfb +application/x-font-type1 ++ +pfm +application/x-font-type1 ++ +pfr +application/font-tdpfr ++ +pfx +application/x-pkcs12 ++ +pgm +image/x-portable-graymap ++ +pgn +application/x-chess-pgn ++ +pgp +application/pgp-encrypted ++ +pic +image/pict ++ +pict +image/pict ++ +pkg +application/octet-stream ++ +pki +application/pkixcmp ++ +pkipath +application/pkix-pkipath ++ +plb +application/vnd.3gpp.pic-bw-large ++ +plc +application/vnd.mobius.plc ++ +plf +application/vnd.pocketlearn ++ +pls +audio/x-scpls ++ +pml +application/vnd.ctc-posml ++ +png +image/png ++ +pnm +image/x-portable-anymap ++ +pnt +image/x-macpaint ++ +portpkg +application/vnd.macports.portpkg ++ +pot +application/vnd.ms-powerpoint ++ +potm +application/vnd.ms-powerpoint.template.macroenabled.12 ++ +potx +application/vnd.openxmlformats-officedocument.presentationml.template ++ +ppam +application/vnd.ms-powerpoint.addin.macroenabled.12 ++ +ppd +application/vnd.cups-ppd ++ +ppm +image/x-portable-pixmap ++ +pps +application/vnd.ms-powerpoint ++ +ppsm +application/vnd.ms-powerpoint.slideshow.macroenabled.12 ++ +ppsx +application/vnd.openxmlformats-officedocument.presentationml.slideshow ++ +ppt +application/vnd.ms-powerpoint ++ +pptm +application/vnd.ms-powerpoint.presentation.macroenabled.12 ++ +pptx +application/vnd.openxmlformats-officedocument.presentationml.presentation ++ +pqa +application/vnd.palm ++ +prc +application/x-mobipocket-ebook ++ +pre +application/vnd.lotus-freelance ++ +prf +application/pics-rules ++ +ps +application/postscript ++ +psb +application/vnd.3gpp.pic-bw-small ++ +psd +image/vnd.adobe.photoshop ++ +psf +application/x-font-linux-psf ++ +pskcxml +application/pskc+xml ++ +ptid +application/vnd.pvi.ptid1 ++ +pub +application/x-mspublisher ++ +pvb +application/vnd.3gpp.pic-bw-var ++ +pwn +application/vnd.3m.post-it-notes ++ +pya +audio/vnd.ms-playready.media.pya ++ +pyv +video/vnd.ms-playready.media.pyv ++ +qam +application/vnd.epson.quickanime ++ +qbo +application/vnd.intu.qbo ++ +qfx +application/vnd.intu.qfx ++ +qps +application/vnd.publishare-delta-tree ++ +qt +video/quicktime ++ +qti +image/x-quicktime ++ +qtif +image/x-quicktime ++ +qwd +application/vnd.quark.quarkxpress ++ +qwt +application/vnd.quark.quarkxpress ++ +qxb +application/vnd.quark.quarkxpress ++ +qxd +application/vnd.quark.quarkxpress ++ +qxl +application/vnd.quark.quarkxpress ++ +qxt +application/vnd.quark.quarkxpress ++ +ra +audio/x-pn-realaudio ++ +ram +audio/x-pn-realaudio ++ +rar +application/x-rar-compressed ++ +ras +image/x-cmu-raster ++ +rcprofile +application/vnd.ipunplugged.rcprofile ++ +rdf +application/rdf+xml ++ +rdz +application/vnd.data-vision.rdz ++ +rep +application/vnd.businessobjects ++ +res +application/x-dtbresource+xml ++ +rgb +image/x-rgb ++ +rif +application/reginfo+xml ++ +rip +audio/vnd.rip ++ +rl +application/resource-lists+xml ++ +rlc +image/vnd.fujixerox.edmics-rlc ++ +rld +application/resource-lists-diff+xml ++ +rm +application/vnd.rn-realmedia ++ +rmi +audio/midi ++ +rmp +audio/x-pn-realaudio-plugin ++ +rms +application/vnd.jcp.javame.midlet-rms ++ +rnc +application/relax-ng-compact-syntax ++ +roa +application/rpki-roa ++ +roff +text/troff ++ +rp9 +application/vnd.cloanto.rp9 ++ +rpss +application/vnd.nokia.radio-presets ++ +rpst +application/vnd.nokia.radio-preset ++ +rq +application/sparql-query ++ +rs +application/rls-services+xml ++ +rsd +application/rsd+xml ++ +rss +application/rss+xml ++ +rtf +application/rtf ++ +rtx +text/richtext ++ +s +text/x-asm ++ +saf +application/vnd.yamaha.smaf-audio ++ +sbml +application/sbml+xml ++ +sc +application/vnd.ibm.secure-container ++ +scd +application/x-msschedule ++ +scm +application/vnd.lotus-screencam ++ +scq +application/scvp-cv-request ++ +scs +application/scvp-cv-response ++ +scurl +text/vnd.curl.scurl ++ +sda +application/vnd.stardivision.draw ++ +sdc +application/vnd.stardivision.calc ++ +sdd +application/vnd.stardivision.impress ++ +sdkd +application/vnd.solent.sdkm+xml ++ +sdkm +application/vnd.solent.sdkm+xml ++ +sdp +application/sdp ++ +sdw +application/vnd.stardivision.writer ++ +see +application/vnd.seemail ++ +seed +application/vnd.fdsn.seed ++ +sema +application/vnd.sema ++ +semd +application/vnd.semd ++ +semf +application/vnd.semf ++ +ser +application/java-serialized-object ++ +setpay +application/set-payment-initiation ++ +setreg +application/set-registration-initiation ++ +sfd-hdstx +application/vnd.hydrostatix.sof-data ++ +sfs +application/vnd.spotfire.sfs ++ +sgl +application/vnd.stardivision.writer-global ++ +sgm +text/sgml ++ +sgml +text/sgml ++ +sh +application/x-sh ++ +shar +application/x-shar ++ + +shf +application/shf+xml ++ +sig +application/pgp-signature ++ +silo +model/mesh ++ +sis +application/vnd.symbian.install ++ +sisx +application/vnd.symbian.install ++ +sit +application/x-stuffit ++ +sitx +application/x-stuffitx ++ +skd +application/vnd.koan ++ +skm +application/vnd.koan ++ +skp +application/vnd.koan ++ +skt +application/vnd.koan ++ +sldm +application/vnd.ms-powerpoint.slide.macroenabled.12 ++ +sldx +application/vnd.openxmlformats-officedocument.presentationml.slide ++ +slt +application/vnd.epson.salt ++ +sm +application/vnd.stepmania.stepchart ++ +smf +application/vnd.stardivision.math ++ +smi +application/smil+xml ++ +smil +application/smil+xml ++ +smzip +application/vnd.stepmania.package ++ +snd +audio/basic ++ +snf +application/x-font-snf ++ +so +application/octet-stream ++ +spc +application/x-pkcs7-certificates ++ +spf +application/vnd.yamaha.smaf-phrase ++ +spl +application/x-futuresplash ++ +spot +text/vnd.in3d.spot ++ +spp +application/scvp-vp-response ++ +spq +application/scvp-vp-request ++ +spx +audio/ogg ++ +src +application/x-wais-source ++ +sru +application/sru+xml ++ +srx +application/sparql-results+xml ++ +sse +application/vnd.kodak-descriptor ++ +ssf +application/vnd.epson.ssf ++ +ssml +application/ssml+xml ++ +st +application/vnd.sailingtracker.track ++ +stc +application/vnd.sun.xml.calc.template ++ +std +application/vnd.sun.xml.draw.template ++ +stf +application/vnd.wt.stf ++ +sti +application/vnd.sun.xml.impress.template ++ +stk +application/hyperstudio ++ +stl +application/vnd.ms-pki.stl ++ +str +application/vnd.pg.format ++ +stw +application/vnd.sun.xml.writer.template ++ +sub +text/vnd.dvb.subtitle ++ +sus +application/vnd.sus-calendar ++ +susp +application/vnd.sus-calendar ++ +sv4cpio +application/x-sv4cpio ++ +sv4crc +application/x-sv4crc ++ +svc +application/vnd.dvb.service ++ +svd +application/vnd.svd ++ +svg +image/svg+xml ++ +svgz +image/svg+xml ++ +swa +application/x-director ++ +swf +application/x-shockwave-flash ++ +swi +application/vnd.aristanetworks.swi ++ +sxc +application/vnd.sun.xml.calc ++ +sxd +application/vnd.sun.xml.draw ++ +sxg +application/vnd.sun.xml.writer.global ++ +sxi +application/vnd.sun.xml.impress ++ +sxm +application/vnd.sun.xml.math ++ +sxw +application/vnd.sun.xml.writer ++ +t +text/troff ++ +taglet +application/vnd.mynfc ++ +tao +application/vnd.tao.intent-module-archive ++ +tar +application/x-tar ++ +tcap +application/vnd.3gpp2.tcap ++ +tcl +application/x-tcl ++ +teacher +application/vnd.smart.teacher ++ +tei +application/tei+xml ++ +teicorpus +application/tei+xml ++ +tex +application/x-tex ++ +texi +application/x-texinfo ++ +texinfo +application/x-texinfo ++ +text +text/plain ++ +tfi +application/thraud+xml ++ +tfm +application/x-tex-tfm ++ +thmx +application/vnd.ms-officetheme ++ +tif +image/tiff ++ +tiff +image/tiff ++ +tmo +application/vnd.tmobile-livetv ++ +torrent +application/x-bittorrent ++ +tpl +application/vnd.groove-tool-template ++ +tpt +application/vnd.trid.tpt ++ +tr +text/troff ++ +tra +application/vnd.trueapp ++ +trm +application/x-msterminal ++ +tsd +application/timestamped-data ++ +tsv +text/tab-separated-values ++ +ttc +application/x-font-ttf ++ +ttf +application/x-font-ttf ++ +ttl +text/turtle ++ +twd +application/vnd.simtech-mindmapper ++ +twds +application/vnd.simtech-mindmapper ++ +txd +application/vnd.genomatix.tuxedo ++ +txf +application/vnd.mobius.txf ++ +txt +text/plain ++ +u32 +application/x-authorware-bin ++ +udeb +application/x-debian-package ++ +ufd +application/vnd.ufdl ++ +ufdl +application/vnd.ufdl ++ +ulw +audio/basic ++ +umj +application/vnd.umajin ++ +unityweb +application/vnd.unity ++ +uoml +application/vnd.uoml+xml ++ +uri +text/uri-list ++ +uris +text/uri-list ++ +urls +text/uri-list ++ +ustar +application/x-ustar ++ +utz +application/vnd.uiq.theme ++ +uu +text/x-uuencode ++ +uva +audio/vnd.dece.audio ++ +uvd +application/vnd.dece.data ++ +uvf +application/vnd.dece.data ++ +uvg +image/vnd.dece.graphic ++ +uvh +video/vnd.dece.hd ++ +uvi +image/vnd.dece.graphic ++ +uvm +video/vnd.dece.mobile ++ +uvp +video/vnd.dece.pd ++ +uvs +video/vnd.dece.sd ++ +uvt +application/vnd.dece.ttml+xml ++ +uvu +video/vnd.uvvu.mp4 ++ +uvv +video/vnd.dece.video ++ +uvva +audio/vnd.dece.audio ++ +uvvd +application/vnd.dece.data ++ +uvvf +application/vnd.dece.data ++ +uvvg +image/vnd.dece.graphic ++ +uvvh +video/vnd.dece.hd ++ +uvvi +image/vnd.dece.graphic ++ +uvvm +video/vnd.dece.mobile ++ +uvvp +video/vnd.dece.pd ++ +uvvs +video/vnd.dece.sd ++ +uvvt +application/vnd.dece.ttml+xml ++ +uvvu +video/vnd.uvvu.mp4 ++ +uvvv +video/vnd.dece.video ++ +uvvx +application/vnd.dece.unspecified ++ +uvvz +application/vnd.dece.zip ++ +uvx +application/vnd.dece.unspecified ++ +uvz +application/vnd.dece.zip ++ +vcard +text/vcard ++ +vcd +application/x-cdlink ++ +vcf +text/x-vcard ++ +vcg +application/vnd.groove-vcard ++ +vcs +text/x-vcalendar ++ +vcx +application/vnd.vcx ++ +vis +application/vnd.visionary ++ +viv +video/vnd.vivo ++ +vor +application/vnd.stardivision.writer ++ +vox +application/x-authorware-bin ++ +vrml +model/vrml ++ +vsd +application/vnd.visio ++ +vsf +application/vnd.vsf ++ +vss +application/vnd.visio ++ +vst +application/vnd.visio ++ +vsw +application/vnd.visio ++ +vtu +model/vnd.vtu ++ +vxml +application/voicexml+xml ++ +w3d +application/x-director ++ +wad +application/x-doom ++ +wav +audio/x-wav ++ +wax +audio/x-ms-wax ++ + +wbmp +image/vnd.wap.wbmp ++ +wbs +application/vnd.criticaltools.wbs+xml ++ +wbxml +application/vnd.wap.wbxml ++ +wcm +application/vnd.ms-works ++ +wdb +application/vnd.ms-works ++ +weba +audio/webm ++ +webm +video/webm ++ +webp +image/webp ++ +wg +application/vnd.pmi.widget ++ +wgt +application/widget ++ +wks +application/vnd.ms-works ++ +wm +video/x-ms-wm ++ +wma +audio/x-ms-wma ++ +wmd +application/x-ms-wmd ++ +wmf +application/x-msmetafile ++ + +wml +text/vnd.wap.wml ++ + +wmlc +application/vnd.wap.wmlc ++ + +wmls +text/vnd.wap.wmlscript ++ + +wmlsc +application/vnd.wap.wmlscriptc ++ +wmv +video/x-ms-wmv ++ +wmx +video/x-ms-wmx ++ +wmz +application/x-ms-wmz ++ +woff +application/x-font-woff ++ +wpd +application/vnd.wordperfect ++ +wpl +application/vnd.ms-wpl ++ +wps +application/vnd.ms-works ++ +wqd +application/vnd.wqd ++ +wri +application/x-mswrite ++ +wrl +model/vrml ++ +wsdl +application/wsdl+xml ++ +wspolicy +application/wspolicy+xml ++ +wtb +application/vnd.webturbo ++ +wvx +video/x-ms-wvx ++ +x32 +application/x-authorware-bin ++ +x3d +application/vnd.hzn-3d-crossword ++ +xap +application/x-silverlight-app ++ +xar +application/vnd.xara ++ +xbap +application/x-ms-xbap ++ +xbd +application/vnd.fujixerox.docuworks.binder ++ +xbm +image/x-xbitmap ++ +xdf +application/xcap-diff+xml ++ +xdm +application/vnd.syncml.dm+xml ++ +xdp +application/vnd.adobe.xdp+xml ++ +xdssc +application/dssc+xml ++ +xdw +application/vnd.fujixerox.docuworks ++ +xenc +application/xenc+xml ++ +xer +application/patch-ops-error+xml ++ +xfdf +application/vnd.adobe.xfdf ++ +xfdl +application/vnd.xfdl ++ +xht +application/xhtml+xml ++ +xhtml +application/xhtml+xml ++ +xhvml +application/xv+xml ++ +xif +image/vnd.xiff ++ +xla +application/vnd.ms-excel ++ +xlam +application/vnd.ms-excel.addin.macroenabled.12 ++ +xlc +application/vnd.ms-excel ++ +xlm +application/vnd.ms-excel ++ +xls +application/vnd.ms-excel ++ +xlsb +application/vnd.ms-excel.sheet.binary.macroenabled.12 ++ +xlsm +application/vnd.ms-excel.sheet.macroenabled.12 ++ +xlsx +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ++ +xlt +application/vnd.ms-excel ++ +xltm +application/vnd.ms-excel.template.macroenabled.12 ++ +xltx +application/vnd.openxmlformats-officedocument.spreadsheetml.template ++ +xlw +application/vnd.ms-excel ++ +xml +application/xml ++ +xo +application/vnd.olpc-sugar ++ +xop +application/xop+xml ++ +xpi +application/x-xpinstall ++ +xpm +image/x-xpixmap ++ +xpr +application/vnd.is-xpr ++ +xps +application/vnd.ms-xpsdocument ++ +xpw +application/vnd.intercon.formnet ++ +xpx +application/vnd.intercon.formnet ++ +xsl +application/xml ++ +xslt +application/xslt+xml ++ +xsm +application/vnd.syncml+xml ++ +xspf +application/xspf+xml ++ +xul +application/vnd.mozilla.xul+xml ++ +xvm +application/xv+xml ++ +xvml +application/xv+xml ++ +xwd +image/x-xwindowdump ++ +xyz +chemical/x-xyz ++ +yang +application/yang ++ +yin +application/yin+xml ++ +z +application/x-compress ++ +Z +application/x-compress ++ +zaz +application/vnd.zzazz.deck+xml ++ +zip +application/zip ++ +zir +application/vnd.zul ++ +zirz +application/vnd.zul ++ + + + + + + + + + + + + + + + +zmm +application/vnd.handheld-entertainment+xml ++ + +index.html +index.htm +index.jsp ++ +``` + +##### **三、构建好项目结构** + + + +##### **四、编写 School 实体类、config 里的各种配置类** + + **School 实体类** + +```java +package com.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class School { + private int schoolId; + private String schoolName; + private String schoolAddress; + private String schoolPhone; +} +``` + +**JdbcConfig 配置类** + +```java +package com.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource druidDataSource = new DruidDataSource(); + druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + druidDataSource.setUrl("jdbc:mysql:///demo"); + druidDataSource.setUsername("root"); + druidDataSource.setPassword("123456"); + return druidDataSource; + } +} +``` + +**MybatisConfig 配置类** + +```java +package com.config; + +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component +@MapperScan("com.mapper") +public class MybatisConfig { + @Bean + public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ + SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); + sqlSessionFactoryBean.setDataSource(dataSource); + return sqlSessionFactoryBean; + } +} +``` + +**SpringConfig 配置类** + +```java +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@ComponentScan("com.service") +@Import({JdbcConfig.class, MybatisConfig.class}) +public class SpringConfig { + +} +``` + +**SpringMvcConfig 配置类** + +```java +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@ComponentScan("com.controller") +@EnableWebMvc +public class SpringMvcConfig implements WebMvcConfigurer { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/**").addResourceLocations("/"); + } +} +``` + +**WebConfig 配置类** + +```java +package com.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class>[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + + @Override + protected Class>[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} +``` + +##### **五、编写 SchoolMapper 接口、SchoolService 接口、SchoolServiceImpl 实现类** + +**SchoolMapper 接口** + +```java +package com.mapper; + +import com.entity.School; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface SchoolMapper { + // 查询所有学校信息 + @Select("select * from school;") + List4.0.0 +com.jd +mySchool +war +1.0-SNAPSHOT ++ + +UTF-8 ++ + ++ + + +org.springframework +spring-webmvc +5.2.25.RELEASE ++ + + +org.springframework +spring-test +5.2.25.RELEASE ++ + +org.springframework +spring-jdbc +5.2.25.RELEASE ++ + +javax.servlet +javax.servlet-api +3.1.0 +provided ++ + + +com.fasterxml.jackson.core +jackson-databind +2.9.0 ++ + +org.projectlombok +lombok +1.18.36 ++ + + +org.mybatis +mybatis +3.5.16 ++ + +com.mysql +mysql-connector-j +8.3.0 ++ + + +junit +junit +4.13.2 +test ++ + + + +com.alibaba +druid +1.1.20 ++ +org.mybatis +mybatis-spring +2.0.6 ++ ++ ++ +org.apache.tomcat.maven +tomcat7-maven-plugin +2.2 ++ +/ +80 +utf-8 +selectAllSchools(); + + // schoolName 查询学校信息 + @Select("select * from school where schoolName like '%${schoolName}%';") + List selectSchoolBySchoolName(String schoolName); + + // id 查询学校信息 + @Select("select * from school where schoolId = #{schoolId};") + School selectSchoolBySchoolId(int schoolId); + + // id 删除学校信息 + @Delete("delete from school where schoolId = #{schoolId};") + int deleteSchoolBySchoolId(int schoolId); + + // 新增学校信息 + @Insert("insert into school (schoolName, schoolAddress, schoolPhone) VALUES (#{schoolName},#{schoolAddress},#{schoolPhone});") + int insertSchool(School school); + + // 修改学校信息 + @Update("update school set schoolName = #{schoolName},schoolAddress = #{schoolAddress},schoolPhone = #{schoolPhone} where schoolId = #{schoolId};") + int updateSchool(School school); +} +``` + +**SchoolService 接口** + +```java +package com.service; + +import com.entity.School; + +import java.util.List; + +public interface SchoolService { + // 查询所有学校信息 + List selectAllSchools(); + + // schoolName 查询学校信息 + List selectSchoolBySchoolName(String schoolName); + + // id 查询学校信息 + School selectSchoolBySchoolId(int schoolId); + + // id 删除学校信息 + int deleteSchoolBySchoolId(int schoolId); + + // 新增学校信息 + int insertSchool(School school); + + // 修改学校信息 + int updateSchool(School school); +} +``` + +**SchoolServiceImpl 实现类** + +```java +package com.service.impl; + +import com.entity.School; +import com.mapper.SchoolMapper; +import com.service.SchoolService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Data +@Service +public class SchoolServiceImpl implements SchoolService { + @Autowired + private SchoolMapper schoolMapper; + + @Override + // 查询所有学校信息 + public List selectAllSchools() { + return schoolMapper.selectAllSchools(); + } + + @Override + // schoolName 查询学校信息 + public List selectSchoolBySchoolName(String schoolName) { + return schoolMapper.selectSchoolBySchoolName(schoolName); + } + + @Override + // id 查询学校信息 + public School selectSchoolBySchoolId(int schoolId) { + return schoolMapper.selectSchoolBySchoolId(schoolId); + } + + @Override + // id 删除学校信息 + public int deleteSchoolBySchoolId(int schoolId) { + return schoolMapper.deleteSchoolBySchoolId(schoolId); + } + + @Override + // 新增学校信息 + public int insertSchool(School school) { + return schoolMapper.insertSchool(school ); + } + + @Override + // 修改学校信息 + public int updateSchool(School school) { + return schoolMapper.updateSchool(school); + } +} +``` + +##### **六、编写 SchoolController 类** + +**SchoolController 类** + +```java +package com.controller; + +import com.entity.School; +import com.service.SchoolService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Data +@RestController +@RequestMapping("/school") +@CrossOrigin +public class SchoolController { + @Autowired + private SchoolService schoolService; + + // 查询所有学校信息 + @GetMapping + public List selectAllSchools() { + return schoolService.selectAllSchools(); + } + + // schoolName 查询学校信息 + @GetMapping(params = "schoolName") + public List selectSchoolBySchoolName(String schoolName) { + return schoolService.selectSchoolBySchoolName(schoolName); + } + + // id 查询学校信息 + @GetMapping("/{schoolId}") + public School selectSchoolBySchoolId(@PathVariable String schoolId) { + return schoolService.selectSchoolBySchoolId(Integer.parseInt(schoolId)); + } + + // id 删除学校信息 + @DeleteMapping("/{schoolId}") + public int deleteSchoolBySchoolId(@PathVariable String schoolId) { + return schoolService.deleteSchoolBySchoolId(Integer.parseInt(schoolId)); + } + + // 新增学校信息 + @PostMapping + public int insertSchool(@RequestBody School school) { + return schoolService.insertSchool(school ); + } + + // 修改学校信息 + @PutMapping + public int updateSchool(@RequestBody School school) { + return schoolService.updateSchool(school); + } +} +``` + +##### **七、启动 Tomcat** + + + +##### **八、修改前端请求页面** + +**index.html** + +```html + + + + + + + 学校管理系统 + + + + ++ ++ + + +``` + +**styles.css** + +```css +body { + font-family: Arial, sans-serif; + background-color: #e0f7fa; /* 浅蓝色背景 */ + margin: 0; + padding: 20px; +} + +.container { + max-width: 800px; + margin: 0 auto; + background: #ffffff; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + padding: 20px; + box-shadow: 0 0 10px rgba(0, 123, 255, 0.1); /* 蓝色阴影 */ +} + +h1 { + text-align: center; + color: #007bff; /* 深蓝色标题 */ +} + +#search-box { + padding: 10px; + width: calc(100% - 120px); + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; + height: 18px; +} + +#add-book-btn { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色按钮 */ + color: white; + border: none; + height: 40px; + border-radius: 4px; + cursor: pointer; +} + +#add-book-btn:hover { + background-color: #0056b3; /* 深一些的蓝色按钮悬停效果 */ +} + +table { + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; +} + +th, td { + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + text-align: center; +} + +th { + background-color: #d1ecf1; /* 浅蓝色表头背景 */ +} +tr:hover { + background-color: #e0f7fa; /* 浅蓝色高亮背景,与页面背景相近但稍浅 */ +} +.modal { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.4); /* 蓝色半透明背景 */ +} + +.modal-content { + background-color: #fefefe; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + /* 注意:以下两行原本用于居中的代码是错误的,应该移除或更正 */ + transform: translate(60%, 40%); + /* margin应该用于.modal而不是.modal-content来实现居中 */ + padding: 35px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + width: 40%; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); /* 蓝色阴影 */ + /* 为了实现.modal-content的居中,您可能需要添加额外的CSS或使用JavaScript */ +} + +/* 注意:.close-btn的颜色已经在.modal-content之外定义,如果需要更改为蓝色调,可以如下修改 */ +.close-btn { + color: #007bff; /* 深蓝色关闭按钮 */ + float: right; + font-size: 28px; + font-weight: bold; + cursor: pointer; +} + +.close-btn:hover, +.close-btn:focus { + color: #0056b3; /* 深一些的蓝色关闭按钮悬停效果 */ + text-decoration: none; + cursor: pointer; +} + +form { + display: flex; + flex-direction: column; +} + +label { + margin-bottom: 8px; + color: #007bff; /* 深蓝色标签 */ +} + +input[type="text"], input[type="hidden"] { + margin-bottom: 15px; + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; +} + +button[type="submit"] { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色提交按钮 */ + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +button[type="submit"]:hover { + background-color: #0056b3; /* 深一些的蓝色提交按钮悬停效果 */ +} +``` + +**data.js** + +```javascript +// 私有变量 +const addBtn = document.querySelector('#add-btn'); +const modal = document.querySelector('.modal'); +const closeModalBtn = document.querySelector('#close-form-btn'); +const tbody = document.querySelector('tbody'); +const form = document.querySelector('#item-form'); +const searchBox = document.querySelector("#search-box"); +const formTitle = document.querySelector("#form-title"); + +// 表单选项 +//#######################改改改################################ +let schoolId = document.querySelector("#schoolId"); +let schoolName = document.querySelector("#schoolName"); +let schoolAddress = document.querySelector("#schoolAddress"); +let schoolPhone = document.querySelector("#schoolPhone"); +//############################################################# + + +let data = []; +// api接口设置 +// const API_BASE_URL = "http://localhost/book"; +const API_BASE_URL = "http://localhost/school"; // #### 改改改 #### + +// 搜索功能 +function search(name) { + axios.get(API_BASE_URL + `?schoolName=${name}`).then(res => { + data = res.data; + renderTable(data); + }); +} + +// 渲染表格数据 # 修改item.后面的属性名称 +function renderTable(data) { + if (data.length === 0) return alert("无内容"); + tbody.innerHTML = data.map(item => { + return `学校管理系统
++ + + + +++ +
++ + + + + +学校编号 + +学校名称 + +学校地址 + +学校电话 +操作 +++ ++ `; + }).join(''); + + // 添加事件监听器(事件委托) + tbody.addEventListener('click', handleTableClick); +} + +// 更新,先回显要被修改的旧数据 +function update(id) { + axios.get(API_BASE_URL + `/${id}`).then(res => { + const data = res.data; + showOrCloseModal(); + form.reset(); + + // ########以下内容要修改########## + + // formTitle.innerText = '更新图书'; + formTitle.innerText = '更新学校'; + schoolId.value = data.schoolId; + schoolName.value = data.schoolName; + schoolAddress.value = data.schoolAddress; + schoolPhone.value = data.schoolPhone; + + // ######以上内容要修改##### + }); +} + + +// 处理表格点击事件 +function handleTableClick(e) { + if (e.target.classList.contains('delete-btn')) { + deleteItem(e.target.closest('tr').dataset.id); + } else if (e.target.classList.contains('update-btn')) { + update(e.target.closest('tr').dataset.id); + } +} + +// 开关浮层 +function showOrCloseModal(show = true) { + if (show) { + modal.style.display = 'block'; + } else { + modal.style.display = 'none'; + } + + schoolId.value = null; // 重置当前编辑的图书ID + +} + +// 获取列表 +function fetch() { + axios.get(API_BASE_URL).then(res => { + console.log(res) + data = res.data; + renderTable(data); + }); + +} + +// 根据id删除 +function deleteItem(id) { + if (!confirm("真的要删除吗?")) return; + axios.delete(API_BASE_URL + `/${id}`).then(res => { + alert("删除成功!") + fetch(); + }); +} + + +// 点击保存按钮:添加或更新图书 +function save() { + + // 获取表单项的值######改改##### + + // 非空判断 + if (!schoolName.value || !schoolAddress.value || !schoolPhone.value) { + alert("所有字段都必须填写!"); + return; + } + // 表单项的值,封装成一个对象 + const item = { + schoolId: schoolId.value || null, // 如果为空,则视为添加新图书 + schoolName: schoolName.value, + schoolAddress: schoolAddress.value, + schoolPhone: schoolPhone.value + }; + + // 根据编号判断是添加还是更新 + if (schoolId.value!='') { + axios.put(API_BASE_URL, item).then(res => { + alert("修改成功") + fetch(); + showOrCloseModal(false); + }) + } else { + axios.post(API_BASE_URL, item).then(res => { + console.log(item) + alert("添加成功") + fetch(); + showOrCloseModal(false); + }) + } + +} + + +// 初始化事件监听器 +function init() { + addBtn.addEventListener('click', () => { + form.reset(); + // formTitle.innerText = '添加图书'; + formTitle.innerText = '添加学校'; + showOrCloseModal(); + }); + + closeModalBtn.addEventListener('click', () => { + schoolId.value = null; //### 初始化id + showOrCloseModal(false); + }); + + form.addEventListener('submit', (e) => { + e.preventDefault(); + save(); + }); + + searchBox.addEventListener('keyup', (e) => { + if (e.key === "Enter") { + search(searchBox.value); + searchBox.value = ''; + } + }); + + // 初始加载列表 + fetch(); +} + +// 执行初始化函数 +init(); +``` + +##### **九、浏览器 开始测试各个请求** + +**查询所有学校信息请求并渲染展示** + + + +**用 name 查询学校信息请求并渲染展示** + + + +**用 id 查询学校信息请求** + + + +**用 id 删除学校信息请求** + + + + + + + +**新增学校信息请求** + + + + + + + +**修改学校信息请求** + + + + + + diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/.gitignore" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/.gitignore" new file mode 100644 index 0000000..35410ca --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/.gitignore" @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/MySchool.iml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/MySchool.iml" new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/MySchool.iml" @@ -0,0 +1,9 @@ + +${item.schoolId} +${item.schoolName} +${item.schoolAddress} +${item.schoolPhone} ++ + + ++ \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/compiler.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/compiler.xml" new file mode 100644 index 0000000..1245488 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/compiler.xml" @@ -0,0 +1,16 @@ + ++ ++ + + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/dataSources.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/dataSources.xml" new file mode 100644 index 0000000..58dc139 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/dataSources.xml" @@ -0,0 +1,12 @@ + ++ ++ ++ ++ + + + + ++ + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/encodings.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/encodings.xml" new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/encodings.xml" @@ -0,0 +1,7 @@ + ++ ++ +mysql.8 +true +com.mysql.cj.jdbc.Driver +jdbc:mysql://localhost:3306 +$ProjectFileDir$ ++ \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/jarRepositories.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/jarRepositories.xml" new file mode 100644 index 0000000..abb532a --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/jarRepositories.xml" @@ -0,0 +1,20 @@ + ++ ++ + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/misc.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/misc.xml" new file mode 100644 index 0000000..79a352f --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/misc.xml" @@ -0,0 +1,17 @@ + ++ ++ ++ + + + ++ + + + ++ + + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/sqldialects.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/sqldialects.xml" new file mode 100644 index 0000000..56782ca --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/.idea/sqldialects.xml" @@ -0,0 +1,6 @@ + ++ + ++ + ++ ++
++ + + ++ \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/pom.xml" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/pom.xml" new file mode 100644 index 0000000..0a240fe --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/pom.xml" @@ -0,0 +1,103 @@ ++ ++ + diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/JdbcConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/JdbcConfig.java" new file mode 100644 index 0000000..4a99ba4 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/JdbcConfig.java" @@ -0,0 +1,20 @@ +package com.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource druidDataSource = new DruidDataSource(); + druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + druidDataSource.setUrl("jdbc:mysql:///demo"); + druidDataSource.setUsername("root"); + druidDataSource.setPassword("123456"); + return druidDataSource; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/MybatisConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/MybatisConfig.java" new file mode 100644 index 0000000..d826480 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/MybatisConfig.java" @@ -0,0 +1,19 @@ +package com.config; + +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +@Component +@MapperScan("com.mapper") +public class MybatisConfig { + @Bean + public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ + SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); + sqlSessionFactoryBean.setDataSource(dataSource); + return sqlSessionFactoryBean; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringConfig.java" new file mode 100644 index 0000000..11385e4 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringConfig.java" @@ -0,0 +1,12 @@ +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@ComponentScan("com.service") +@Import({JdbcConfig.class, MybatisConfig.class}) +public class SpringConfig { + +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringMvcConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringMvcConfig.java" new file mode 100644 index 0000000..894b989 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/SpringMvcConfig.java" @@ -0,0 +1,17 @@ +package com.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@ComponentScan("com.controller") +@EnableWebMvc +public class SpringMvcConfig implements WebMvcConfigurer { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/**").addResourceLocations("/"); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/WebConfig.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/WebConfig.java" new file mode 100644 index 0000000..8d00677 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/config/WebConfig.java" @@ -0,0 +1,20 @@ +package com.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class>[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + + @Override + protected Class>[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/controller/SchoolController.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/controller/SchoolController.java" new file mode 100644 index 0000000..b00d4c6 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/controller/SchoolController.java" @@ -0,0 +1,54 @@ +package com.controller; + +import com.entity.School; +import com.service.SchoolService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Data +@RestController +@RequestMapping("/school") +@CrossOrigin +public class SchoolController { + @Autowired + private SchoolService schoolService; + + // 查询所有学校信息 + @GetMapping + public List4.0.0 +com.jd +mySchool +war +1.0-SNAPSHOT ++ + +UTF-8 ++ + ++ + + +org.springframework +spring-webmvc +5.2.25.RELEASE ++ + + +org.springframework +spring-test +5.2.25.RELEASE ++ + +org.springframework +spring-jdbc +5.2.25.RELEASE ++ + +javax.servlet +javax.servlet-api +3.1.0 +provided ++ + + +com.fasterxml.jackson.core +jackson-databind +2.9.0 ++ + +org.projectlombok +lombok +1.18.36 ++ + + +org.mybatis +mybatis +3.5.16 ++ + +com.mysql +mysql-connector-j +8.3.0 ++ + + +junit +junit +4.13.2 +test ++ + + + +com.alibaba +druid +1.1.20 ++ +org.mybatis +mybatis-spring +2.0.6 ++ ++ ++ +org.apache.tomcat.maven +tomcat7-maven-plugin +2.2 ++ +/ +80 +utf-8 +selectAllSchools() { + return schoolService.selectAllSchools(); + } + + // schoolName 查询学校信息 + @GetMapping(params = "schoolName") + public List selectSchoolBySchoolName(String schoolName) { + return schoolService.selectSchoolBySchoolName(schoolName); + } + + // id 查询学校信息 + @GetMapping("/{schoolId}") + public School selectSchoolBySchoolId(@PathVariable String schoolId) { + return schoolService.selectSchoolBySchoolId(Integer.parseInt(schoolId)); + } + + // id 删除学校信息 + @DeleteMapping("/{schoolId}") + public int deleteSchoolBySchoolId(@PathVariable String schoolId) { + return schoolService.deleteSchoolBySchoolId(Integer.parseInt(schoolId)); + } + + // 新增学校信息 + @PostMapping + public int insertSchool(@RequestBody School school) { + return schoolService.insertSchool(school ); + } + + // 修改学校信息 + @PutMapping + public int updateSchool(@RequestBody School school) { + return schoolService.updateSchool(school); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/entity/School.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/entity/School.java" new file mode 100644 index 0000000..c5faab8 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/entity/School.java" @@ -0,0 +1,15 @@ +package com.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class School { + private int schoolId; + private String schoolName; + private String schoolAddress; + private String schoolPhone; +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/mapper/SchoolMapper.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/mapper/SchoolMapper.java" new file mode 100644 index 0000000..73083f9 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/mapper/SchoolMapper.java" @@ -0,0 +1,33 @@ +package com.mapper; + +import com.entity.School; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface SchoolMapper { + // 查询所有学校信息 + @Select("select * from school;") + List selectAllSchools(); + + // schoolName 查询学校信息 + @Select("select * from school where schoolName like '%${schoolName}%';") + List selectSchoolBySchoolName(String schoolName); + + // id 查询学校信息 + @Select("select * from school where schoolId = #{schoolId};") + School selectSchoolBySchoolId(int schoolId); + + // id 删除学校信息 + @Delete("delete from school where schoolId = #{schoolId};") + int deleteSchoolBySchoolId(int schoolId); + + // 新增学校信息 + @Insert("insert into school (schoolName, schoolAddress, schoolPhone) VALUES (#{schoolName},#{schoolAddress},#{schoolPhone});") + int insertSchool(School school); + + // 修改学校信息 + @Update("update school set schoolName = #{schoolName},schoolAddress = #{schoolAddress},schoolPhone = #{schoolPhone} where schoolId = #{schoolId};") + int updateSchool(School school); +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/SchoolService.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/SchoolService.java" new file mode 100644 index 0000000..75ae72f --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/SchoolService.java" @@ -0,0 +1,25 @@ +package com.service; + +import com.entity.School; + +import java.util.List; + +public interface SchoolService { + // 查询所有学校信息 + List selectAllSchools(); + + // schoolName 查询学校信息 + List selectSchoolBySchoolName(String schoolName); + + // id 查询学校信息 + School selectSchoolBySchoolId(int schoolId); + + // id 删除学校信息 + int deleteSchoolBySchoolId(int schoolId); + + // 新增学校信息 + int insertSchool(School school); + + // 修改学校信息 + int updateSchool(School school); +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/impl/SchoolServiceImpl.java" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/impl/SchoolServiceImpl.java" new file mode 100644 index 0000000..1d6bc6e --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/java/com/service/impl/SchoolServiceImpl.java" @@ -0,0 +1,53 @@ +package com.service.impl; + +import com.entity.School; +import com.mapper.SchoolMapper; +import com.service.SchoolService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Data +@Service +public class SchoolServiceImpl implements SchoolService { + @Autowired + private SchoolMapper schoolMapper; + + @Override + // 查询所有学校信息 + public List selectAllSchools() { + return schoolMapper.selectAllSchools(); + } + + @Override + // schoolName 查询学校信息 + public List selectSchoolBySchoolName(String schoolName) { + return schoolMapper.selectSchoolBySchoolName(schoolName); + } + + @Override + // id 查询学校信息 + public School selectSchoolBySchoolId(int schoolId) { + return schoolMapper.selectSchoolBySchoolId(schoolId); + } + + @Override + // id 删除学校信息 + public int deleteSchoolBySchoolId(int schoolId) { + return schoolMapper.deleteSchoolBySchoolId(schoolId); + } + + @Override + // 新增学校信息 + public int insertSchool(School school) { + return schoolMapper.insertSchool(school ); + } + + @Override + // 修改学校信息 + public int updateSchool(School school) { + return schoolMapper.updateSchool(school); + } +} diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/css/styles.css" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/css/styles.css" new file mode 100644 index 0000000..fb397cd --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/css/styles.css" @@ -0,0 +1,128 @@ +body { + font-family: Arial, sans-serif; + background-color: #e0f7fa; /* 浅蓝色背景 */ + margin: 0; + padding: 20px; +} + +.container { + max-width: 800px; + margin: 0 auto; + background: #ffffff; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + padding: 20px; + box-shadow: 0 0 10px rgba(0, 123, 255, 0.1); /* 蓝色阴影 */ +} + +h1 { + text-align: center; + color: #007bff; /* 深蓝色标题 */ +} + +#search-box { + padding: 10px; + width: calc(100% - 120px); + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; + height: 18px; +} + +#add-book-btn { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色按钮 */ + color: white; + border: none; + height: 40px; + border-radius: 4px; + cursor: pointer; +} + +#add-book-btn:hover { + background-color: #0056b3; /* 深一些的蓝色按钮悬停效果 */ +} + +table { + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; +} + +th, td { + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + text-align: center; +} + +th { + background-color: #d1ecf1; /* 浅蓝色表头背景 */ +} +tr:hover { + background-color: #e0f7fa; /* 浅蓝色高亮背景,与页面背景相近但稍浅 */ +} +.modal { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.4); /* 蓝色半透明背景 */ +} + +.modal-content { + background-color: #fefefe; /* 保持白色背景,或者可以更改为更浅的蓝色 */ + /* 注意:以下两行原本用于居中的代码是错误的,应该移除或更正 */ + transform: translate(60%, 40%); + /* margin应该用于.modal而不是.modal-content来实现居中 */ + padding: 35px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + width: 40%; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); /* 蓝色阴影 */ + /* 为了实现.modal-content的居中,您可能需要添加额外的CSS或使用JavaScript */ +} + +/* 注意:.close-btn的颜色已经在.modal-content之外定义,如果需要更改为蓝色调,可以如下修改 */ +.close-btn { + color: #007bff; /* 深蓝色关闭按钮 */ + float: right; + font-size: 28px; + font-weight: bold; + cursor: pointer; +} + +.close-btn:hover, +.close-btn:focus { + color: #0056b3; /* 深一些的蓝色关闭按钮悬停效果 */ + text-decoration: none; + cursor: pointer; +} + +form { + display: flex; + flex-direction: column; +} + +label { + margin-bottom: 8px; + color: #007bff; /* 深蓝色标签 */ +} + +input[type="text"], input[type="hidden"] { + margin-bottom: 15px; + padding: 10px; + border: 1px solid #cce5ff; /* 浅蓝色边框 */ + border-radius: 4px; +} + +button[type="submit"] { + padding: 10px 20px; + background-color: #007bff; /* 深蓝色提交按钮 */ + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +button[type="submit"]:hover { + background-color: #0056b3; /* 深一些的蓝色提交按钮悬停效果 */ +} \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/index.html" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/index.html" new file mode 100644 index 0000000..4508626 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/index.html" @@ -0,0 +1,62 @@ + + + + + + + 学校管理系统 + + + + ++ ++ + + \ No newline at end of file diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/axios.min.js" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/axios.min.js" new file mode 100644 index 0000000..0ac6c50 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/axios.min.js" @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e){var r,n;function o(r,n){try{var a=e[r](n),u=a.value,s=u instanceof t;Promise.resolve(s?u.v:u).then((function(t){if(s){var n="return"===r?"return":"next";if(!u.k||t.done)return o(n,t);t=e[n](t).value}i(a.done?"return":"normal",t)}),(function(e){o("throw",e)}))}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?o(r.key,r.arg):n=null}this._invoke=function(e,t){return new Promise((function(i,a){var u={key:e,arg:t,resolve:i,reject:a,next:null};n?n=n.next=u:(r=n=u,o(e,t))}))},"function"!=typeof e.return&&(this.return=void 0)}function t(e,t){this.v=e,this.k=t}function r(e){var r={},n=!1;function o(r,o){return n=!0,o=new Promise((function(t){t(e[r](o))})),{done:!1,value:new t(o,1)}}return r["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},r.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(r.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(r.return=function(e){return n?(n=!1,e):o("return",e)}),r}function n(e){var t,r,n,i=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);i--;){if(r&&null!=(t=e[r]))return t.call(e);if(n&&null!=(t=e[n]))return new o(t.call(e));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return o=function(e){this.s=e,this.n=e.next},o.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new o(e)}function i(e){return new t(e,0)}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t学校管理系统
++ + + + +++ +
++ + + + + +学校编号 + +学校名称 + +学校地址 + +学校电话 +操作 +++ +=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(s&&c){if(this.prev =0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev =0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function l(t){return function(){return new e(t.apply(this,arguments))}}function p(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){p(i,n,o,a,u,"next",e)}function u(e){p(i,n,o,a,u,"throw",e)}a(void 0)}))}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var r=0;r e.length)&&(t=e.length);for(var r=0,n=new Array(t);r 2&&void 0!==arguments[2]?arguments[2]:{},i=o.allOwnKeys,a=void 0!==i&&i;if(null!=e)if("object"!==f(e)&&(e=[e]),N(e))for(r=0,n=e.length;r 0;)if(t===(r=n[o]).toLowerCase())return r;return null}var Q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Z=function(e){return!_(e)&&e!==Q};var ee,te=(ee="undefined"!=typeof Uint8Array&&j(Uint8Array),function(e){return ee&&e instanceof ee}),re=P("HTMLFormElement"),ne=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),oe=P("RegExp"),ie=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};$(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},ae="abcdefghijklmnopqrstuvwxyz",ue="0123456789",se={DIGIT:ue,ALPHA:ae,ALPHA_DIGIT:ae+ae.toUpperCase()+ue};var ce,fe,le,pe,he=P("AsyncFunction"),de=(ce="function"==typeof setImmediate,fe=U(Q.postMessage),ce?setImmediate:fe?(le="axios@".concat(Math.random()),pe=[],Q.addEventListener("message",(function(e){var t=e.source,r=e.data;t===Q&&r===le&&pe.length&&pe.shift()()}),!1),function(e){pe.push(e),Q.postMessage(le,"*")}):function(e){return setTimeout(e)}),ve="undefined"!=typeof queueMicrotask?queueMicrotask.bind(Q):"undefined"!=typeof process&&process.nextTick||de,ye={isArray:N,isArrayBuffer:C,isBuffer:function(e){return null!==e&&!_(e)&&null!==e.constructor&&!_(e.constructor)&&U(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||U(e.append)&&("formdata"===(t=A(e))||"object"===t&&U(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&C(e.buffer)},isString:F,isNumber:B,isBoolean:function(e){return!0===e||!1===e},isObject:D,isPlainObject:I,isReadableStream:G,isRequest:K,isResponse:V,isHeaders:X,isUndefined:_,isDate:q,isFile:M,isBlob:z,isRegExp:oe,isFunction:U,isStream:function(e){return D(e)&&U(e.pipe)},isURLSearchParams:J,isTypedArray:te,isFileList:H,forEach:$,merge:function e(){for(var t=Z(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&Y(n,o)||o;I(n[i])&&I(t)?n[i]=e(n[i],t):I(t)?n[i]=e({},t):N(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return $(t,(function(t,n){r&&U(t)?e[n]=R(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,u={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||u[a]||(t[a]=e[a],u[a]=!0);e=!1!==r&&j(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:A,kindOfTest:P,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(N(e))return e;var t=e.length;if(!B(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:re,hasOwnProperty:ne,hasOwnProp:ne,reduceDescriptors:ie,freezeMethods:function(e){ie(e,(function(t,r){if(U(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];U(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return N(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:Y,global:Q,isContextDefined:Z,ALPHABET:se,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:se.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&U(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(D(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=N(r)?[]:{};return $(r,(function(t,r){var i=e(t,n+1);!_(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:he,isThenable:function(e){return e&&(D(e)||U(e))&&U(e.then)&&U(e.catch)},setImmediate:de,asap:ve};function me(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status?o.status:null)}ye.inherits(me,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ye.toJSONObject(this.config),code:this.code,status:this.status}}});var be=me.prototype,ge={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){ge[e]={value:e}})),Object.defineProperties(me,ge),Object.defineProperty(be,"isAxiosError",{value:!0}),me.from=function(e,t,r,n,o,i){var a=Object.create(be);return ye.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),me.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function we(e){return ye.isPlainObject(e)||ye.isArray(e)}function Ee(e){return ye.endsWith(e,"[]")?e.slice(0,-2):e}function Oe(e,t,r){return e?e.concat(t).map((function(e,t){return e=Ee(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var Se=ye.toFlatObject(ye,{},null,(function(e){return/^is[A-Z]/.test(e)}));function xe(e,t,r){if(!ye.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=ye.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!ye.isUndefined(t[e])}))).metaTokens,o=r.visitor||c,i=r.dots,a=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&ye.isSpecCompliantForm(t);if(!ye.isFunction(o))throw new TypeError("visitor must be a function");function s(e){if(null===e)return"";if(ye.isDate(e))return e.toISOString();if(!u&&ye.isBlob(e))throw new me("Blob is not supported. Use a Buffer instead.");return ye.isArrayBuffer(e)||ye.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,r,o){var u=e;if(e&&!o&&"object"===f(e))if(ye.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(ye.isArray(e)&&function(e){return ye.isArray(e)&&!e.some(we)}(e)||(ye.isFileList(e)||ye.endsWith(r,"[]"))&&(u=ye.toArray(e)))return r=Ee(r),u.forEach((function(e,n){!ye.isUndefined(e)&&null!==e&&t.append(!0===a?Oe([r],n,i):null===a?r:r+"[]",s(e))})),!1;return!!we(e)||(t.append(Oe(o,r,i),s(e)),!1)}var l=[],p=Object.assign(Se,{defaultVisitor:c,convertValue:s,isVisitable:we});if(!ye.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!ye.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),ye.forEach(r,(function(r,i){!0===(!(ye.isUndefined(r)||null===r)&&o.call(t,r,ye.isString(i)?i.trim():i,n,p))&&e(r,n?n.concat(i):[i])})),l.pop()}}(e),t}function Re(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Te(e,t){this._pairs=[],e&&xe(e,this,t)}var ke=Te.prototype;function je(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ae(e,t,r){if(!t)return e;var n=r&&r.encode||je;ye.isFunction(r)&&(r={serialize:r});var o,i=r&&r.serialize;if(o=i?i(t,r):ye.isURLSearchParams(t)?t.toString():new Te(t,r).toString(n)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}ke.append=function(e,t){this._pairs.push([e,t])},ke.toString=function(e){var t=e?function(t){return e.call(this,t,Re)}:Re;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Pe=function(){function e(){d(this,e),this.handlers=[]}return y(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){ye.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),Le={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Ne={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Te,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},_e="undefined"!=typeof window&&"undefined"!=typeof document,Ce="object"===("undefined"==typeof navigator?"undefined":f(navigator))&&navigator||void 0,Fe=_e&&(!Ce||["ReactNative","NativeScript","NS"].indexOf(Ce.product)<0),Ue="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Be=_e&&window.location.href||"http://localhost",De=u(u({},Object.freeze({__proto__:null,hasBrowserEnv:_e,hasStandardBrowserWebWorkerEnv:Ue,hasStandardBrowserEnv:Fe,navigator:Ce,origin:Be})),Ne);function Ie(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),u=o>=e.length;return i=!i&&ye.isArray(n)?n.length:i,u?(ye.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&ye.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&ye.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=ye.isObject(e);if(i&&ye.isHTMLForm(e)&&(e=new FormData(e)),ye.isFormData(e))return o?JSON.stringify(Ie(e)):e;if(ye.isArrayBuffer(e)||ye.isBuffer(e)||ye.isStream(e)||ye.isFile(e)||ye.isBlob(e)||ye.isReadableStream(e))return e;if(ye.isArrayBufferView(e))return e.buffer;if(ye.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return xe(e,new De.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return De.isNode&&ye.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=ye.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return xe(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(ye.isString(e))try{return(t||JSON.parse)(e),ye.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||qe.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(ye.isResponse(e)||ye.isReadableStream(e))return e;if(e&&ye.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw me.from(e,me.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:De.classes.FormData,Blob:De.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ye.forEach(["delete","get","head","post","put","patch"],(function(e){qe.headers[e]={}}));var Me=qe,ze=ye.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),He=Symbol("internals");function Je(e){return e&&String(e).trim().toLowerCase()}function We(e){return!1===e||null==e?e:ye.isArray(e)?e.map(We):String(e)}function Ge(e,t,r,n,o){return ye.isFunction(n)?n.call(this,t,r):(o&&(t=r),ye.isString(t)?ye.isString(n)?-1!==t.indexOf(n):ye.isRegExp(n)?n.test(t):void 0:void 0)}var Ke=function(e,t){function r(e){d(this,r),e&&this.set(e)}return y(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=Je(t);if(!o)throw new Error("header name must be a non-empty string");var i=ye.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=We(e))}var i=function(e,t){return ye.forEach(e,(function(e,r){return o(e,r,t)}))};if(ye.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(ye.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,r,n,o={};return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&ze[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)})),o}(e),t);else if(ye.isHeaders(e)){var a,u=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=O(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(e.entries());try{for(u.s();!(a=u.n()).done;){var s=b(a.value,2),c=s[0];o(s[1],c,r)}}catch(e){u.e(e)}finally{u.f()}}else null!=e&&o(t,e,r);return this}},{key:"get",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(ye.isFunction(t))return t.call(this,n,r);if(ye.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ge(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=Je(e)){var o=ye.findKey(r,e);!o||t&&!Ge(0,r[o],o,t)||(delete r[o],n=!0)}}return ye.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ge(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return ye.forEach(this,(function(n,o){var i=ye.findKey(r,o);if(i)return t[i]=We(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=We(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n 1?r-1:0),o=1;o 1&&void 0!==arguments[1]?arguments[1]:Date.now();o=i,r=null,n&&(clearTimeout(n),n=null),e.apply(null,t)};return[function(){for(var e=Date.now(),t=e-o,u=arguments.length,s=new Array(u),c=0;c=i?a(s,e):(r=s,n||(n=setTimeout((function(){n=null,a(r)}),i-t)))},function(){return r&&a(r)}]}ye.inherits(Ye,me,{__CANCEL__:!0});var tt=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,n=0,o=Ze(50,250);return et((function(r){var i=r.loaded,a=r.lengthComputable?r.total:void 0,u=i-n,s=o(u);n=i;var c=m({loaded:i,total:a,progress:a?i/a:void 0,bytes:u,rate:s||void 0,estimated:s&&a&&i<=a?(a-i)/s:void 0,event:r,lengthComputable:null!=a},t?"download":"upload",!0);e(c)}),r)},rt=function(e,t){var r=null!=e;return[function(n){return t[0]({lengthComputable:r,total:e,loaded:n})},t[1]]},nt=function(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n 1?t-1:0),n=1;n 1?"since :\n"+u.map(At).join("\n"):" "+At(u[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Nt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ye(null,e)}function _t(e){return Nt(e),e.headers=Ve.from(e.headers),e.data=Xe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Lt(e.adapter||Me.adapter)(e).then((function(t){return Nt(e),t.data=Xe.call(e,e.transformResponse,t),t.headers=Ve.from(t.headers),t}),(function(t){return $e(t)||(Nt(e),t&&t.response&&(t.response.data=Xe.call(e,e.transformResponse,t.response),t.response.headers=Ve.from(t.response.headers))),Promise.reject(t)}))}var Ct="1.7.9",Ft={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Ft[e]=function(r){return f(r)===e||"a"+(t<1?"n ":" ")+e}}));var Ut={};Ft.transitional=function(e,t,r){function n(e,t){return"[Axios v1.7.9] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new me(n(o," has been removed"+(t?" in "+t:"")),me.ERR_DEPRECATED);return t&&!Ut[o]&&(Ut[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}},Ft.spelling=function(e){return function(t,r){return console.warn("".concat(r," is likely a misspelling of ").concat(e)),!0}};var Bt={assertOptions:function(e,t,r){if("object"!==f(e))throw new me("options must be an object",me.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),o=n.length;o-- >0;){var i=n[o],a=t[i];if(a){var u=e[i],s=void 0===u||a(u,i,e);if(!0!==s)throw new me("option "+i+" must be "+s,me.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new me("Unknown option "+i,me.ERR_BAD_OPTION)}},validators:Ft},Dt=Bt.validators,It=function(){function e(t){d(this,e),this.defaults=t,this.interceptors={request:new Pe,response:new Pe}}var t;return y(e,[{key:"request",value:(t=h(s().mark((function e(t,r){var n,o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,r);case 3:return e.abrupt("return",e.sent);case 6:if(e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error){n={},Error.captureStackTrace?Error.captureStackTrace(n):n=new Error,o=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.t0.stack?o&&!String(e.t0.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+o):e.t0.stack=o}catch(e){}}throw e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,r){return t.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=st(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&Bt.assertOptions(n,{silentJSONParsing:Dt.transitional(Dt.boolean),forcedJSONParsing:Dt.transitional(Dt.boolean),clarifyTimeoutError:Dt.transitional(Dt.boolean)},!1),null!=o&&(ye.isFunction(o)?t.paramsSerializer={serialize:o}:Bt.assertOptions(o,{encode:Dt.function,serialize:Dt.function},!0)),Bt.assertOptions(t,{baseUrl:Dt.spelling("baseURL"),withXsrfToken:Dt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&ye.merge(i.common,i[t.method]);i&&ye.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=Ve.concat(a,i);var u=[],s=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,u.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,p=0;if(!s){var h=[_t.bind(this),void 0];for(h.unshift.apply(h,u),h.push.apply(h,f),l=h.length,c=Promise.resolve(t);p 0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Ye(e,t,o),r(n.reason))}))}return y(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}},{key:"toAbortSignal",value:function(){var e=this,t=new AbortController,r=function(e){t.abort(e)};return this.subscribe(r),t.signal.unsubscribe=function(){return e.unsubscribe(r)},t.signal}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}(),zt=Mt;var Ht={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ht).forEach((function(e){var t=b(e,2),r=t[0],n=t[1];Ht[n]=r}));var Jt=Ht;var Wt=function e(t){var r=new qt(t),n=R(qt.prototype.request,r);return ye.extend(n,qt.prototype,r,{allOwnKeys:!0}),ye.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(st(t,r))},n}(Me);return Wt.Axios=qt,Wt.CanceledError=Ye,Wt.CancelToken=zt,Wt.isCancel=$e,Wt.VERSION=Ct,Wt.toFormData=xe,Wt.AxiosError=me,Wt.Cancel=Wt.CanceledError,Wt.all=function(e){return Promise.all(e)},Wt.spread=function(e){return function(t){return e.apply(null,t)}},Wt.isAxiosError=function(e){return ye.isObject(e)&&!0===e.isAxiosError},Wt.mergeConfig=st,Wt.AxiosHeaders=Ve,Wt.formToJSON=function(e){return Ie(ye.isHTMLForm(e)?new FormData(e):e)},Wt.getAdapter=Lt,Wt.HttpStatusCode=Jt,Wt.default=Wt,Wt})); +//# sourceMappingURL=axios.min.js.map diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/data.js" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/data.js" new file mode 100644 index 0000000..847c5e5 --- /dev/null +++ "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/src/main/webapp/js/data.js" @@ -0,0 +1,182 @@ +// 私有变量 +const addBtn = document.querySelector('#add-btn'); +const modal = document.querySelector('.modal'); +const closeModalBtn = document.querySelector('#close-form-btn'); +const tbody = document.querySelector('tbody'); +const form = document.querySelector('#item-form'); +const searchBox = document.querySelector("#search-box"); +const formTitle = document.querySelector("#form-title"); + +// 表单选项 +//#######################改改改################################ +let schoolId = document.querySelector("#schoolId"); +let schoolName = document.querySelector("#schoolName"); +let schoolAddress = document.querySelector("#schoolAddress"); +let schoolPhone = document.querySelector("#schoolPhone"); +//############################################################# + + +let data = []; +// api接口设置 +// const API_BASE_URL = "http://localhost/book"; +const API_BASE_URL = "http://localhost/school"; // #### 改改改 #### + +// 搜索功能 +function search(name) { + axios.get(API_BASE_URL + `?schoolName=${name}`).then(res => { + data = res.data; + renderTable(data); + }); +} + +// 渲染表格数据 # 修改item.后面的属性名称 +function renderTable(data) { + if (data.length === 0) return alert("无内容"); + tbody.innerHTML = data.map(item => { + return ` + `; + }).join(''); + + // 添加事件监听器(事件委托) + tbody.addEventListener('click', handleTableClick); +} + +// 更新,先回显要被修改的旧数据 +function update(id) { + axios.get(API_BASE_URL + `/${id}`).then(res => { + const data = res.data; + showOrCloseModal(); + form.reset(); + + // ########以下内容要修改########## + + // formTitle.innerText = '更新图书'; + formTitle.innerText = '更新学校'; + schoolId.value = data.schoolId; + schoolName.value = data.schoolName; + schoolAddress.value = data.schoolAddress; + schoolPhone.value = data.schoolPhone; + + // ######以上内容要修改##### + }); +} + + +// 处理表格点击事件 +function handleTableClick(e) { + if (e.target.classList.contains('delete-btn')) { + deleteItem(e.target.closest('tr').dataset.id); + } else if (e.target.classList.contains('update-btn')) { + update(e.target.closest('tr').dataset.id); + } +} + +// 开关浮层 +function showOrCloseModal(show = true) { + if (show) { + modal.style.display = 'block'; + } else { + modal.style.display = 'none'; + } + + schoolId.value = null; // 重置当前编辑的图书ID + +} + +// 获取列表 +function fetch() { + axios.get(API_BASE_URL).then(res => { + console.log(res) + data = res.data; + renderTable(data); + }); + +} + +// 根据id删除 +function deleteItem(id) { + if (!confirm("真的要删除吗?")) return; + axios.delete(API_BASE_URL + `/${id}`).then(res => { + alert("删除成功!") + fetch(); + }); +} + + +// 点击保存按钮:添加或更新图书 +function save() { + + // 获取表单项的值######改改##### + + // 非空判断 + if (!schoolName.value || !schoolAddress.value || !schoolPhone.value) { + alert("所有字段都必须填写!"); + return; + } + // 表单项的值,封装成一个对象 + const item = { + schoolId: schoolId.value || null, // 如果为空,则视为添加新图书 + schoolName: schoolName.value, + schoolAddress: schoolAddress.value, + schoolPhone: schoolPhone.value + }; + + // 根据编号判断是添加还是更新 + if (schoolId.value!='') { + axios.put(API_BASE_URL, item).then(res => { + alert("修改成功") + fetch(); + showOrCloseModal(false); + }) + } else { + axios.post(API_BASE_URL, item).then(res => { + console.log(item) + alert("添加成功") + fetch(); + showOrCloseModal(false); + }) + } + +} + + +// 初始化事件监听器 +function init() { + addBtn.addEventListener('click', () => { + form.reset(); + // formTitle.innerText = '添加图书'; + formTitle.innerText = '添加学校'; + showOrCloseModal(); + }); + + closeModalBtn.addEventListener('click', () => { + schoolId.value = null; //### 初始化id + showOrCloseModal(false); + }); + + form.addEventListener('submit', (e) => { + e.preventDefault(); + save(); + }); + + searchBox.addEventListener('keyup', (e) => { + if (e.key === "Enter") { + search(searchBox.value); + searchBox.value = ''; + } + }); + + // 初始加载列表 + fetch(); +} + +// 执行初始化函数 +init(); diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/JdbcConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/JdbcConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..38f06e9361e3d7f2cea798f07c5af6ec242d1e6f GIT binary patch literal 890 zcmah{T~8B16g^W)yOwIPqI~!Ts930UqM{FAOti!Y)1VP0@o~C4)Tz5Wb#{vIuk@uP zn)n0!QO0|>1Y$zsKFs|(_uMmg_V=G3zW{7NR&Wuw%D7!Y0k;AyvRw+W%=S)zyKL_T zSYdm=j7Ax&0;OjrHU7E4L}PVNpxCyN7N~Vhs&|G-SG)JB8&js${item.schoolId} +${item.schoolName} +${item.schoolAddress} +${item.schoolPhone} ++ + + +f5%*%3ME%p72q~`f|!_=EZ@0rYywijt?z4FGUByGK8T~B5MXVTujQ;Gg+ z-Dj5S^`V#Q6e?e8m9pTm*jI+{Tsyl kr11;M&8Q4^(eyfU0s0pm_ zYW{x>+71C*$q}ul74} BLs?fGb63t*>I8{nEon zk2jt?t)j)z)pOrPV480uW0m&gn{Ho+p6D~}$Mf2;%Ca3=74 3EamYQkD5tdM;|B=4}1n+{*X^JFSL3VQO7~*?gzD#E+PgYPTzd8os z3T7xG8MsCy+}tNyAiMk%g^$OW=rrra5hk1U(g@{dJs9CavtAits`-sj1u*jhaf74; rB!Xqk5Yqxx7HJkwV{T$RnHErO7IQRpp0ccJfouWS^Yg}O_9pNbDQeP5 literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/MybatisConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/MybatisConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..598d31bd717ba274ee178429758f15b5e0ef29be GIT binary patch literal 889 zcmb7?O>Yx15Qbmpvn*-S7FwE?kCszfN`2v0ghYdS+JHnL65`}+-Qcoo2d`6_e+3sR zfy58sM |qyu4 An=2VZRd}ixY9msm`AWC;Db$6S=n)8$04zLE-t> zDm~);Sqy?lhZl_uE3<(N+y8@XKc8r)GC5GWBBhVDHjV@tO+xPnP%+by6`6c*>{~C~ z$y3M0#i!g$^y3wp4pg|oKW=8%i~l*=-^AQWD~+3uCGVPSY_!yla5HuMc4|+I$I|wb zaCY@Xq!U_PM7!C|LZyK^<`_Evdch5BV3T3>vh6Y~cojSqw4!IjW0^RH`CPhR>ttwO zw&wvhQKkRVKP50f8`&!qaq^6Ob^8qLV<<;tYa!XdReEm}ACRA?h@puVL45N|@@4X^ zFDSh_L%Fwe?-MFJA1GCV$25yFowh*DivhQBo-1(FOtnSA&e2p&EK%n*>huF#51i#- TS3=fTZ&18S)%I(!9BV%S32)|m literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..5ec0607c5f56a4a60e8b4a2def3aded7a950678b GIT binary patch literal 591 zcmb7B%SuBr5IyNr+iD*^s_wc|7tKc8D1sCOr7BqI##L^b)@W~1a&xPGmMg)9AK*uc zbFZazBWMCMIWswDCX>&v_YVLE*eW55jUqOSXfhOzwbA~BA-lWRXUKKzKrvLi+Ni5I z43xVS!I&bAu9afk7fvU57R>p39WiWor46~XW~fKJH*wmGIw?3}DD`aYq&m}yNPRKc zeh^bZ gY9Be5p2{tcfgptS%1 literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringMvcConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/SpringMvcConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..42c04c91aba8d4b7575ae93f082bd26cc41f8c08 GIT binary patch literal 1284 zcmb_c+invv5IxRq!?H9bEtiHuDdm!+(0xI?1R Tok%Ic-@pxvAXU>fM{l}MY0Pf?Si#)D6xR%F?i|bg;cZ_b}7+wmRIrk>V3xH!u&Z>#o0uBhL}_M7I%uT~wDJycL- zV7`NO4|napbn XR(gD*wUn z^lQg6uytB>B!D!($7-=p+CHlot8nP6U^qknMv5dgnO2W9pCluht$qgkn3&JenoABn z%+cN(I-r1g(iqO8NUIHQB1>? 2SxS3gG5IY6KLN+leo6oU literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/WebConfig.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/config/WebConfig.class" new file mode 100644 index 0000000000000000000000000000000000000000..1ac063d11c651c156745d862db8ae380201946db GIT binary patch literal 830 zcmaKqO;6k~5Qbl~VY7tgD_uVO$qhK*3%4R9v{j`_3x@_#Rqe$|O>mpFBgeZ){Z;L$ zQl<6>^hY5k$rhGf+8pfhc;=aR#`$yo^EZG4YzJsz)5n&N$3C9;c-q1 =#PoS$^o2_K zI~jK?>m@@cmF}%Eu6A@YQ52HmJ3G4{dY{Em@J#5GSAL3~i&UzG8(1p0{y@m#-VsHu z6El)_n8`_Ocz1Im@?7bZYOUS}Mb46+FhOJnHj%GY+1%o-=>1Yw8*>O~2on;i_E?`$ zUXtq07`CQvPKL?f%jG*zU7vw*8pBx5tpJ9P#-_Ze=oeP><(08t_?3)#QFqOYL7p4y z_;Fk~D-w6CwQ<5Jqw9jNRFMmpTuM8d(;IqWB{KC@T5Q9ozoGm*(8v+cI!`A~JEMJe z?+4g-GG@@GwOKo{Kz4g%FJg&K9+t5}QDyQ$1p@-_7iQi!!bbFsyyJw{7$HDS2& q%Kh$%ST0O_3U-TS*lUncWZeB<>HJ$@AJF_$Qd7e9W?&i;be)z0-$Y`3kIw45_rDtQ5k z);ltqxvy@i>9V7j(iz=$xGp?z=9%OEjBaR4<&CUn-BOtbS7*$eT3S;rU5@?9uv65D zbj+ VmNqU=+QXlDUyJ*V8vNL$es%wSa==b62&Zqr8YOGb6f2 OP`?Q~_(K`adly2fWk9!IISCp^m6g7)4rK=2khgePZfcvs>wsX}{bL*6d zYe=+c*Ky-H)wm|J;O!`?cG2@R5=U`FmRA-QuQ3ZL6ic(qC0cY>BW~O=J#P>=STU=5 z#}G)Ynq@1eUDu^K_IaAD8Qz2}ua#j3+1Cp7Qrk||1bcn(R#$DcdlE}mE +N-I!8v2!~@RD>#Bd1+U|c7`7B_ r)9h^aHu8&kMFs%Udl@m3^h_ZvPTdz3ckcc*?h&b996J}5BZg=!Fj6U z_q3(H1$t`B7Ys)$$hdJ@v#oI`4Q3(Oa>INf<-_ldX3*-!gRHJj;d@Hs+3s0ixfw0j z;~0N&^z#>sKuDep`vH!k>|bHu$)4wg4jgrV)sPPMiPZNH&k+)M%25cfvXwhPq#?G7 zw+gQj9XQVa5KdHahdCDV;C<99d>i6iQlgGMM@Og$cF=|G_m=sv+<=o9A(R(j)D6(Z z@i6~WA4AxDFDR;0exNx&P?sC%M}(gv(j4n}U97HZtS*eZu_QT_7!z)cG~VP~OfvJ9 zTiI!xX&o>c!V|8l=WL{{fRn^;5s;Uq1(mVpXcKkOlGXB(IFAdAP&xaH%&}V5CATcz z#uicH%~2-XiZb0Ch1Z?rNU^1vj$j{2J;T25_)yPT(#7|57V)dN!ZlKbZ?hND3z~qa zuSUW4{3p;nuKGZi*h`^CQ)53s1gGR_G+HG#>R+n8$ H%%|)l#GD^XeTzu=$=Gj5 ze1k~Gld)fsSUi>5MbaJeL0LM*=2Ce44 in2U0x$_xKb>hFE=w#^QgWD~83t(I3MS|KbAmm4v15 z`juQHsAMN1OK8-%my1VE<-E9*8OU7fA%*mAAM$JVVL}ddPfdqsTnYxer-~#X-aYmh zvGHAW-JKZ>E 2yXb3_UcH6~{WR;D2;n0lhH%@x SmHo`+4#)Hy-v>Uyr@+4eYBov$ literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/entity/School.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/entity/School.class" new file mode 100644 index 0000000000000000000000000000000000000000..2e2c461f1f4ef60bb2eb46803bfb09b86bb6cbec GIT binary patch literal 3014 zcma)8-*XdH6#h2ZO}5D vMkDSJ%#=FOr#sKd@kx2N!&~!gC!GR%6?0huS|Sx;mnoz``Gxf$SlRl9k^ZZ$*?jk;fN z5O()m)mxo*T)*KzoK}du{J^z!T2`Hk`=GJb;E&F@uIJl+!*ltY{9MypUH0xxUvylj zW&2J|;_XDFlG;-oACy+E %-9x9 ($%t)Mx7X^b4~(nVD)Z+xB-lUeO`ko} z7hE>fIw4r0A-u};J=KduIN5L;{wWRRVr47oJF!S%*rZ%ji{5&x>Rf0@W2RNZ9g+68 zP{62#0~oXLiY%{UOvCV&?zC_k?^<{b2Q3saZsC}yC6Oj%IfH{5_C+7m+4V-V=Cmwa z!YAwzb#GDCuTq<}P=h1OH*B=YgWbB$(z&gNOwp8Wn*y$A(0K7hjMKS$vFaJJXWzf? zxP13hgF1E#dtsz}QDbcU|2@Vbj-vgXVme~N9Hp3$7wqIO*hwMxEHt5u=ZC0GQ`5K` zrC*>u3EW=inh1<(yg}Jg4mgZAsl64RzRg_|$_D_&p7Jn;E|9e?5GytSC>{mMYzxGy z4*=4mK-q19CNUKPmAS_x?b3k_Xg^1CO9n`Ll}AXD5GYm9B6J-g--`Dx=EMeKJH?cW zMls(Rj2Yi4rgTRX^XOnqeW#exX;Dl*OqIKKf%_0yd^Az|35Nb;;!hZlV8owH`~hQr zvb2drpi)Rq^8b%=M#Ws9W|sA-zmP8I&oTTM)>J{?#8BHkRW|67Dklnt_#~bq{}`Eq zQAqSSrOSevE}Mm )c6tqW_XWzj^GEp&&LtNQ8e%Y zZE>zuoS>xRIxgTtN(PoVtICuTc*wUmLn(>x`ASbxGBL|LCy_~-{~(*hDeDFHCh-yf znc55NSK?5w*w mh1%g1R-zdW=`s} zW4W2S6z9%tP!&;G6EipQ7|E$kSb;rN*5#m}hbN{~N*$%kMsUO;1wS$iMsPGXnDM+ 0?~r&&(seScX(SVx_LA;h zJtl?`7;T5PkKS(z-4Z=+UC*eM&JjlWRZxuLE_WHcr+-7{<}+mTyEc&%Qa3T2&nuY? znal51a!TYqN=}PB!etYCqk~P=SIz9xA!Yqly@W~_LzBC~7)DFaurC;HrAbbs($ogx zrGmbJEf3xdhTU=Xt4{ZfhQp3X!AD1$Z&W_pWLP8_2YQ4FetE+vx}P9M5uGqY+s^6B Jyds9V{{S=T^Hcx; literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/mapper/SchoolMapper.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/mapper/SchoolMapper.class" new file mode 100644 index 0000000000000000000000000000000000000000..38ad082538f7e13fc5190cf32b3b50a5298e8609 GIT binary patch literal 1359 zcma)6+iuf95FM8^p(T{I&>PpKw8TLbMu-;_iWCG$mcm6??Mt6F_L6MzCGxI|DwKD= zi3dJ_k3x)hZO2iK+=s~8IdkTmnaS>-zrTJ1zzf)I0cpWQ16Bp|nJfFg@3`YA@`VBG zW_NH(A1?pp&cWY2&lhmS%klb9LMxsdQ`;6{PPLdoU1r3>|5BWveNg0X-dbHRr` z>xW?^spL_JGLHvQJhJG7x?^VXA%=xTX90jA4<*GwLTOyP>U;C**4!1w<&nh;Qq- zmVI-szaMFUls!{-;?r ?}xUX z#-{rnbiY~U-u4hM?QX?b4R~IwXnW+4Jj$eOZ<@+@I8Mpthm^`RP{yv`##=?lLeF%e z@($*@t n6tqiWU;>I#Y~9&_<0 h$&ALr2J5dt5>^=AKa;)ive4vvFi=U=9zP>4)j7@E&7d}wb?80jZUljFr zs2lfbc#3aJ(*Oe&@Yw-qHVn7|4LmL4X#twh!tV;=SMj%W0)~KP%(({bBIkNV&I;z- xfK}vN eRWrm%FvY2fiee^Uw`Zyey(r*Rm|)j=5L= zp#3#{(lvdaGfcwyv}0px UU{$xK|Dq#4dkeq?Q)HUVx3bRv5Uo73adf{xW^VCc~ufxgGE1&``&s(QBe bvGZLIs6WImKsdsl#eE!D92+F&p;ZQ-mMWF9 literal 0 HcmV?d00001 diff --git "a/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/service/impl/SchoolServiceImpl.class" "b/\350\224\241\347\216\256\351\223\255/20250107 \347\273\274\345\220\210\347\273\203\344\271\240(\344\272\224)/MySchool/target/classes/com/service/impl/SchoolServiceImpl.class" new file mode 100644 index 0000000000000000000000000000000000000000..6f2de710e6ca8c6a8b29c036890c6196c63cd5d5 GIT binary patch literal 2896 zcma)8ZF3V<6n<{Hd1<<(ZJ>qPY6YsK31wAKDJf`M0i$U_f>rR1ZL%~=lij-6!1Q1E z*&iTZ_<%E72Ay&Ai_Z9)RDAB wPF z17&G$O7pQa>(YE8&8KOM<5m*4(+vGgn$P9T7t(y0#8+t?!mSkUNN-BBkwQiKY7$lw zcLnrjrRKWzRdajW@&qPJ6}MqDf+wRKSt@YtM$7T-hP7@t?Txy%