项目结构common---parent---admin1的准备工作。删除父项目中的src(包括启动类)文件,删除普通项目中的启动类;2、将新扩展的子项目admin相关的资源添加到加载,具体步骤如下:在src--main---resource目录下创建static和templates/modules两个文件夹,粘贴需要的资源进入相应的文件夹;3、在admin项目的src目录下创建一个类PageController,用来处理客户端所有的页面请求;4.在普通项目的src目录下创建exception、pojo、web包。各个包的具体功能如下:*1。异常包用于填充一些自定义异常,具体代码如下:publicclassServiceExceptionextendsRuntimeException{快捷键Alt+Insert+constructor添加所有异常属性}*2。在pojo包下创建一个PageObject类,在业务逻辑层使用该对象封装分页信息(可以理解为业务层pojo对象),格式代码如下:@Data@NoArgsConstructor@AllArgsConstructorpublicclassPageObjectimplementsSerializable{//当泛型定义在类名或接口名的右边时,这个泛型称为类泛型privatestaticfinallongserialVersionUID=-8770600233998974797L;/*总记录数/privateIntegerrowCount;/*当前页记录/privateList记录;//newPageObject(),newPageObject()/*总页数/privateIntegerpageCount;/每页最多显示多少条记录/privateIntegerpageSize;/*记录当前页的页码值/privateIntegerpageCurrent;公共PageObject(整数rowC数量,List记录,IntegerpageSize,IntegerpageCurrent){this.rowCount=rowCount;this.records=记录;this.pageSize=pageSize;this.pageCurrent=pageCurrent;this.pageCount=行数/pageSize;if(rowCount%pageSize!=0)this.pageCount++;}}*注意:java中所有封装的数据对象都尽可能实现Serializable接口,目的是方便对象的序列化和反序列化1)序列化:改变对象为字节2)反序列化:将字节转换为对象的应用场景连载?1)将对象转换为字节并缓存在内存中2)将内存中的对象存储为文件3)将对象转换为字符网络中加密传输序列化对象设计规范?1)实现序列化接口Serializable2)添加序列化ID。(序列化安全,序列化强度,自扩展理解).......................*/序列化相关的设置和操作如图:*3。在pojo包下创建一个JsonResult类,用这个对象封装控件层响应客户端的数据(并希望以后返回的数据是JSON格式的字符串,这样设计响应standard),格式代码如下:*packagecom.cy.pj.common.pojo;importlombok.Setter;importjava.io.Serializable;/*用这个对象来封装控制层响应的数据client/@Data//@SetterpublicclassJsonResultimplementsSerializable{privatestaticfinallongserialVersionUID=-8722122492343039602L;/*响应状态码/privateIntegerstate=1;//1表示ok,0表示error/*响应状态码对应的具体信息/privateStringmessage="ok";/*响应数据(通常是查询时得到的正确数据)/private对象数据;publicJsonResult(){}publicJsonResult(Stringmessage){this.message=message;}publicJsonResult(对象数据){this.data=data;}publicJsonResult(Throwablee){this.state=0;this.message=e.getMessage();}publicIntegergetState(){返回状态;}publicStringgetMessage(){返回消息;}publicObjectgetData(){返回数据;}}*4。在web包下创建一个GlobalExceptionHandler类(全局异常处理类),模板代码如下:packagecom.cy.pj.common.web;importcom.cy.pj.common.pojo.JsonResult;importlombok.extern.slf4j.Slf4j;importorg.springframework.web.bind.annotation.ExceptionHandler;importorg.springframework.web.bind.annotation.RestControllerAdvice;@Slf4j//这个注解用来记录异常信息到日志文件,slf4j只是一个日志标准,不是日志系统具体实现,作用:1.提供日志接口2.提供获取具体日志对象的方法doHandleRuntimeException(RuntimeExceptione){e.printStackTrace();//输出到控制台log.error("e.message{}",e.getMessage());返回新的JsonResult(e);}//................}菜单模块“查询”的设计思路及步骤:思路:1.先创建数据层接口-->2.创建映射文件对应方法的-->3.创建业务层接口和数据层接口的实现类-->4.控制层不实现接口,直接创建一个类(有Service属性),然后提供相应的(增删改查)方法-->5.借助PageController类中的方法处理页面请求;-->6.点击“菜单管理”按钮后,需要呈现一些菜单信息,需要在“菜单管理”按钮上进行事件注册,注册事件的前端代码写在html文件中(理解);1、定义一个查询所有菜单及其对应父菜单的接口方法名称及代码如下:packagecom.cy.pj.sys.dao;importorg.apache.ibatis.annotations.Mapper;importjava.util。List;importjava.util.Map;/**系统菜单数据层对象*/@MapperpublicinterfaceSysMenuDao{/*查询所有菜单及其对应的父菜单名称/List