五、项目实战–雷丰(学完spring就来做这个项目实战,写代码!!!!!有不懂的再来看教程)521 77h22m 尚硅谷众筹项目–尚筹网视频教程:BV1bE411T7oZ
(大概需要两周时间! 4月27日至5月10日,4月28日 P1-P15;5月5日=P16-P18,5月7日:P19-P23,5月8日:P24-P34,5月9日:P35-P44-3小时;6月2日:P45-P56)预计8天完成,每天460/8≈60个视频;6月3日=delete(投资策略代码),6月4日= P57-P70,6月5日=帮水改,6月6日-8日=P71-91;6月11日=P92- P97,6月12日=P98-P111,6月19日=P112-P120,6月20日,P121-P135,6月23日=P136-P148,6月24日=P149-P158,6月26日=P159-P171,6月27日=P172-P180,6月30日=P181+弄成功前面的部分,7月1日=181-P185,7月13日=P186-P190,
任务:众筹网;技术:后台管理员SSM + 前台会员系统微服务
前言
-
目标:抄一遍用处不大,学一个项目的目的是会,方法对
- 心态转变:从具体技术的语法转变为思考如何实现业务功能需求(灵活),养兵千日,用兵一时
- 点:具体的技术;每个请求是一个线;面:模块;体:整体架构。聚焦当前完成的任务,目标明确后才能分析实现的思路。针对目标的达成进行分析,流程图(需求->流程图->代码)。
- 心态转变:从具体技术的语法转变为思考如何实现业务功能需求(灵活),养兵千日,用兵一时
环境搭建,一件大事是许多小事的积累
- 后台管理系统环境搭建
- 第一范式:数据库表中的每一列都不可再分,也就是原子性;第二范式:在满足第一范式基础上要求每个字段都和主键完整相关;第三范式:表中的非主键字段和主键字段直接相关,不允许间接相关
- sts意思是spring tool suite,需要在eclipse中安装,注意要安装 tool3,不能安装4,4都是spring boot的内容,没有spring bean configuration file
- 注意把Pom.xml文件配置好,不然缺少依赖会报错!
日志: 门面
- 名称说明
- JCL(Jakarta Commons Logging) 陈旧
- SLF4J(Simple Logging Facade for Java) 适合(同一作者)
- jboss-logging 特殊专业领域使用
- 实现:
- log4j 最初版(同一作者)
- JUL(java.util.logging) JDK 自带
- log4j2 Apache 收购log4j 后全面重构,内部实现和log4j
- logback 优雅、强大(同一作者)
- spring 自带的commons-logging不够用,都是红色的显示,且不会显示sql语句
- IO操作消耗性能,用日志替代sysout,通过日志系统的级别批量控制信息的打印
- 测试单个test:按Ctrl + Shift +↑(将光标移动到当前方法声明),按Alt + Shift + x(或d进行调试)然后按t(热键显示“Run JUnit Test”),检查测试结果,按Alt +←返回之前的代码行。如果要运行所有测试,可以跳过步骤1和步骤1。4。
- finally, 不求同年同月生,但求同年同月死
- 声明式事物
- 从事务角度:一个事务方法中包含的多个数据库操作,要么一起提交、要么一起回滚。也就是说事务方法中的多个数据库操作,有任何一个失败,整个事务全部回滚。从声明式角度:由Spring 来全面接管数据库事务。用声明式代替编程式。
- 目标-思路-代码
- 定位-注解
- ctrl+shift+T,找一个类
- 目标思路代码
- mock.js 前后端分离时前端使用的假数据
管理员页面
- 所有的静态资源都应该能即时访问,右键点击资源,run on server时可以访问说明资源可以正常访问,即webapp目录下的资源是可以直接访问的。否则不能直接访问。
- 创建后台管理员登陆的页面admin-login.jsp
- 跳转到登录页面
- 加入layer库文件和样式文件,引入js就可以
- MD5加密长度不高不低,不可逆加密,所以只能数据库密码和表单密码比较
- ctrl+1在接口中创建,对接口名ctrl+t找到这个类,ctrl+1创建类中的实现,ctrl+o定位到需要写的方法
- 用spring MVC重定向到页面,否则浏览器无法直接访问WEB-INF的内容。
- ctrl+shift+H查找某个类
- jquery pagination分页插件
// 最后一对括号表示调用这个函数,initPagination表示这个函数的返回值,但是这个函数又没有return值,所以initPagination就是表示初始化的意思,没有值 var initPagination = function() { }();
- 通常都是逻辑删除,1,0表示
- $.ajax可以关闭异步模式,async=false就是同步顺序执行
角色管理
- SpringBoot基础教程。Mapper 接口提供了对单表的基本 CURD 操作,自定义条件查询,以及分页查询,而 MySqlMapper 则提供了批量新增操作。
- xml文件生效,关了重新开启即可
- v3.bootcss.com 找到模态框的div是怎么写的
- 单独给页面上的“铅笔”按钮绑定单击响应函数,传统的事件绑定方式只能在第一个页面有效,翻页后失效了,使用jQuery对象的on()函数可以解决上面问题,似乎对每个
$("#rolePageBody").on("click",".pencilBtn",function()
都会重新绑定响应函数。$(this)
将当前对象包装为一个Jqeury对象。 $("#editModal [name=roleName]").val();
传参数就是设置,不传参数就是设置- @RestController可以替代@ResponseBody+@Controller
分配权限
-
@RequestParam(value="roleIdList", required=false) List<Integer> roleIdList
这里required=false是指前端页面不必一定输入值 -
void insertNewRelationship(@Param("adminId") Integer adminId, @Param("roleIdList") List<Integer> roleIdList); <foreach collection="roleIdList" item="roleId" separator=",">(#{adminId},#{roleId}))</foreach> // @Param("roleIdList") 是一个list,collection="roleIdList" 才能用list。
-
ctrl + f5 强制刷新,否则chrome浏览器不会默认更新.js文件。
-
一般通过ajax请求查询后台数据
- l和大写的i的区别是l的上面是只有左边一点点,而大写的i的上面是一短横。
java守护线程
守护线程有几个特点: 1、 thread.setDaemon(true)必须在thread.start()之前设置,你不能把一个正在运行的线程转化为守护线程 2、 在守护线程内的产生的线程也是守护线程 3、 永远不要试图利用守护线程去访问文件、数据库等固有资源,因为守护线程可以被任何用户线程所中断,线程的优先级最低。
小问题
-
Mybatis逆向工程报错 Unknown initial character set index ‘255’ received from server. Initial client character set can be forced via the ‘characterEncoding’ property. 使用 connectionURL=”jdbc:mysql://localhost:3306/project_crowd?characterEncoding=utf-8”
- 彻底解决 Eclipse出现the user operation is waiting的问题。网上一般的解决办法是 :project->Build Automaticlly前面的钩钩去掉。 project->Builders 将带有 validator的选项全部去掉,然后保存一切就ok了。记得手动Build,否则会一直有问题,不会更新
- eclipse 查看jar包源码- 方法:反编译插件jadClipse。成功!
- 以运行结果为准,有时候js或者spring配置文件在编译器中报错,但是不影响运行结果就可以不用理他。
- 如果出现The requested resource is not available.问题,则需要Build
- modelMap 是啥?啥时候生成的?
- 为什么用Mybatis? 等各种技术? 有什么 好处?