java实战


五、项目实战–雷丰(学完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? 等各种技术? 有什么 好处?