终极版Servlet——我只能提示您路过别错过

Java框架

浏览数:12

2019-8-15

终极版Servlet

前言:这两天看了SSM框架,本来是想往后继续学的,脑门一转又回来了,不能就这么不声不响的走了,看了这么多天的Servlet,再写最后一篇做个告别吧,这篇起名为终极版,是我现在所能理解的最高境界,献给需要的朋友们,希望有所帮助,如有大佬路过,还望海涵,菜鸟依然在路上。

认识Servlet

想想我们的JavaSE学习历程,从最简单的常量,变量,数据类型到函数,数组,面向对象再到工具类的学习,一路披荆斩棘,所向披靡杀过来了,却发现在大学忙活了大半年,却一直在控制台输出,噫吁嚱,危乎高哉!编程之难,难于上青天!哈哈,其实说这些话的朋友,不是编程难,只是你还没发现编程之美,要想看美的风景,就要“一览众山小”,同样,要想发现编程之美,你要“一览编程美”,思维决定高度,这时候你该想,总在控制台输出,有什么意思,浏览器上的东西不也是程序员写出来的吗,那什么时候能干点新鲜的。你要是真这样想了,别急,不论干什么你得了解需求,要想高飞浏览器,先看篇博客《B/S和C/S》普及一下常识。了解完了之后,我来给你解说,要想与浏览器相关联,你必须学习Serlvet,不为什么,就是因为Servlet是沟通前端和后端的桥梁(有点皮了,不知道这句话算不算病句,哈哈),你想想,你在浏览器的地址栏里输入一个网址,比如说https://www.cnblogs.com/zyx110/,这就是你在浏览器向服务器发送了一次请求,然后你就发现你的浏览器页面就跳转到我的博客园页面(就是这么神奇,多试试,增加点人气),这是你向服务器发送请求后服务器给你的响应,而这个过程就是传说中的Servlet完成的,Servlet就是专门负责请求数据、处理请求、完成响应的,所以,知道Servlet的重要性了吧。

学习Servlet

看完上面这一段你就应该懂Servlet了吧(懂个毛,门都还没入呢),下面我来教你如何学习Servlet.说到学习,我不得不再重复一下“二八定律”的重要性,学习切忌死学,既然都知道兴趣是最好的老师,那何不自己培养自己的兴趣呢,再赠你一篇“教你爱上编程妹子” ,我的学习方法,技术知识都分享给你,接下来的就看你自己了。我现在只引导你去学习那必须掌握的20%,我以问题的形式先写出来,然后给你学习路线,你带着问题去学习:

如何实现Servlet?

什么是JavaWeb四大域?

如何理解转发和重定向?

先说第一个问题,实现Servlet有三种方式

 

具体如何实现去看《Servlet学习》,我在这主要讲思维讲方法,不讲具体的知识点,知识是死的,写这浪费白纸,菜鸟教程上全是知识点,去查就行了,思维才是最重要的,因为这需要自己去悟,长大后很少有人会给你讲这些,我也是听别人给我讲,自己领悟,但我想把我收获的分享给别人,希望能对一些朋友有所帮助。

好,进入主题,知道如何实现Servlet后,了解Servlet的生命周期,这个自己看,然后不知道大家看没看过一些玄幻小说,玄幻小说中有许多中都有空间戒指,空间袋等用来存储东西的,就拿空间戒指说吧,不知道有没有看过《斗破苍穹》的朋友,这部小说里就有空间戒指,叫做“纳戒”,此物内部自成空间,能容纳很多东西,戴在手上就跟普通戒指一样。为什么要提这个“纳戒”,废话,当然跟学习有关了,要是想看小说,就看看我写的小说《匹马行天下》,不仅能丰富你的精神世界,还能增长知识,何乐而不为呢(其实是想拉点粉,哈哈,记得关注哦)。再回到戒指,之前提到了JavaWeb四大域,这个域有点抽象,所以你先理解为空间戒指,Servlet有一个戒指叫ServletContext,里面能存放东西,这还不是神奇的,最神奇的是存到这个“戒指”里的东西不仅自己能拿,别的Servlet都能共享,,同一个服务器下的所有Servlet都能存和取“戒指”里的东西,怎么样,够神奇吧。具体在“戒指”里是怎样存东西和取东西的还是看博客《进一步理解Servlet》.

好,明白了JavaWeb四大域,再聊聊别的,你看你在点浏览器页面上的那些链接的时候,是不是页面会一跳一跳的,很神奇,不信你可以再试着点点这个https://www.cnblogs.com/zyx110/(哈哈,淡定,别打我),是不是又跳到我的博客园页面了。说重点,这种跳转也是有名字的,一种叫转发,另一种叫重定向。两个都是跳转,名字不一样,功能也是不一样的,我大概说两种区别:

首先要知道,转发在跳转的时候带的东西(参数)能被他要跳转的页面接收到,也是用“空间戒”带的东西,只不过这个“空间戒”的名字叫Request域,而重定向在跳转的时候,他可以在“空间戒”里装东西,但是他要跳的页面不能通过Request域(空间戒)接收他带的东西,他如果非要让他带的东西让别人接收的话可以通过ServletContext域(空间戒),看破不说破,让重定向留点隐私,你们自己去看吧。

还有一点要知道,就是转发只请求一次服务器,而重定向请求两次。怎么理解,我举个例子,准备好,我要开车了。知道我的都知道,我是个大二的学生,咳咳,先做个自我介绍,我叫***,男孩,性格活泼开朗,爱交朋友,爱学习,没女朋友(那个,,,先就这吧,编不下去了),我用我自己举个例,假如说我毕业后要领毕业证,本来很高兴的事,不想东窗事发,由于在校期间挂科补考没过,学校不给发毕业证。怎么办,我记得像热锅上的蚂蚁,大山里走出来的孩子要是拿不上毕业证,那不得让村里人笑话,情急之下我开始找关系,注意了,现在分两种情况:

情节一:

我费了九牛二虎之力找到了一位主任(是谁我也不知道,故事需要吧,先假想一个,现实很残酷的,哪有这么容易找到的),这个主任就是负责这块的,我也不能空着手去吧,拿出毕生心血买了两条中华烟再加两瓶茅台(这就是参数,拿这些应该差不多了吧),好,找到某主任跟他求情,主任一看我态度不错,主要还知道他喜欢喝两口,买酒了,就答应了,说我得跟校长说一下才行。我说好的好的,谢谢主任。然后主任拿着我送的中华烟和茅台酒,回家藏到柜子里了,然后拿着过年没吃完剩下的两条黑兰州去找校长,校长好说话,主任一说就答应了,毕竟还是要给主任点面子的。那这事算成了,不就我就得到通知,说来学校领毕业证,然后就证书到手了。

来,分析故事(纯属虚构,别当真),这个过程中不管中间是如何周转的,我是不是只找了一次主任,然后事成后不管是校长说的还是主任说的,总之我得到了一个消息,这就是转发,只请求一次服务器,中华烟、茅台、黑兰州是我带的参数,怎样,理解了吧。

 

情节二:

我还是费劲九牛二虎之力找到了某主任,但我说了,生活不总是一帆风顺的,这不,带着烟酒(参数)去找某主任,可主任不吃这套,给拒绝了,但我也不好把送进去的东西再带走吧,一咬牙一跺脚,就送他了,然后灰溜溜的回去了,到家后再找,看看有没有跟情节一一样的主任,这是后话了。

分析故事:从带烟酒(参数)找主任被拒绝,回来后再找别的主任,这整个过程我跑了两次,这就相当于你向服务器发出请求,然后服务器给你响应说访问不了,你再去重新请求,然后你又发出请求跳到一个页面上,这就是重定向。

 

故事补充:情节二中你再去找别的主任,之前买的东西没有了吧,虽然故事中是把东西留第一个主任那了,回归到知识点的话,这有个知识点,就是Request域的生命周期是只存在于一次请求,所以等到重定向第二次请求服务器的时候,参数已失效。

具体学习转发和重定向看博客《重定向和转发是什么垃圾》。

补充:再补充一点,故事纯属虚构,我还没挂过科,在这提示并希望学弟学妹们在真实生活中千万不要挂科,千万不要,千万!说三遍,很重要!!!

认识JSP

前面介绍并学习了Servlet,认真看了我推荐的博客的朋友肯定知道我们能通过Servlet向浏览器页面输出HTML样式,但是虽然可以输出,但是写着很麻烦,代码量很大,容易出错,就像下面图中所示的一样,这时候就到了JSP闪亮登场的时候了。

 

JSP不仅成功解决了页面显示代码量大的困难,而且里面还能写Java代码并执行。功能也算是很强大了。之前我提到了,JSP是Servlet,其底层就是用Servlet写的,可以看看源码,如何看源码和如何知道JSP是Servlet,看《教你看JSP源码》,知道了这些之后就看如何去学习JSP,关于JSP的知识我之前写的很全,就不在这写了,看我博客就行《JSP学习一》  ,《JSP学习二》。

认识JSTL和EL表达式

JSP固然强大,可是也有不足,在写Java语句和HTML语句的时候,嵌套在一起书写也是很麻烦,看下图

 

这样写是不是感觉也很麻烦,这时候JSTL和EL表达式也都闪亮登场,EL表达式语法简单,使用方便,用${  }代替了<%=  %>,简化了书写,还有JSTL,一些大牛们自己封装了一套代码,然后以标签的形式让我们使用,实现快速开发,在JSP很火的时候,许多公司都有自己的标签库,都是自己封装的,这样就提高了开发效率,因为我们可以自定义标签,可以自己封装代码,把一些常用的功能,比如说分页,封装成标签,经过一次封装后,下次不光能自己用,也能让别人用,许多代码只需几个标签快速实现,你的能力有多大,舞台就有多大。

我靠,纯手写3500字了,真能说,我不说了,好累好困,大家都在过暑假,而我却比在学校还忙,希望越努力越幸运吧!

是时候跟Servlet、 JSP正式告别了,以后我可能不会再写Servlet了,至少目前这个暑假应该不会了,别人都说过时的JSP我却研究了这么久,唉,,,,,,不知道有没有意义,不说了,先这样吧,此篇完,欲知后事如何,请看下回分解。

*****************************************************************************************************

我的博客园地址:https://www.cnblogs.com/zyx110/

转载请说明出处

我不能保证我所说的都是对的,但我能保证每一篇都是用心去写的,我始终认同“分享的越多,你的价值增值越大”,欢迎大家关注我的技术分享“Java匹马行天下”和学习心得分享“匹马行天下”,在分享中进步,越努力越幸运,期待我们都有美好的明天!

支持我的朋友们记得点波推荐哦,您的肯定就是我进步的动力。

 

作者:泰斗贤若如