[系列课程]从0.5开始学习Java Web开发(一)1.2Web开发中广泛应用的Java知识

一、词义分解


java web 开发,从字面上我们可以看到三个词:
Java:一种面向对象的程序设计语言
Web: 万维网,其实在次应该理解为万维网方向的开发(此处有兴趣的可以顺便百度一下 http 等概念)
开发:不做解释

二、学习过程解惑


在上篇文章Java基础中我们已经了解了 Java语言基础知识 ,但是如果你要做实际的开发工作时,你会发现根本不知道从何入手,就像大学里好多专业都开过C语言课程,可是直到课程结束,大家也只是局限于命令行上输出个"hello world",这跟我们见到的桌面程序差远了。这是因为,我们距离实际开发,需要了解的零碎知识点还很多。
同样Java语言也是如此,如果你学会创建类、包、变量,学会输出Hello world,但如果拿出来一个网站,说照着这个用Java翻写一下,一定会一脸懵逼,不知如何下手。从下篇文章开始,我会直接进入web项目开发的阶段,给大家分享我的个人总结(为什么不是本文,因为本文还要分享一些在web开发中常用的Java基础知识点)。

三、图示分享


1. 在一个网站上有这么一个数据展示,不考虑数据如何输出,我们只考虑如何将数据进行封装呢?



其实这个是最简单的数据准备,从数据上我们能看出来,这是一个用户信息,包含用户名、电话、运营商,如果我们创建一个User类,然后设置三个属性,是不是就实现了呢?
1 User user = new User();
2 user.setUsername("admin");
3 user.setPhone("120");
4 user.setOperator("中国移动");
5 //TODO数据返回到页面上

2. 好,简单的对象我们要想输出的页面上,前期要做的工作还是很简单的,那如果类似下图呢?
很明显这是一个表格,由5条数据组成的表格,如果我们想准备这样的数据(假设具体的页面展现已经处理完毕)我们该怎么做呢?类似第一个例子中的单个对象,我们有哪些思路呢?
a. 构建5个user对象,然后全部返回到页面
这种方案是可行的,但是还是有很多问题的,现在我们有5个对象,可以逐个返回,而实际的开发中,数据都是来源数据库的,成千上万的记录,总不能一个个的返回一遍吧?
b. 我们应该可以想到我们学过的数组,列表(List),对比数组Array和List,我觉得List更好用一些,因为数组的长度是不可变的,数据的条数必须设定好才行,所以我们采用List
1 List list = new ArrayList<>(User);
2 //构建5个User对象
3 //list.add(user1);
4 //list.add(user2);
5 //list.add(user3);
6 //list.add(user4);
7 //list.add(user5);
8 //实际开发中,我们会使用从数据库中查询的数据
9 list = userService.findUserList();

这就是我们在实际web开发中用到的很频繁的一个知识点集合类之ArrayList(实现了List接口),用于输出数据列表

3. 从第二个例子中,我们已经实现了输出数据列表,但是我们发现,我们的数据中有两个中国移动的,两个中国电信的,我们想对数据进行分组显示,又该如何呢?



跟数据列表list很像,不同的是运营商这一栏进行分组合并了,该如何实现呢?
基本思路是:
a. 数据分组,我们将“中国移动”放入一个list,“中国联通”放入一个list,"中国电信"的放入一个list
b. 将三个list返回到页面,用合并单元格的方式实现
很不错,对于本例我们已经成功的实现了数据分组,然后我们稍作一下调整,将数据量放大1000倍,然后按照手机号码的前三位进行分组“130”,“131”,“132”这样,假如数据量足够大,我们会产生多少组分类呢,假设手机号第二位只有 3 5 7 8 9,那么我们的分组结果应该有 50种,我们是不是需要创建50个list呢?看起来也是可以的。
我们继续增加难度,按照手机号的前4位分组,那么分组量已经变成了5*10*10 也就是500个,很显然我们手动创建list已经不可行了,并且分组的类型也是不可控的,我们该怎么办呢?
Map,Map接口是集合类中另一个重点,因为是KV的数据形式,不仅在分组方面比较好用,在缓存等技术方面也是很广泛的的应用,同样本例的目的也是为了引入Map的。
示例代码:
01 Map> userMap = new LinkedHashMap>();
02             for (User user : userList) {
03                 if(userMap.containsKey(user.getDominate())){
04                     userMap.get(user.getDominate()).add(user);
05                 }else{
06                     List list = new ArrayList();
07                     list.add(user);
08                     userMap.put(user.getDominate(), list);
09                 }
10             }


至此,我们在实际开发中,最常用的三种数据展现形式已经分享完毕,大家如有问题,可以在文末留言,谢谢。

小问题:如果我们想获取数据列表(不分组)的同时,获取运营商的列表呢?Set去重,大家可以自己去了解一下。

对于本文的标题,可能有大神会有疑问,就三个知识点,是不是夸张了,是的,因为确实还有很多工具栏,很多基础的算法等,我们后面会在实际的web开发中进行补充,本文的点,个人认为最直接,最形象。

原文地址:爱效率编程--java web开发系列课程


你可能感兴趣的:(Java,Web)