# CuitJavaEEPractice **Repository Path**: liu_xu111/CuitJavaEEPractice ## Basic Information - **Project Name**: CuitJavaEEPractice - **Description**: Spring+SpringMVC+Mybatis+Layui实现的家庭理财管理系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-09-22 - **Last Updated**: 2022-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CuitJavaEEPractice **成信大JAVAEE实训课程项目** **cuit javaee Training Course Project** ## 项目简介 Project Description **项目名称**:家庭理财管理系统 **Name**:Family Financial Management System **项目介绍**:一个能够管理家庭内部各种财务信息的家庭理财管理系统,主要包括用户管理、收支管理、财务管理、报表管理等公共模块。 **Introduction**:A system that would manage within the family, family finance Financial Information Management System, including user management, budget management, financial management, report management, and other public module. ## 技术选型 Choosing Technology **开发技术**:JAVA, JSP, Servlet, JDBC **Development technology**:JAVA, JSP, Servlet, JDBC **开发环境**:IntelliJ idea 2017.1+, jdk 8u91, mysql 5.5, tomcat 8.5.34 **Development environment**:IntelliJ idea 2017.1+, jdk 8u91, mysql 5.5, tomcat 8.5.34 **开发框架**:Spring、SpringMVC、Mybatis、Jquery、layui **Development Framework**:Spring、SpringMVC、Mybatis、Jquery、layui ## 启动方法 Start Up **导入项目**:使用IDEA拉取git远端项目,等待项目加载完成。 **Import Project**:Using the idea of distal pull git project, waiting for the project finishes loading. **环境配置**:为项目配置tomcat 8.5运行环境,点击运行按钮,可以查看执行情况。 **Configuring environment**:configuring Tomcat 8.5 Runtime Environment for your project, click the Run button, you can view the status of implementation. **启动成功**:在浏览器中输入:http://localhost:8080/ 访问项目首页。 **Start Completed**:In the browser, enter : http://localhost:8080/ to visit the project home page. ## 开发规范(必读) Development Specification (important) - 在每次编写代码前应该先pull代码,确保本地版本与主要分支一致。 - 开发代码分工合作,尽量避免修改公共的代码文件,避免出现未知的版本冲突。 - idea应安装.ignore插件,避免上传不必要的IDE配置文件。本项目中插件所需的'.ignore'文件已经生成。 安装请参考:https://blog.csdn.net/ZZY1078689276/article/details/84952858 - 模块代码应该进行单元测试,确认代码无误后再推送(PUSH)至远端。避免出现冲突造成的难以修复的BUG。 - You should pull the code before writing each code to ensure that the local version is consistent with the main branch. - Develop code division of work to avoid modifying public code files and avoiding unknown version conflicts. - Idea should install the .ignore plug-in to avoid uploading unnecessary IDE profiles. The '.ignore' file required for the plug-in in this project has been generated. Please refer to: https://blog.csdn.net/ZZY1078689276/article/details/84952858 - The module code should be unit tested to confirm that the code is correct before pushing (PUSH) to the far end. Avoid hard-to-fix BUGS caused by conflict. ## 页面框架 Page Framework - 前端框架:layUI - layui是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。 - 学习教程:https://www.layui.com/doc/ - Front Page frame: layUI - Layui is a UI framework written with its own module specification, following the writing and organization of native HTML/CSS/JS, with very low thresholds for ready-to-use. - Learning tutorial: https://www.layui.com/doc/ ## 编写标准 Writing Standards ### 1、Controller层编写标准 **按照如下规则编写Controller**   模板中包含各类请求的映射方法,直接复制模板进行修改即可,模板代码如下: > @Controller > @RequestMapping(value = {"/Demo"}) > public class DemoController { >     //自动注入Service层 >     @Autowired >     private DemoService demoService; >     /** >      * 直接字符串映射样例 >      * @return >      */ >>     @RequestMapping(value = {"/StrDemo"}) >     // 使用ResponseBody可以让返回的数据变为字节流 >     @ResponseBody >     public String returnStr() { >         // 直接给前台返回一个字符串,一般用于AJAX交互。 >         return "hello,这是第一个映射"; >     } >     /** >      * 单对象获取样例 >      * @return >      */ >>     @RequestMapping(value = {"/BeanDemo"}) >     @ResponseBody >     public DemoBean returnEntify() { >         DemoBean testBean = new DemoBean(); >         testBean.setDemostr("测试实体"); >         testBean.setDemoint(12); >         // 会自动将Bean封装为JSON格式数据返回给前端 >         return testBean; >     } >     /** >      * 多对象获取样例Demo >      * @param orderAndRole >      * @return Json数据 >      * @throws Exception >      */ >>     @RequestMapping(value = { "/getMoreObjectDemo" }, method = { RequestMethod.POST }, consumes = { >      "application/json" }, produces = { "application/json" }) >     @ResponseBody >     public Object addEmpGetStu(@RequestBody VODemo orderAndRole) throws Exception { >         // 同时获取两个前端的数据,需要在VO层封装两个对象,并添加get方法,注意参数样式。 >         Order order = orderAndRole.getOrder(); >         Role role = orderAndRole.getRole(); >         order.setInfoAssessmentdate(new Date()); >         order.setInfoRemarks("这是生成的"); >         // 返回order对象的json数据。 >         JSONObject responseObj = (JSONObject) JSONObject.toJSON(order); >         return responseObj; >     } >     /** >      * service调用样例Demo >      */ >>     @RequestMapping(value = {"/ServiceDemo"}) >     @ResponseBody >     public String getUsers() { >         // 调用service中的方法。 >         List users = demoService.getUsersByExample(); >         System.out.print(users.get(0).getSex()); >         return "请在控制台查看输出!"; >     } > } ### 2、Service层编写标准 **使用Example进行数据库存取操作**   项目使用Example类进行数据库交互,在Service层直接调用Example类即可,具体查询数据的样例代码如下: > // 这是一个Demo样例的服务层实现 > @Service > public class DemoServiceImpl implements DemoService { >     //自动注入userMapper >     @Autowired >     private UserMapper userMapper; >     // 根据Example查询用户 >>     @Override >     public List getUsersByExample() { >         // 首先申明一个users对象用于接收查询结果(用户列表) >         List users = null; >         // 新建用户样例 >         UserExample example = new UserExample(); >         // 获取一个criteria对象,criteria对象用于设置查询条件 >         Criteria criteria = example.createCriteria(); >         // 这句话等同于 WHERE username LIKE '%a%' >         criteria.andUsernameLike("%a%"); >         // 这句话等同于 ORDER BY username ASC >         example.setOrderByClause("username asc"); >         // 执行select查询,参数就是example >         users = userMapper.selectByExample(example); >         // 返回查询结果给controller >         return users; >     } > } **具体用法请参考:https://blog.csdn.net/biandous/article/details/65630783** ### 3、Dao层编写标准 **Mapper文件不需要手动编写**   mapper.xml、mapper、entity都已经通过Maven工具Mybatis Generator自动生成, 如果无特殊需要,无须再手动编写。 ### 4、VO层编写标准 **VO全称Value Object,值对象。主要用于数据交互中,非entity数据的封装。**   例:将用户和订单对象组合,成为用户订单对象。 >// 封装用户订单对象 >public class UserAndOrder { >>     private Order order; >>     private User user; >>     public Order getOrder() { >>         return order; >>     } >>     public void setOrder(Order order) { >>         this.order = order; >>     } >>     public User getUser() { >>         return user; >>     } >>     public void setUser(User user) { >>         this.user = user; >>     } >}