当前位置: 首页 > Web前端 > HTML

项目设计模板

时间:2023-04-02 18:52:50 HTML

项目结构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>findObjects();}2、定义好查询方法后,创建映射文件,编写查询sql语句方法:1)映射文件的头文件部分,可以参考mybatis官网的映射文件,复制粘贴即可;2)定义mapper标签:3)在...中写入查询的SQL语句为如下://id指的是上面接口定义的方法,resultType为返回的结果集方法;selectc.*,(selectnamefromsys_menuspwherec.parentId=p.id)parentNamefromsys_menusc3.创建业务层接口和数据层接口的实现类1)创建业务层接口并提供方法:packagecom.cy.pj.sys.service;importjava.util。列表;导入java.util.Map;publicinterfaceSysMenuService{List>findObjects();}2)创建数据层接口的实现类:packagecom.cy.pj.sys.service.impl;importcom.cy.pj.sys.dao.SysMenuDao;导入com.cy.pj.sys.service.SysMenuService;导入org.springframework.beans.factory.annotation.Autowired;导入org.springframework.stereotype.Service;导入java.util。List;importjava.util.Map;@ServicepublicclassSysMenuServiceImplimplementsSysMenuService{@AutowiredprivateSysMenuDaosysMenuDao;@OverridepublicList>findObjects(){returnsysMenuDao.findObjects();}}4.Control层指的是业务层方法,并根据该方法提供其对应方法(增删改查)的映射路径:packagecom.cy.pj.sys.controller;导入com.cy.pj.common.pojo.JsonResult;导入com.cy.pj.sys.service.SysMenuService;导入org.springframework.beans.factory.annotation.Autowired;导入org.springframework.web.bind。annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importjava.util.List;importjava.util.Map;@RestController@RequestMapping("/menu/")公共类SysMenuController{@AutowiredprivateSysMenuService系统菜单服务;@RequestMapping("doFindObjects")publicJsonResultdoFindObjects(){返回新的JsonResult(sysMenuService.findObjects());}}5.借助PageController类中的方法处理页面请求(所有页面请求都可以在该类对象中操作)packagecom.cy.pj.sys.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RequestMapping;/*使用PageController来处理来自客户端的所有页面请求/@RequestMapping("/")@ControllerpublicclassPageController{@RequestMapping("/{module}/${modulUI}")//注意传入括号内内容的通用性publicStringdoModuleUI(@PathVariableStringmoduleUI){return"sys/"+moduleUI;}}###菜单模块“Add”相关代码实现步骤:思路:1、在html文件中找到“Add”按钮,注册Click(点击)事件代码编写(前端内容,了解),即可参考src--main--resources--templates.modules--sys--menu_list文件编写;-->2。对于“上级菜单”是树状结构,所以需要在数据层的SysMenuDao接口中提供查询树状菜单的方法,查询所有的ID、name、parentId字段的值menus,然后将每一行记录封装到一个Node对象中。这样的对象可以适配类似zTree结构的数据呈现,因为以后在项目中创建其他子系统(比如商品goods子系统)只要是树结构相关的查询需求都需要用到Nodeobject,所以可以使用普通工程中的src--main-java--在pojo文件下创建一个Node类,并提供get/set方法,所有pojo都允许序列化,所以实现Serializable;-->3.点击“添加”——点击“高级菜单”后,按F12查看错误信息,根据提示在控制层添加需要的方法;1、在html文件中找到“添加”按钮,编写注册点击(click)事件的代码(前端内容,懂的),请参考src--main--resources--templates.modules--sys--menu_list文件写入;2、由于“上级菜单”是树状结构,所以需要在数据层SysMenuDao接口中提供查询树状菜单和Node对象的方法代码如下:1)packagecom.cy.pj.sys.dao;导入com.cy.pj.common.pojo.Node;导入org.apache.ibatis.annotations.Mapper;导入org.apache.ibatis.annotations。select;importjava.util.List;importjava.util.Map;/**系统菜单数据层对象*/@MapperpublicinterfaceSysMenuDao{/**查询所有菜单中的ID、name、parentId字段的值,然后将每一行记录封装成一个Node对象,这样的对象可以适应类似zTree结构的数据呈现。@return*/@Select("selectid,name,parentIdfromsys_menus")ListfindZtreeMenuNodes();}2)节点对象代码:packagecom.cy.pj.common.pojo;importlombok.Data;importjava.io.Serializable;@DatapublicclassNodeimplementsSerializable{privatestaticfinallongserialVersionUID=-7437395435719036861L;私有整数id;私有字符串名称;privateIntegerparentId;}3)将封装好的Node对象引入步骤1);4)引入数据层SysMenuDao接口添加"ListfindZtreeMenuNodes();"在业务层接口SysMenuService中,在SysMenuService实现类SysMenuServiceIml中补充该方法,代码如下:业务层封装com.cy.pj.sys.service;importcom.cy.pj.common.pojo.Node;importjava.util.List;importjava.util.Map;publicinterfaceSysMenuService{ListfindZtreeMenuNodes();List>findObjects();}业务层实现类封装com.cy.pj.sys.service.impl;importcom.cy.pj.common.pojo.Node;importcom.cy.pj.sys.dao。SysMenuDao;导入com.cy.pj.sys.service.SysMenuService;导入org.springframework.beans.factory.annotation.Autowired;导入org.springframework.stereotype.Service;导入java.util.List;导入java.util.Map;@ServicepublicclassSysMenuServiceImplimplementsSysMenuService{@AutowiredprivateSysMenuDaosysMenuDao;@OverridepublicListfindZtreeMenuNodes(){返回sysMenuDao.findZtreeMenuNodes();}}3.在控制层代码实现:packagecom.cy.pj.sys.controller;importcom.cy.pj.common.pojo.JsonResult;importcom.cy.pj.sys.service.SysMenuService;importorg.springframework.beans.factory.annotation.Autowired;导入org.springframework.web.bind.annotation.RequestMapping;导入org.springframework.web.bind.annotation.RestController;导入java.util.List;导入java.util.Map;@RestController@RequestMapping("/menu/")publicclassSysMenuController{@AutowiredprivateSysMenuServicesysMenuService;@RequestMapping("doFindZtreeMenuNodes")publicJsonResultdoFindZtreeMenuNodes(){返回新的JsonResult(sysMenuService.findZtreeMenuNodes());}}

最新推荐
猜你喜欢