java实战
1、http://learning.happymmall.com/
http://www.happymmall.com/index.html 前台官网
http://test.happymmall.com/ 开放前台
http://admintest.happymmall.com/ 开放后台
资料: https://www.imooc.com/article/18998
2、




bin 包含mvn的运行脚本
boot包含一个类加载器的框架 ,maven使用它来加载自己的类库
conf是一些配置文件,里面有我们经常用到的settings
lib包含了maven平时用到的谁有类库,除了自生的,还有一些第三方的类库
依赖原则:
1、短路优先

依赖第二个
2、如果是同样的路,那就看pom文件里,谁在前面
3、


4、mysql账号 密码:root 1234
5、
https://github.com/pagehelper/Mybatis-PageHelper Mybatis-PageHelper插件

6、
/**
*
* @param username
* @param password
* @param session
* @return
*/
快捷键是 /** 回车
@ResponseBody 这个的作用是返回的数据序列化成json
7、包结构

pojo:简单的数据库的一个对象,上一层 vo进行封装然后返给controller
controller--->service-->dao-->vo-->pojo
8、mybatis-generator
根据数据库自动生成pojo、dao和xml文件,pojo里面放的是和db的字段一一对应的一个对象,dao层是一个接口,供我们service调用;xml使我们dao层接口的实现,也就是说:
我们的sql语句都可以写在xml里面
9、使用mybatis-generator创建好dao、pojo、mappers后。

这个不显示,解决办法是在settings-->plugins里安装MyBatis plugin
由于MyBatis plugin是收费的,所以我现在用的是Free MyBatis plugin(没有MyBatis plugin好看)
10、idea的配置
(实时编译,只要编写后错误,就会在problems里输出)打开Problems

当我们使用@Autowired注解的时候,当注入到一个类时,因为我们用的mybatis,默认的idea会认为这是一个错误,会提示找不到对应的bean,但是我们的项目是能正常运行的,因为我们用的是spring auto scan自动
扫描的这种方法,

11、

横向越权:比如A用户可以查看自己的订单详情,我们在写接口的时候不注意,使得只要传入订单号就能查看详情,这样有可能会造成一个问题,A用户使用使用订单号恶意获取其他订单号的信息
12、

方法上加了@ResponseBody,返回的是经过MappingJacksonHttpMessageConverter处理的json数据
解析:
dispatcher-servlet.xml
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-</value>
<value>text/html;charset=UTF-</value>
</list>
</property>
</bean>
<!-- 自动反序列化的配置 -->
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
如何使用呢,申明一个bean,property为supportedMediaTypes
我们来看看MappingJacksonHttpMessageConverter的代码

没有supportedMediaTypes,继续找它的父类

找到了,相当于把给supportedMediaTypes注入值
13、
@Autowired注解
它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作
@Autowired
private UserMapper userMapper;
通过spring scan扫描包的方式,来进行自动加载
扫描的是applicationContext.xml

mybatis扫描的是applicationContext-datasource.xml,地址为dao文件夹定义的类
14、set操作对象的时候,equals和hashCode都要重写,如果比较俩个对象相同,他们的equals和hashCode都要相同,但如果hashCode相同,那equals也不一定相同
比如hashCode里是id和name,而equals是Id,那就不行。所以我们在重写equals和hashCode的时候,这俩个都要重写,而且参数要一致
15、

16、

POJO Java简单对象,用POJO定义成和数据库中的字段是一模一样的,里面不会填充业务逻辑
17、
静态代码块优于普通代码块,普通代码块优于构造代码块
静态代码块:类被加载的时候执行且只执行一次,一般我们都用它做初始化静态变量
构造代码块:我们每次构造这个对象的时候都会执行
static { } { } public PropertiesUtil(){ }
18、idea的配置

19、使用MyBatis-PageHelper实现分页功能
public ServerResponse<PageInfo> getProductList(int pageNum, int pageSize) {
// 1.pageHelper.startPage
// 2.sql查询逻辑
// 3.处理查询到的结果(进行结果筛选->vo对象)
// 4.pageHelper收尾(aop)
PageHelper.startPage(pageNum, pageSize);
List<Product> productList = productMapper.selectList();
List<ProductListVo> productListVoList = Lists.newArrayList();
for(Product productItem : productList) {
ProductListVo productListVo = assembleProductListVo(productItem);
productListVoList.add(productListVo);
}
//先用默认的结果
PageInfo pageResult = new PageInfo(productList);
//传给前端的用筛选后结果
pageResult.setList(productListVoList);
return ServerResponse.createBySuccess(pageResult);
}
20、使用natapp进行支付宝支付功能测试
https://coding.imooc.com/lesson/96.html#mid=3506
21、使用System.currentTimeMillis()获取当前时间
在开发过程中,通常很多人都习惯使用new Date()来获取当前时间。new Date()所做的事情其实就是调用了System.currentTimeMillis()。如果仅仅是需要或者毫秒数,那么完全可以使用System.currentTimeMillis()去代替new Date(),效率上会高一点。
java实战的更多相关文章
- 「小程序JAVA实战」springboot的后台搭建(31)
转自:https://idig8.com/2018/08/29/xiaochengxujavashizhanspringbootdehoutaidajian31/ 根据下面的图,我们来建立下对应的sp ...
- Java实战:教你如何进行数据库分库分表
摘要:本文通过实际案例,说明如何按日期来对订单数据进行水平分库和分表,实现数据的分布式查询和操作. 本文分享自华为云社区<数据库分库分表Java实战经验总结 丨[绽放吧!数据库]>,作者: ...
- java实战之解析xml
在java中解析xml有现成的包提供方法,常用的有四类:Dom,JDom,Sax以及Dom4j.其中前者是java中自带的,后三者需要大家从开源诸如sourceforge这样的网站下载jar包,然后在 ...
- Java归去来第4集:java实战之Eclipse中创建Maven类型的SSM项目
一.前言 如果还不了解剧情,请返回第3集的剧情 Java归去来第3集:Eclipse中给动态模块升级 二.在Eclipse中创建Maven类型的SSM项目 2.1:SSM简介 SSM ...
- Lucene之Java实战
1.导包 2.索引的创建 2.1首先,我们需要定义一个词法分析器. Analyzer analyzer = new IKAnalyzer();//官方推荐 Analyzer analyzer = ne ...
- 【Java实战】源码解析Java SPI(Service Provider Interface )机制原理
一.背景知识 在阅读开源框架源码时,发现许多框架都支持SPI(Service Provider Interface ),前面有篇文章JDBC对Driver的加载时应用了SPI,参考[Hibernate ...
- 添物零基础到大型全栈架构师 Java实战及解析(实战篇)- 概述
实战篇是在基础之上,进一步提升的内容.通过实战篇可以深入理解Java相关框架和库的使用,能够独立开发小模块,或者按照架构师的指导进行代码编写和完善. 主要讲解核心框架和库的使用和使用场景介绍.通过 ...
- Zookeeper API for JAVA实战与应用
package com.zookeeper.watcher; import java.util.List; import java.util.concurrent.CountDownLatch; im ...
- Java实战equals()与hashCode()
一.equals()方法详解 equals()方法在object类中定义如下: 代码 public boolean equals(Object obj) { return (this == obj); ...
- JAVA 实战练习
1.判断变量是否为奇数偶数. package com.JAVA; import java.util.Scanner; public class text { public static void ma ...
随机推荐
- Tomcat Jboss Apache WebLogic区别与比较(阿里面试)
1. Tomcat是Apache鼎力支持的Java Web应用服务器,只能做JSP和Servlet的Container,不支持EJB,由于它优秀的稳定性以及丰富的文档资料,广泛的使用人群,从而在开源领 ...
- BZOJ2622 深入虎穴(最短路径)
如果对某个点能求出与其相邻的所有点到达出口的最短时间,那么该点的答案就可以在其中取次小值了. 对于dijkstra魔改一下就能做到这个.初始时将所有出口的最短时间设为0并放入堆,记录最短和次短路径,每 ...
- 【BZOJ2084】[Poi2010]Antisymmetry(manarcher)
[BZOJ2084][Poi2010]Antisymmetry(manarcher) 题面 BZOJ 洛谷 题解 一眼马拉车吧...明显就是在回文串的基础上随便改了改. 似乎还可以魔改回文树,然而我这 ...
- 解析word公式的解决方案(office插入和wps插入不同的解决方案)
这几天在公司的项目有个需求就是数学公式的导入,而对于word来说,插入的公式xml格式,需要转换为mathML,借用插件MathJax来进行展示,而对于wps插入的公式来说,获取到的是一个wmf图片, ...
- 解题:SDOI 2014 重建
题面 做这个这个题需要稍微深入理解一点矩阵树定理:套矩阵树定理得到的东西是有意义的,它是“所有生成树边权乘积之和”(因为度数矩阵是点的边权和,邻接矩阵是边权),即$\sum_{t}\prod_{e∈t ...
- centos6 pyenv和virtualenv搭建python虚拟环境
安装pyenv 基础环境软件包安装 yum -y install gcc gcc-c++ make git patch openssl-devel zlib-devel readline-devel ...
- Spark记录-Scala字符串
Scala字符串 在Scala中的字符串和Java中的一样,字符串是一个不可变的对象,也就是一个不能修改的对象.可以修改的对象,如数组,称为可变对象.字符串是非常有用的对象,在本节的最后部分,我们将介 ...
- bzoj千题计划236:bzoj2300: [HAOI2011]防线修建
http://www.lydsy.com/JudgeOnline/problem.php?id=2300 维护动态凸包,人懒用的set 用叉积判断,不要用斜率 #include<set> ...
- poj 3686 Priest John's Busiest Day
http://poj.org/problem?id=3683 2-sat 问题判定,输出一组可行解 http://www.cnblogs.com/TheRoadToTheGold/p/8436948. ...
- 流媒体技术学习笔记之(九)减少VLC 延迟的方法
之前写过一篇关于在Linux平台上编译Android平台上VLC播放器源代码的文章,vlc这款播放器非常优秀而且是开源的,它的核心是开源视频编解码库ffmpeg.而且这款播放器还支持RTSP协议,这个 ...
14、set操作对象的时候,equals和hashCode都要重写,如果比较俩个对象相同,他们的equals和hashCode都要相同,但如果hashCode相同,那equals也不一定相同