大数据方向《JavaEE》项目案例【一定要收藏】
2021/9/21 20:12:09
本文主要是介绍大数据方向《JavaEE》项目案例【一定要收藏】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、项目的需求
- 点击全选/全不选,选中或者全部不选中
- 部门名称为下拉框,动态加载,金额在数量和单价输入后自动生成,非空验证姓名不能重复,年龄必须是数字, 否则不能提交,电影状态如果是未上映,后面有一个上映的选项。
- 添加成功,跳转到查询所有
- 如果没有选中一条数据,点击批量删除提示“至少选择一条数据”
- 选中多条数据或者全部选中,点击批量删除提示“确认删除吗”,如果确认就去后台删除,点击取消不删除批量删除后展示所有
- 搜索 对姓名,大于电影起始时间,小于结束时间, 部门 实现 搜索,分页不丢失数据
- 编辑点击编辑跳转到修改界面,回显成功, 点击提交修改成功
二、设计技术点:
基于SpringMVC + Spring + MyBatis + jQuery + JqueryEasyUI+ Mysql数据库完成查询、JQuery验证、分页等功能。
三.实现的效果
建表建库:
use q1; create table dept8( did int primary key , name varchar(20) ) drop table emp8 create table emp8 ( eid int primary key auto_increment, name varchar(20), esex varchar(20), eage int , eimgurl varchar(255), ebirth date, did int, ehobby varchar(20), shu int, price int, zong int, flag int, foreign key (did) references dept8 (did) ) insert into dept8 (did, name) values (1,'产品部'), (2,'客服部'), (3,'市场部'); insert into emp8 (eid, name, esex, eage, eimgurl, ebirth, did, ehobby, shu, price, zong,flag) values (1,'张三','男',21,'','2020-10-10',1,'学习,看小说',20,2,null,1), (2,'李四','男',21,'','2000-10-10',2,'学习,看小说',10,2,null,0), (3,'王五','男',21,'','2010-10-10',3,'学习,运动',13,2,null,0), (4,'赵六','女',21,'','2020-10-10',2,'学习,看小说',20,2,null,1), (5,'周七','男',21,'','1980-10-10',1,'学习,看小说',60,2,null,0), (6,'周七','男',21,'','1980-10-10',1,'学习,看小说',60,2,null,1); select e.*, d.name dname from emp8 e,dept8 d where e.did=d.did ; select* from emp8 select e.*, d.name dname from emp8 e,dept8 d where e.did=d.did group by d.did
打开开发工具:
搭建ssm环境以及配置
controller:代码:
package com.jiyun.ssm.controller; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.jiyun.ssm.pojo.De; import com.jiyun.ssm.pojo.Em; import com.jiyun.ssm.service.DeService; import com.jiyun.ssm.service.EmService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.lang.reflect.Array; import java.util.Arrays; import java.util.List; @Controller public class servlet { @Autowired private DeService d; @Autowired private EmService b; //展示所有 @RequestMapping("/show") public String show(Model mo, @RequestParam(value = "pageNum",required =false,defaultValue = "1")Integer pageNum) { PageHelper.startPage (pageNum,2); int qian=0; int shu1=0; List<Em> list = b.show (); for (Em em : list) { qian=em.getShu ()*em.getPrice ()+qian; shu1=em.getShu ()+shu1; } mo.addAttribute ("qian",qian ); mo.addAttribute ("shu1",shu1 ); PageInfo<Em> p = new PageInfo<> (list); mo.addAttribute ("p", p); mo.addAttribute ("a1", "a1"); return "show"; } //修改的回显 @RequestMapping("/xiu") public String xiu(Model mo,Em s,String eid) { Em a = b.getid(eid); List<De> list = d.show (); mo.addAttribute ("list", list); mo.addAttribute ("a", a); return "up"; } //电影的状态 @RequestMapping("/xiu2") public String xiu2(Model mo,Em s,String eid,String flag) { b.getid1(eid,flag); return "redirect:show"; } //统计部门的个数 @RequestMapping("/ji") public String ji(Model mo,Em s) { List<Em> list = b.coun(); mo.addAttribute ("list", list); return "fan"; } //模糊查询 @RequestMapping("/like") public String like(Model mo,String name,String start,String end,String esex,Integer did,@RequestParam(value ="pageNum",required = false,defaultValue = "1")Integer pageNum) { PageHelper.startPage (pageNum,2); List<Em> list = b.like(name,start,end,esex,did); PageInfo<Em> p = new PageInfo<> (list); List<De> list1 = d.show (); mo.addAttribute ("p", p); mo.addAttribute ("list1",list1); mo.addAttribute ("a2", "a2"); return "show"; } @RequestMapping("/like1") public String like1(Model mo,String name,@RequestParam(value ="pageNum",required = false,defaultValue = "1")Integer pageNum) { PageHelper.startPage (pageNum,2); List<Em> list = b.like1(name); PageInfo<Em> p = new PageInfo<> (list); List<De> list1 = d.show (); mo.addAttribute ("p", p); mo.addAttribute ("list1",list1); mo.addAttribute ("a2", "a2"); return "show"; } //部门下拉框 @RequestMapping("/add") public String add(Model mo) { List<De> list = d.show (); mo.addAttribute ("list",list); return "add"; } //ajax 验证 @RequestMapping("/aj") @ResponseBody public String aj(String name) { long c=b.coiui(name); if(c>0){ return "true"; }else { return "false"; } } // 多选删除 @RequestMapping("/de") public String de(Model mo,String ids) { String[] id = ids.split (","); b.shan(id); return "redirect:show"; } // 单选删除 @RequestMapping("/shan1") public String shan1(Model mo,String eid) { b.shan1(eid); return "redirect:show"; } // 添加图片 @RequestMapping("/add1") public String add(Model mo, MultipartFile img, Em a, HttpServletRequest request) throws IOException { if (img.getSize () > 0) { String s = Arrays.toString (request.getParameterValues ("ehobby")); a.setEhobby (s); String filename = img.getOriginalFilename (); String realPath = request.getSession ().getServletContext ().getRealPath ("/"); img.transferTo (new File (realPath, filename)); a.setEimgurl (filename); } b.add (a); return "redirect:show"; } // 修改回显后的添加 @RequestMapping("/set1") public String set1(Model mo, MultipartFile img, Em a, HttpServletRequest request) throws IOException { if (img.getSize () > 0) { String filename = img.getOriginalFilename (); String realPath = request.getSession ().getServletContext ().getRealPath ("/"); img.transferTo (new File (realPath, filename)); a.setEimgurl (filename); } b.set1 (a); return "redirect:show"; } }
servuce:
package com.jiyun.ssm.service; import com.jiyun.ssm.pojo.Em; import java.util.List; public interface EmService { List<Em> show(); void add (Em a); void set1 (Em a); void shan(String[] id); List<Em> like(String name, String start, String end, String esex, Integer did); long coiui(String name); Em getid(String eid); void shan1(String eid); List<Em> coun(); void getid1(String eid, String flag); List<Em> like1(String name); }
package com.jiyun.ssm.service.Impl; import com.jiyun.ssm.dao.EmDao; import com.jiyun.ssm.pojo.Em; import com.jiyun.ssm.service.EmService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class EmServiceIMpl implements EmService { @Autowired private EmDao b; @Override public List<Em> show() { return b.show (); } @Override public void add(Em a) { b.add (a); } @Override public void set1(Em a) { b.set1 (a); } @Override public void shan(String[] id) { for (String eid : id) { b.shan(eid); } } @Override public List<Em> like(String name, String start, String end, String esex, Integer did) { return b.like(name,start,end,esex,did); } @Override public long coiui(String name) { return b.oui(name); } @Override public Em getid(String eid) { return b.get(eid); } @Override public void shan1(String eid) { b.shan12(eid); } @Override public List<Em> coun() { return b.ouyc(); } @Override public void getid1(String eid, String flag) { b.getid(eid,flag); } @Override public List<Em> like1(String name) { return b.like1(name); } }
dao层接口:
package com.jiyun.ssm.dao; import com.jiyun.ssm.pojo.Em; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.util.List; public interface EmDao { List<Em> show(); void add (Em a); void set1 (Em a); @Delete ("delete from emp8 where eid=#{eid}") void shan(@Param ("eid") String eid); List<Em> like(@Param ("name") String name,@Param ("start") String start,@Param ("end") String end, @Param ("esex")String esex, @Param ("did")Integer did); @Select ("select count(*) from emp8 where name=#{name}") long oui(@Param ("name") String name); @Select ("select * from emp8 where eid=#{eid} ") Em get(@Param ("eid") String eid); @Delete ("delete from emp8 where eid=#{eid}") void shan12(@Param ("eid") String eid); @Select ("select d.name dname ,count(e.eid) count1 from emp8 e,dept8 d where e.did=d.did group by d.did") List<Em> ouyc(); @Update (" update emp8 set flag=1 where eid=#{eid} ") void getid( @Param ("eid") String eid, @Param ("flag")String flag); List<Em> like1(@Param ("name") String name); }
xml代码:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--表示这个mapper中可以写那个接口中方法的sql语句--> <mapper namespace="com.jiyun.ssm.dao.EmDao"> <!--id必须和接口中的某个方法名一样 resultType id属性对应的方法的返回值 --> <select id="show" resultType="Em" > select e.*,d.name dname from emp8 e,dept8 d where e.did=d.did </select> <select id="like1" resultType="Em" > select e.*,d.name dname from emp8 e,dept8 d where e.did=d.did and e.name like '%${name}%' </select> <select id="like" resultType="Em" > select e.*,d.name dname from emp8 e,dept8 d where e.did=d.did <if test="name!=null and name!=''"> and e.name like '%${name}%' </if> <if test="start!=null and start!=''"> and e.ebirth >=#{start} </if> <if test="end!=null and end!=''"> and e.ebirth <=#{end} </if> <if test="esex!=null and esex!=''"> and e.esex = '${esex}' </if> <if test="did!=null"> and d.did=#{did} </if> </select> <insert id="add" parameterType="Em"> insert into emp8 ( name, esex, eage, eimgurl, ebirth, did, ehobby, shu, price, zong ,flag) values (#{name},#{esex},#{eage},#{eimgurl},#{ebirth},#{did},#{ehobby},#{shu},#{price},#{zong},#{flag}) </insert> <update id="set1" parameterType="Em"> update emp8 set name= #{name}, esex=#{esex}, eage=#{eage}, eimgurl=#{eimgurl}, ebirth=#{ebirth}, did=#{did}, ehobby=#{ehobby}, shu=#{shu}, price=#{price}, zong=#{zong},flag=#{flag} where eid=#{eid} </update> </mapper>
前端展示所有:
<%-- Created by IntelliJ IDEA. User: dell Date: 2021/9/18 Time: 21:58 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <html> <head> <title>Title</title> <script src="/js/jquery-1.9.1.min.js"></script> <script> <%--多选删除--%> $(function () { $(".e").click(function () { if($(".q:checked").length<1){ alert("至少选中一条") }else { var str=""; $(".q:checked").each(function () { var id=$(this).val(); str+=id+"," }) if(confirm('是否删除?')){ location.href=("/de?ids"+str) } } }) }) </script> </head> <h1 align="center" ><font color="aqua">综合案例</font></h1> <body> <hr color="red"> <form action="/like" method="post" placeholder="根据名字查询"> 姓名 <input type="text" name="name"> 电影开始时间:<input type="text" name="start" placeholder="yyyy-MM-dd"> 电影结束时间<input type="text" name="end" placeholder="yyyy-MM-dd"> <%--<input type="text" name="esex">--%> 性别 <select name="esex"> <option value="">-请选择--</option> <option value="男">男</option> <option value="女">女</option> </select> <select name="did"> <option value="">-请选择--</option> <c:forEach var="y" items="${list1}"> <option value="${y.did}">${y.name}</option> </c:forEach> </select> <input type="submit" value="搜索"> </form> <hr color="red"> <form action="/like1" method="post"> <input type="text" name="name" placeholder="根据名字查询"> <input type="submit" value="搜索"> </form> <hr color="bule"> <input type="button" value="删除" class="e"> <input type="button" value="统计" onclick="e3()"> <input type="button" value="增加" onclick="w2()"> 总金额为:${qian} 总票数:${shu1} <table cellpadding="0" border="1" width="800" height="300"> <tr> <td><input type="checkbox" onclick="fan(this)"></td> <td>编号</td> <td>姓名</td> <td>性别</td> <td>年龄</td> <td>头像</td> <td>生日</td> <td>部门</td> <td>爱好</td> <td>票数</td> <td>单价</td> <td>总价</td> <td>状态</td> <td>操作</td> </tr> <c:forEach items="${p.list}" var="a"> <tr> <td><input type="checkbox" class="q" value="${a.eid}"></td> <td>${a.eid}</td> <td>${a.name}</td> <td>${a.esex}</td> <td>${a.eage}</td> <td><img src="/${a.eimgurl}" alt="" width="50" height="50"></td> <td><fmt:formatDate value="${a.ebirth}" pattern="yyyy-MM-dd"/> </td> <td>${a.dname}</td> <td>${a.ehobby}</td> <td>${a.shu}</td> <td>${a.price}</td> <td>${a.shu*a.price}</td> <td> <c:if test="${a.flag==0}"> 未上映 </c:if> <c:if test="${a.flag==1}"> 已上映 </c:if> </td> <td> <c:if test="${a.flag==0}"> <a href="/xiu2?eid=${a.eid}&flag=1">已上映</a> </c:if> <a href="/xiu?eid=${a.eid}">修改</a> <a href="/shan1?eid=${a.eid}">删除</a></td> </tr> </c:forEach> </table> <%--查询所有--%> <c:if test="${a1=='a1'}"> <a href="/show?pageNum=${p.firstPage}">首页</a> <c:if test="${p.isFirstPage==false}"> <a href="${pageContext.request.contextPath}/show?pageNum=${p.prePage}">上一页</a> </c:if> <c:forEach items="${p.navigatepageNums}" var="i"> <c:choose> <c:when test="${p.pageNum==i}"> <span style="color: red;">${i}</span> </c:when> <c:otherwise> <a href="${pageContext.request.contextPath}/show?pageNum=${i}">${i}</a> </c:otherwise> </c:choose> </c:forEach> <c:if test="${p.isLastPage==false}"> <a href="${pageContext.request.contextPath}/show?pageNum=${p.nextPage}">下一页</a> </c:if> <a href="${pageContext.request.contextPath}/show?pageNum=${p.lastPage}">尾页</a> 第${p.pageNum}页/共${p.lastPage}页 共${p.total}条 </c:if> <%--模糊查询--%> <c:if test="${a2=='a2'}"> <a href="/like?pageNum=${p.firstPage}">首页</a> <c:if test="${p.isFirstPage==false}"> <a href="${pageContext.request.contextPath}/like?pageNum=${p.prePage}">上一页</a> </c:if> <c:forEach items="${p.navigatepageNums}" var="i"> <c:choose> <c:when test="${p.pageNum==i}"> <span style="color: red;">${i}</span> </c:when> <c:otherwise> <a href="${pageContext.request.contextPath}/like?pageNum=${i}">${i}</a> </c:otherwise> </c:choose> </c:forEach> <c:if test="${p.isLastPage==false}"> <a href="${pageContext.request.contextPath}/like?pageNum=${p.nextPage}">下一页</a> </c:if> <a href="${pageContext.request.contextPath}/like?pageNum=${p.lastPage}">尾页</a> 第${p.pageNum}页/共${p.lastPage}页 共${p.total}条 </c:if> </body> <script> <%--统计--%> function e3() { location.href="/ji" } //全选全不选 function fan(w) { $(".q").prop("checked",w.checked) } //增加 function w2() { location.href="/add" } </script> </html>
add的添加:
<%-- Created by IntelliJ IDEA. User: dell Date: 2021/9/18 Time: 22:16 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <html> <head> <title>Title</title> <script src="/js/jquery-1.9.1.min.js"></script> <script> </script> </head> <body> <form action="/add1" method="post" enctype="multipart/form-data" onsubmit="return go()"> 姓名 <input type="text" name="name" class="e" onblur="w2()"><span class="t"></span> <br> 性别 <input type="radio" name="esex" value="男"> 男 <input type="radio" name="esex" value="女">女 <br> 年龄 <input type="text" name="eage" class="h" onblur="w10()" > <span class="z"></span><br> 头像 <input type="file" name="img"> <br> 生日 <input type="text" name="ebirth"> <br> 部门 <select name="did"> <option>-请选择--</option> <c:forEach var="y" items="${list}"> <option value="${y.did}">${y.name}</option> </c:forEach> </select> <br> 爱好 <input type="checkbox" name="ehobby" value="学习"> 学习 <input type="checkbox" name="ehobby" value="看电影"> 看电影 <input type="checkbox" name="ehobby" value="运动"> 运动 <input type="checkbox" name="ehobby" value="看小说"> 看小说 <br> 票数 <input type="text" name="shu" id="e5"> <br> 单价 <input type="text" name="price" id="e6" onblur="w9()"> <br> 总价 <input type="text" name="zong" id="e7"> <br> <input type="radio" name="flag" value="0"> 未上映 <input type="radio" name="flag" value="1"> 已上映 <br> <input type="submit" value="增加"> <br> </form> </body> <script> var f=false; function w10() { var d=$(".h").val(); var rep=/^[0-9]*$/; if(rep.test(d)){ $(".z").html("") }else { $(".z").html("必须为数字") $(".z").css("color","red"); f=true } } function w2() { var n=$(".e").val(); if(n==""|| n==null){ $(".t").html("名字不能为空"); $(".t").css("color","red"); f=true; }else { $.post("aj",{"name":n},function (data) { if(data=="true"){ $(".t").html("名字不能重复"); $(".t").css("color","red"); f=true; }else { $(".t").html("名字可用"); $(".t").css("color","red"); f=false; } },"text") } } function go() { if(f==true){ return false; } else { return true; } } function w9() { var e5=$("#e5").val(); var e6=$("#e6").val(); $("#e7").val(e5*e6); } </script> </html>
修改的回显
<%-- Created by IntelliJ IDEA. User: dell Date: 2021/9/18 Time: 22:16 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <html> <head> <title>Title</title> <script src="/js/jquery-1.9.1.min.js"></script> <script> </script> </head> <body> <form action="/set1" method="post" enctype="multipart/form-data" onsubmit="return go()"> <input type="hidden" name="eid" value="${a.eid}"> 姓名 <input type="text" name="name" value="${a.name}" class="e" onblur="w2()"><span class="t"></span> <br> 性别 <input type="radio" name="esex" value="男" <c:if test="${a.esex=='男'}">checked</c:if>> 男 <input type="radio" name="esex" value="女" <c:if test="${a.esex=='女'}">checked</c:if>>女 <br> 年龄 <input type="text" name="eage" value="${a.eage}" class="h" onblur="w10()" > <span class="z"></span><br> 头像 <input type="hidden" name="eimgurl" value="${a.eimgurl}"> <br> <img src="/${a.eimgurl}" alt="" width="50" height="50"> <br> 头像 <input type="file" name="img" > <br> 生日 <input type="text" name="ebirth" value="<fmt:formatDate value='${a.ebirth}' pattern='yyyy-MM-dd'/> "> <br> 部门 <select name="did"> <option>-请选择--</option> <c:forEach var="y" items="${list}"> <option value="${y.did}"<c:if test="${a.did==y.did}">selected</c:if>>${y.name}</option> </c:forEach> </select> <br> 爱好 <input type="checkbox" name="ehobby" value="学习" <c:if test="${fn:contains(a.ehobby, '学习')}">checked</c:if> > 学习 <input type="checkbox" name="ehobby" value="看电影" <c:if test="${fn:contains(a.ehobby, '看电影')}">checked</c:if> > 看电影 <input type="checkbox" name="ehobby" value="运动" <c:if test="${fn:contains(a.ehobby, '运动')}">checked</c:if> > 运动 <input type="checkbox" name="ehobby" value="看小说" <c:if test="${fn:contains(a.ehobby, '看小说')}">checked</c:if> > 看小说 <br> 票数 <input type="text" name="shu" id="e5" value="${a.shu}"> <br> 单价 <input type="text" name="price" id="e6" value="${a.price}" onblur="w9()"> <br> 总价 <input type="text" name="zong" id="e7" value="${a.zong}"> <br> <input type="radio" name="flag" value="0" <c:if test="${a.flag==0}">checked</c:if>> 未上映 <input type="radio" name="flag" value="1"<c:if test="${a.flag==1}">checked</c:if>> 已上映 <br> <input type="submit" value="增加"> <br> </form> </body> <script> var f=false; function w10() { var d=$(".h").val(); var rep=/^[0-9]*$/; if(rep.test(d)){ $(".z").html("") }else { $(".z").html("必须为数字") $(".z").css("color","red"); f=true } } function w2() { var n=$(".e").val(); if(n==""|| n==null){ $(".t").html("名字不能为空"); $(".t").css("color","red"); f=true; }else { $.post("aj",{"name":n},function (data) { if(data=="true"){ $(".t").html("名字不能重复"); $(".t").css("color","red"); f=true; }else { $(".t").html("名字可用"); $(".t").css("color","red"); f=false; } },"text") } } function go() { if(f==true){ return false; } else { return true; } } function w9() { var e5=$("#e5").val(); var e6=$("#e6").val(); $("#e7").val(e5*e6); } </script> </html>
统计:
<%-- Created by IntelliJ IDEA. User: dell Date: 2021/9/19 Time: 0:14 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <html> <head> <title>Title</title> <script> </script> </head> <body> <table cellpadding="0" border="1" width="600" height="300"> <tr> <td>部门</td> <td>个数</td> </tr> <c:forEach items="${list}" var="a"> <tr> <td>${a.dname}</td> <td>${a.count1}</td> </tr> </c:forEach> </table> </body> <script> </script> </html>
增加效果:
修改回显
如果我的博客对你有帮助,也是你所喜欢的内容,请“点赞” “评论” “收藏” 一键三连,就是对我最大的支持!
这篇关于大数据方向《JavaEE》项目案例【一定要收藏】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南