[系列课程]从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类,然后设置三个属性,是不是就实现了呢?
1User user = new User();
2user.setUsername("admin");
3user.setPhone("120");
4user.setOperator("中国移动");
5//TODO数据返回到页面上

2. 好,简单的对象我们要想输出的页面上,前期要做的工作还是很简单的,那如果类似下图呢? 列表输出
很明显这是一个表格,由5条数据组成的表格,如果我们想准备这样的数据(假设具体的页面展现已经处理完毕)我们该怎么做呢?类似第一个例子中的单个对象,我们有哪些思路呢?
a. 构建5个user对象,然后全部返回到页面
这种方案是可行的,但是还是有很多问题的,现在我们有5个对象,可以逐个返回,而实际的开发中,数据都是来源数据库的,成千上万的记录,总不能一个个的返回一遍吧?
b. 我们应该可以想到我们学过的数组,列表(List),对比数组Array和List,我觉得List更好用一些,因为数组的长度是不可变的,数据的条数必须设定好才行,所以我们采用List
1List<User> 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//实际开发中,我们会使用从数据库中查询的数据
9list = 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的。
示例代码:
01Map<String,List<User>> userMap = new LinkedHashMap<String,List<User>>();
02            for (User user : userList) {
03                if(userMap.containsKey(user.getDominate())){
04                    userMap.get(user.getDominate()).add(user);
05                }else{
06                    List<User> list = new ArrayList<User>();
07                    list.add(user);
08                    userMap.put(user.getDominate(), list);
09                }
10            }


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

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

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

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值