终极版Servlet——我只能提示您路过别错过
终极版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匹马行天下”和学习心得分享“匹马行天下”,在分享中进步,越努力越幸运,期待我们都有美好的明天!
支持我的朋友们记得点波推荐哦,您的肯定就是我进步的动力。
终极版Servlet——我只能提示您路过别错过的更多相关文章
- 软件工程课堂作业(五)——终极版随机产生四则运算题目(C++)
一.升级要求:让程序能接受用户输入答案,并判定对错.最后给出总共对/错的数量. 二.设计思想: 1.首先输入答案并判断对错.我想到的是定义两个数组,一个存放用户算的结果,另一个存放正确答案.每输出一道 ...
- 阿里正式发布《Java开发手册》终极版!
摘要: 本文讲的是阿里正式发布<Java开发手册>终极版!,别人都说我们是码农,但我们知道,自己是个艺术家.也许我们不过多在意自己的外表和穿着,但我们不羁的外表下,骨子里追求着代码的美.质 ...
- 08重编终极版《东邪西毒:终极版》DVD粤语中字
1.东邪西毒].Ashes.of.Time.1994.384p.DVDRip.x264.ac3-DTMM.mkv 这个版本最清晰 ,可惜删减了,只有87分钟,粤语,1.4G. 2.东邪西毒(初始版). ...
- 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》
终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...
- python3 购物车 增改查终极版~
还是先来条NLP再说,快没了,以后想抄还没有... 十一,没有挫败,只有回应讯息 “挫败”只是指出过去的做法得不到预期的效果,是给我们需要改变的信号. “挫败”只是在事情画上句号时才能用上,欲想事情解 ...
- RESTful API终极版序列化封装
urls: from django.conf.urls import url from app01 import views urlpatterns = [ # url(r"comment/ ...
- 通过xshell在linux上安装mysql5.7(终极版)
通过xshell在linux上安装mysql5.7(终极版) 0)通过xshell连接到远程服务器 1)彻底删除原来安装的mysql 首先查看:rpm -qa|grep -i mysql 删除操作(一 ...
- .net core 3.1简体中文语言包,英文只能提示变成中文!
.net core 3.1简体中文语言包,英文只能提示变成中文!这个是我自己手动用谷歌翻译翻译的一批文档,已经把.net core3.1完全翻译了,由于是翻译器翻译,所以怕翻译有错漏,所以没有去掉英文 ...
- 微软不将《帝国时代》终极版上架Steam的原因到底是什么?
毋庸置疑的是,<帝国时代>绝对是一款经典游戏.作为一款RTS名作,在过去的20年时间中<帝国时代>销量超过2000万部.数以千万计的玩家都沉溺于这款游戏中,<帝国时代&g ...
随机推荐
- OpenDaylight即将迈入“七年之痒”?
前段时间看到一篇文章,叫<OpenStack已死?>,讲述了OpenStack自2010年提出之后的9年间各方利益牵扯导致的一系列问题,尽管最终作者的结论是OpenStack现在只是进入了 ...
- Hadoop 学习之路(四)—— Hadoop单机伪集群环境搭建
一.前置条件 Hadoop的运行依赖JDK,需要预先安装,安装步骤见: Linux下JDK的安装 二.配置免密登录 Hadoop组件之间需要基于SSH进行通讯. 2.1 配置映射 配置ip地址和主机名 ...
- Python开发【第七篇】: 面向对象和模块补充
内容概要 特殊成员 反射 configparser模块 hashlib模块 logging模块 异常处理 模块 包 1. 特殊成员 什么是特殊成员呢? __init_()就是个特殊的成员. 带双下划线 ...
- leadcode的Hot100系列--二叉树创建和遍历
很多题目涉及到二叉树,所以先把二叉树的一些基本的创建和遍历写一下,方便之后的本地代码调试. 为了方便,这里使用的数据为char类型数值,初始化数据使用一个数组. 因为这些东西比较简单,这里就不做过多详 ...
- concat的应用
今天遇到一个问题,有一张车辆信息表,一张车辆品牌表,他们之间的品牌进行关联, 但是车辆信息表中品牌的名称较长,而品牌表名称较短.例如:车辆表:东风标致:品牌表:标致. 为了达到两种表的“模糊关联”. ...
- Oracle数据库常用的脚本命令(一)
--连接数据库的命令connect,用于切换连接用户,简写形式conn--语法格式:conn 用户名/密码conn yanln/yanln --显示当前登录的用户show user --执行操作系统的 ...
- C++学习书籍推荐《C++ Primer 第四版》下载
百度云及其他网盘下载地址:点我 编辑推荐 <C++ Primer中文版(第4版)>对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使<C++ Primer中文版 ...
- 浅谈 Attention 机制的理解
什么是注意力机制? 注意力机制模仿了生物观察行为的内部过程,即一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制.例如人的视觉在处理一张图片时,会通过快速扫描全局图像,获得需要重点关注的目 ...
- Bzoj 2839 集合计数 题解
2839: 集合计数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 495 Solved: 271[Submit][Status][Discuss] ...
- Scala 函数式编程(一) 什么是函数式编程?
为什么我们需要学习函数式编程?或者说函数式编程有什么优势?这个系列中我会用 scala 给你讲述函数式编程中的优势,以及一些函数式的哲学.不懂 scala 也没关系,scala 和 java 是类似的 ...