终极版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——我只能提示您路过别错过的更多相关文章

  1. 软件工程课堂作业(五)——终极版随机产生四则运算题目(C++)

    一.升级要求:让程序能接受用户输入答案,并判定对错.最后给出总共对/错的数量. 二.设计思想: 1.首先输入答案并判断对错.我想到的是定义两个数组,一个存放用户算的结果,另一个存放正确答案.每输出一道 ...

  2. 阿里正式发布《Java开发手册》终极版!

    摘要: 本文讲的是阿里正式发布<Java开发手册>终极版!,别人都说我们是码农,但我们知道,自己是个艺术家.也许我们不过多在意自己的外表和穿着,但我们不羁的外表下,骨子里追求着代码的美.质 ...

  3. 08重编终极版《东邪西毒:终极版》DVD粤语中字

    1.东邪西毒].Ashes.of.Time.1994.384p.DVDRip.x264.ac3-DTMM.mkv 这个版本最清晰 ,可惜删减了,只有87分钟,粤语,1.4G. 2.东邪西毒(初始版). ...

  4. 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》

    终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...

  5. python3 购物车 增改查终极版~

    还是先来条NLP再说,快没了,以后想抄还没有... 十一,没有挫败,只有回应讯息 “挫败”只是指出过去的做法得不到预期的效果,是给我们需要改变的信号. “挫败”只是在事情画上句号时才能用上,欲想事情解 ...

  6. RESTful API终极版序列化封装

    urls: from django.conf.urls import url from app01 import views urlpatterns = [ # url(r"comment/ ...

  7. 通过xshell在linux上安装mysql5.7(终极版)

    通过xshell在linux上安装mysql5.7(终极版) 0)通过xshell连接到远程服务器 1)彻底删除原来安装的mysql 首先查看:rpm -qa|grep -i mysql 删除操作(一 ...

  8. .net core 3.1简体中文语言包,英文只能提示变成中文!

    .net core 3.1简体中文语言包,英文只能提示变成中文!这个是我自己手动用谷歌翻译翻译的一批文档,已经把.net core3.1完全翻译了,由于是翻译器翻译,所以怕翻译有错漏,所以没有去掉英文 ...

  9. 微软不将《帝国时代》终极版上架Steam的原因到底是什么?

    毋庸置疑的是,<帝国时代>绝对是一款经典游戏.作为一款RTS名作,在过去的20年时间中<帝国时代>销量超过2000万部.数以千万计的玩家都沉溺于这款游戏中,<帝国时代&g ...

随机推荐

  1. 【转+存】JVM指令集

    jvm指令集: 转载地址:https://www.cnblogs.com/yaoyinglong/p/4300447.html 一.未归类系列A 此系列暂未归类. 指令码    助记符         ...

  2. 点菜网---Java开源生鲜电商平台-商品基础业务架构设计-商品分类(源码可下载)

    点菜网---Java开源生鲜电商平台-商品基础业务架构设计-商品分类 (源码可下载) 说明:我们搞过电商的人都可以体会到,搞生鲜电商是最复杂的,为什么复杂呢?我总结了有以下几个业务特性决定的: 1. ...

  3. Python笔记【4】_字典学习

    #!/usr/bin/env/python #-*-coding:utf-8-*- #Author:LingChongShi #查看源码Ctrl+左键 ''' dict:字典以“{}”包围,以“键:值 ...

  4. java与WebService对接案例--生成代码方法

    前端时间出差做项目,因为我们给对三方工厂做Mes项目,其中有一个报工环节,需要我们的Mes中将产品提交到他们的U9(Erp)上,但是由于u9是用友的产品,用c#写的,而我是用java写的,那么WebS ...

  5. 理论+实践解析“IT治理”之模式与原则

    IT治理工作作为企业信息化建设的上层建筑,扮演着及其重要的角色.本文结合作者的学习及实践经验给出一些借鉴. 一.IT治理概述 1.1 何为IT治理 在企业信息化建设中的最大问题,往往不是技术问题,也不 ...

  6. 分享SQL,查询用户最近一次购买时间间隔

    (1)先创建一张测试表: CREATE TABLE `用户购买订单` ( `购买时间` datetime(6) NULL DEFAULT NULL, `用户` varchar(20) CHARACTE ...

  7. python generator与coroutine

    python  generator与coroutine 协程 简单介绍 协程,又称微线程,纤程,英文名Coroutine.协程是一种用户态的轻量级线程,又称微线程.协程拥有自己的寄存器上下文和栈,调度 ...

  8. scrapy基础知识之 CrawlSpiders(爬取腾讯校内招聘):

    import scrapyfrom scrapy.spider import CrawlSpider,Rulefrom scrapy.linkextractors import LinkExtract ...

  9. Java学习笔记之---类和对象

    Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...

  10. 你不得不知的几个互联网ID生成器方案

    服务化.分布式已成为当下系统开发的首选,高并发操作在数据存储时,需要一套id生成器服务,来保证分布式情况下全局唯一性,以确保系统的订单创建.交易支付等场景下数据的唯一性,否则将造成不可估量的损失. 基 ...