javaEE开发中常用的一些技术(概述)

    前两天去一家公司面试(注:本人第一次面试),在地铁上还在各种刷面试题,什么线程与进程的区别、“==”与“equals”的区别、session与cookie、各种排序方法、怎么直接退出多重循环、三大框架(ssh、ssm)、JVM、垃圾回收机制等等等等。

    提前到了约定地点,递交了简历,面试官是个大姐姐,眼神凝重的看了看我的简历;“我看你简历上写着你做过一个“xx物流管理项目和xx商城项目是吧?(看到这句,你是不是意识到了什么?那都不重要,我就是来分享经验的)那你说说,你做这些项目都用到了哪些技术吧。”

    “技术,用到的技术其实还挺多的,比如说..e.~..”,就在此时,神奇的事情发生了,我TM脑子突然短路,导致我大脑一片空白,别说是大脑一片空白了,我感觉我就是完全丧失了语言能力啊。“e~~”,面试官看了看我,“别紧张,知道啥就说啥”。而我也是尴尬而不失礼貌的冲着人家笑了笑。就这样,气氛一下子凝重了许多,短短几分钟简直=半个世纪啊,我都想站起来走人了,劳资二十多年的颜面都被自己给丢尽了,,,终于,我还是开口了,脱口而出就是“前端的话,我用到了向bootStrapjquery、angularJS等等一些技术”,不说还行,说完这一句,我感觉更不好了。然后赶紧补充道:“后端的话用到的有ssh三大框架什么的”。什么的?什么什么的,我感觉你就是在CSDN看了几篇文章就来面试的吧....到最后面试官小姐姐不仅没有生气也没有急,还让我回去等通知,真是太好了...呵呵

    上述的情况,的确就是我太紧张了。这也是很多新手的通病吧,不过,但是!这都不是我今天要说的重点。重点就在于那句“你都用到过什么技术?”。

-----------------------  正题分界线  -----------------------------

    首先咱们来分析一下什么技术,技术就是你所掌握的“知识”,不管是编程思想、服务、框架、插件、操作系统什么的,都可以叫做技术。而我当时语塞的原因就是把技术跟平时学到的知识分开来想了,觉得java是技术,而spring叫做框架。这想法,这种理解,反正我现在是理解不了我当时是怎么理解的。所以说,如果你被问到用过什么技术,就平时知道的,就怼就对了,当然,光怼个名字还不行,最好加点解释和自己的理解,,要是再深究,就该讲讲原理以及怎么用了。在这里,就大概讲一下javaWeb开发中常用的一些技术:

    从前往后说吧,jsp就不说了,现在不都要求前后端分离嘛,用HTML+ajax这样更可以实现这个问题。html的编写,,虽然这属于前台的范畴,但是作为一个专业的开发人员,了解了解肯定也是很有必要的,还包括一些前端的框架及技术,例如:bootstrap、easyUI、AngularJS、jquery、js、css等等,以及开发中设计的一些协议,像HTTP协议。

   到了后台,就需要接收请求,处理请求,做出响应。为了开发就不得不知道传说中的三层架构了,即web层(表现层)、service层(业务层)与dao层(数据访问层),那么就引出了我们开发中的三大框架(目前比较主流的有ssh/ssm,当然还有别的),三大框架分别对应的是:

    web层:struts、struts2、springmvc

    dao层:hibernate、mybatis

    以及我们的万金油 spring

    而这些都是基于我们的“javaweb”开发的核心:AJAX、JSP、JavaBean、Servlet、EL、JSTL、JSF等。


AJAX

Ajax 是一种用于创建快速动态网页的技术。即在无需重新加载整个网页的情况下,能够更新部分网页的技术。

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

        其精髓就在于Asynchronous (异步),那什么是异步呢,往下看

    传统的开发中,如下图,发出一次请求,服务器做出响应,这是需要时间的,而这段时间,你还不得不等,因为不等,得不到数据啊。


javaEE开发中常用的一些技术(概述)

把上图中的黑色线条作为一个进程,当发出请求时,服务器接收、处理、做出响应,中间的空白就是完成这些操作需要的时间。前端等于在发出请求后什么也没做,干等,刷新页面时的白屏,你敢说你没经历过?这不管是对于用户来说还是对于开发人员来说,都是一种不好的体验。

        于是乎,ajax诞生了,那么它又跟上面的那种有什么不同呢?继续上图:

javaEE开发中常用的一些技术(概述)

    用了ajax之后就是这个样子了,黑色的依然是进程,可以看出,用了ajax之后,请求到响应的时间里,并没有影响整体的进程。在这里,就可以把ajax比作是又多开了一个线程一样,做出的响应依然是能够到达前端,但是前端并没有太大的变化,并没有刷新整个页面,而是做到了局部的刷新。而且在这期间完全不会影响你对页面其他部分的操作,因为其它部分根本就没有变化。

===========================  扯淡分界线(开始)

        这使我突然想到了,最近看的一个剧场版:捷德、欧布、赛罗在一起打怪兽,奥特曼打怪兽(可以把这个看成是一个进程);

        在怪兽发大招的时候,赛罗和欧布替捷德挡下了怪兽的大招,就在赛罗快要撑不住的时候,他变身成了闪耀形态要带着欧布一起穿越到未来,躲过致命一击(这可以看作是一个请求);

        而此时就剩下捷德奥特曼一个人在打怪兽(这说明进程并没有停止);

        过了一段时间之后,赛罗它们又回来了,因为相对于之前来说,现在已经是未来了(这说明,请求得到了响应);       

         而且赛罗和欧布都变成了满血,而捷德由于没有参与刚才的穿越,所以并没有改变(局部刷新),        

        然后奥特曼们继续愉快地打小怪兽....        [详情见《捷德奥特曼2018剧场版:连接吧!心愿》]呵呵~

                                                                                           扯淡分界线(结束)    ============================================



        ajax在项目中的应用,我们可以通过下面这张图来了解一下

javaEE开发中常用的一些技术(概述)

其大致流程就是:

    1.客户端发出一个ajax请求;请求包括请求的路径、参数、回调函数等,具体可以参考JQuery-ajax;这个请求可以以各种方式触发,例如页面加载后触发、点击事件触发、定时触发等等。

    2.服务器端接收请求并作出响应;响应的数据一般以json字符串的形式,当然也可以是xml等格式的数据。关于json格式的数据响应,我们可以利用第三方的框架完成,例如比较主流的fastJson、Jackson等等,当然也可以用struts2的json插件完成。

    3.触发回调函数,做出相应的解析以及操作。

是不是觉得跟普通的http请求一样,没错,是一样,但它的强大之处就在于,不刷新整个页面,做到局部刷新