JavaWeb项目详解系列2-5(基于How2j天猫J2EE项目:后台业务逻辑)

0 项目来源与阅读建议

项目来源

http://how2j.cn/k/tmall-j2ee/tmall-j2ee-894/894.html?p=66748
注册的时候用这个链接,谢谢啦!

价格

92 * 0.8

阅读建议

  1. 本教程与站长的官方教程互为补充,并不是取而代之,也做不到取而代之。站长是以老师的身份告诉你怎么写,我是以课代表的身份告诉你,我是怎么学的。
  2. 本教程应当在你做完站长相对应部分的内容之后,再来看。也就是说,在看本教程之前,你应当对站长对应章节的内容有了一定的了解和基础,不然某些词语你可能听不懂。
  3. 我在How2j的ID名叫HuangTY,我喜欢分享大家存在的问题,所以也希望大家能够在评论区多多留言,共同进步。

1 顺着上一章的小结讲开

其实大家在看教程的时候应该都会有这样的问题吧?
站长,你到底是怎么想出来要这么写的?
我在上一届的小结中,结合MVC架构模式简单说了一下业务逻辑是怎么想到这么写的,下面我就以上一章的小结为核心,在本文中以后台业务逻辑为范例,尝试解决大家日后在自己开发过程中如何自己写业务逻辑的问题。

1.1 2-4的小结部分:

写这篇文章的时候,我才发现,后端程序servlet其实核心思想非常重要,那就是派发。你要很清楚,servlet写的那些方法,本质上都是controller层,是控制器,做的是派发的工作。
什么叫派发?

  1. 前端需要显示的数据,后端需要通过servlet中service方法调用对应方法,在这个方法里调用Model层的东西(DAO或实体类),获取数据后,交给前端。从数据库的角度来说,这叫查询。从后端的角度来说,这叫写出。
  2. 前端需要提交的数据,后端一样的,获取数据并放入数据库。从数据库的角度来说,这是增删改。从后端的角度来说,这叫写入。
    这是从MVC整体框架的角度,高屋建瓴的看到这里的所有业务逻辑。
    或许有的业务逻辑只有1,就是显示,比如说上面分析过的不需要登录的功能,基本都是显示,因此只要从数据库里读,把数据写入域对象,前台把域对象拿出来即可,这种需求通常返回值为xxx.jsp。
    有的业务只有2,比如说添加购物车就是比较典型的,添加完之后,仍然停留在当前界面,不需要跳转到别的页面显示,这种一般返回值为%,表示不需要做跳转。
    有的业务既有2又有1,对数据库做完操作后,要跳转到另一个界面做显示。那在做2的方法返回值通常为一个servlet方法,而这个servlet方法中做的是1的操作,然后返回一个xxx.jsp。
    只有理解了我上面说的这些,我认为才真正从俯视图上了解了MVC,了解了servlet+jsp+Bean+DAO架构,以后自己写业务代码的时候才能做到知其所以然。

2 正文开始前的一些约定

  1. 本系列教程目前着重讲解servlet,DAO,实体类等内容,对前端知识介绍有限,仅仅给出前端后后端需要传递哪些数据。
  2. 结合2-4的小结部分,再次强调DAO+Bean是Model,Servlet+Filter是Controller,JSP是View。
    Controller作为结合前端和后端的具有派发行为的中间商,我们认为它的作用为1.前端获取后端发来数据并显示,后文中成为前端展示。2.后端获得前端提交表单中的数据,在服务端进行处理,可能经过DAO,也可能猴子石简单数据操作,但是统称为后端处理。
    本文余下部分,都将围绕着“前端展示”与“后端处理”进行。

3 分类管理

3.1仅有“前端展示”

根据2-4小结部分,或者1.1内容可知,仅有“前端展示”功能的servlet方法返回值为xxx.jsp。我这个结论是否正确呢?请看下文。
在分类管理中,仅有“前端展示”的部分是——
查询功能。对应方法为list()。仔细看代码中list()方法的返回值,是不是xxx.jsp。因为查询功能所展示的是后台所有的分类,因此需要传递List<Category>域对象,同时为了分页,还要传递Page对象,具体分类方面知识请看系列教程2-3。
来,我们总结一下对于仅有“前端展示”部分的代码,如果自己写要怎么写。

  1. 明确前端要展示什么数据。
  2. 在servlet中写出对应的方法,向Model层中的DAO或者实体类索取,或者通过其他业务逻辑代码得到,然后返回值为需要获取数据的xxx.jsp。在xxx.jsp中可以直接利用域对象进行展示,至于怎么展示,这就是前端的工作了。
  3. 完成。

3.2仅有“后端处理”

分类管理中不存在。因为在分类管理的功能里,修改后的数据都会呈现出来。

3.3先“后端处理”再“前端展示”

这是最常见的。

  1. 增加功能。
    对应方法:CategoryServlet.add()。我们说一般先“后端处理”再“前端展示”的第一个返回值为servlet,你看,这个后端处理的返回值就是admin_category_list。一看到list就知道,要进入“前端展示”的功能,果然,list的返回值就是xxx.jsp。
    再来分析方法,add()本身,作用是“后端处理”,果不其然,先从前端获取到name这个域对象,然后构造一个category对象,通过Model层的DAO方法放入数据库。
    为什么先“后端处理”再“前端展示”的返回值是先servlet再jsp呢?理由如下——客户端浏览器request携带者来自前端的数据,这个数据走向第一个servlet方法后,完成了后端处理的工作,此时必须发给前端展示,所以返回值必须为一个功能为前端展示的servlet方法,这个方法接收到已经后端处理后的数据后,跳转到jsp上显示出这些数据。
  2. 删除功能。
    对应方法:CategoryServlet.delete()。先进行DAO处理,在转去list()方法。

3.4先“前端展示”再“后端处理”最后“前端展示”

那返回值就应该是先xxx.jsp,再servlet,最后xx.jsp。
这个业务逻辑是怎么回事呢?我们经常在打开软件的时候,点击某个按键,跳出一个对话框,我们在对话框里输入了信息之后,才能跳转到另一个页面。这个对话框就是先前端展示,输入完信息并提交,提交之后服务器的处理就是后端处理,处理完之后给你一个新的界面显示,这就是前端显示。下面是实例说明:
修改功能:
1.CategoryServlet.edit()方法,作用是前端展示。展示的内容是什么呢?前端提出了这样的要求——当你想要修改一个分类的时候,我需要展示出这个分类当前的属性。所以当你点击“编辑”按键之后,就进入了edit()方法,准备好了要给前端的数据之后,跳转到相关的xxx.jsp。进入那个jsp后,你要做的就是在表单里填写相关信息,然后提交。提交之后来到servlet的相关方法,update()中处理,然后跳转去list()。
3.4严格来说并不是和之前并列的,它是3.1和3.3的合并,我放在这里介绍是为了让大家能加深印象。

4 小结与预告

其他的业务逻辑和分类管理一样,只是具体的DAO操作不同,结合具体的业务逻辑,利用Model层获取要传递给前端的数据即可。
预告
对于这个系列,还剩下关于JSP的知识点讲解,图片上传方面的代码详解,但是我觉得这些都不是这一阶段学习的重点,所以随缘更新这些内容吧。
下一期可能要隔一段时间,我准备学SpringBoot了。说不定下一阶段,就是SpringBoot的项目实战了。

猜你喜欢

转载自blog.csdn.net/w8253497062015/article/details/85801882