终极版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 ...
随机推荐
- You can't specify target table 'tbl_students' for update in FROM clause错误
此问题只出现在mysql中 oracle中无此问题 在同一语句中,当你在select某表的数据后,不能update这个表,如: DELETE FROM tbl_students WHERE id NO ...
- Spark学习之路(七)—— 基于ZooKeeper搭建Spark高可用集群
一.集群规划 这里搭建一个3节点的Spark集群,其中三台主机上均部署Worker服务.同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002和hadoop00 ...
- vuex分模块3
nuxt 踩坑之 -- Vuex状态树的模块方式使用 原创 2017年12月20日 11:24:14 标签: vue / nuxt / vuex / 模块化 / 状态管理 874 初次看到这个模块方式 ...
- 【运维实战】利用tar -g 实现简单全量备份和增量备份(带演示)
备份产生 全量备份指完全备份,增量备份指针对上次至今的修改进行备份.linux提供tar -g可实现备份功能. 第一次运行 tar -g 备份存放目录/snapshot -czvf 备份存放目录/备 ...
- Java连载3-编译与运行阶段详解&JRE,JDK,JVM关系
·一. 1.JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html ...
- Hive入门(一)
1 Hive中的数据定义 1.1 存储与创建 Hive会为每个数据库创建一个目录.数据库中的表以子目录的形式存储. 有一个例外是default中的表,因为这个库本身没有目录. 数据库的顶级目录是hiv ...
- POJ 2887:Big String(分块)
http://poj.org/problem?id=2887 题意:给出一个字符串,还有n个询问,第一种询问是给出一个位置p和字符c,要在位置p的前面插入c(如果p超过字符串长度,自动插在最后),第二 ...
- scrapy基础知识之 CrawlSpiders(爬取腾讯校内招聘):
import scrapyfrom scrapy.spider import CrawlSpider,Rulefrom scrapy.linkextractors import LinkExtract ...
- 2050编程赛 冰水挑战 HDU 6495
题目地址:https://vjudge.net/problem/HDU-6495 思路:我们需要维护的是挑战了n个之后剩余体力值,剩余体力值越大越好dp[N(i)][N(j)],第一个维度,记录当前是 ...
- 跟我学SpringCloud | 终篇:文章汇总(持续更新)
SpringCloud系列教程 | 终篇:文章汇总(持续更新) 我为什么这些文章?一是巩固自己的知识,二是希望有更加开放和与人分享的心态,三是接受各位大神的批评指教,有任何问题可以联系我: inwsy ...