前言:前一段时间写了好多Servlet和JSP相关的博客,自以为理解的差不多了,岂不知人外有人,天外有天,代码外还有源码,受高人点拨,看了一下Servlet源码,感触颇深,再也不敢说懂了,不明白生活的本质,你永远活在梦里。当然,只代表个人一点心得,如果有大佬路过,还望海涵,菜鸟还在路上。

吃一堑长一智

为什么那些大佬那么牛逼,不为什么,就是因为他们比别人多问了些为什么。看着感觉像绕口令一样,其实生活就是这样,透过本质看世界,其实。。。。。。。。。也就那么回事。

今天受老师点拨,明白了一些知识和人生道理,可惜小生才疏学浅,只是理解了一些皮毛,但这些皮毛若无人点拨,我何以学编程,何以成事业,还是那句话,“读万卷书不如行万里路,行万里路不如有高人指路,高人指路还需自己顿悟”,对自己做好定位,在进步中度过每一天,相信生活还是很美好的。

走进编程,看看为什么

这段时间学了Servlet和JSP,做到了应用层,但没有做深入研究,对Servlet的接收请求和响应处理,Servlet的ServletContext域对象的使用,以及页面的转发和重定向的使用做了一些案例,后来学JSP,学了JSP中各种语法声明,标签引入,脚本语法,内置对象等,结合JSP+JavaBean模式和JSP+Servlet+JavaBean(MVC)模式做了一些案例应用。虽然对这些知识点会用了,但我觉得应该转换一下思维,应该先提出为什么,有了问题之后查询并解决问题。

比如说:

为什么说JSP是Servlet?

为什么JSP中有内置对象,不用实例化就能使用?

为什么<%!  %>中写声明 、 <%  %>中写逻辑代码片段 、 <%=%>中写表达式?

为什么要用EL表达式和JSTL?

为什么JSP使用的人越来越少?

为什么。。。。。。。。。。。。?

思维决定高度

先说为什么说JSP是Servlet,不解释,看源码就知道了。之前做的好多案例用的案例都是IDEA,这次用Myeclipse演示,当然换工具是有原因的,方便查看源码。

首先,找到你的tomcat安装包,在安装包中的work文件夹下找到你的Web项目,再找到如下图所示的源文件。

在Web项目中的index.jsp上我写了如下图所示的代码,观察这些脚本语句在类中的位置

我在这描述一下,然后你再对应着图去看

首先看声明

声明的位置出现在类体中,它是一个成员变量,有默认值,所以不赋值也能直接输出。

再看代码片段和输出表达式

代码片段在一个方法体中,所以<%%>代表方法体,而<%=i%>相当于out.print(i );,我想对应到这,应该能看明白点什么吧,还有那些内置对象,都封装到了类中,所以你在JSP中使用的时候能直接使用不用去实例化对象。所以说,JSP就是Servlet类,你如果明白原理,对应于类中,学起来就不会那么难了(至少我是这样认为的)。

明白这些再看,JSP中写那些代码片段的时候,是不是感觉很麻烦,对,确实很麻烦,这时候就出现了一个叫JSTL的东西,它简化了在JSP中Java片段的书写,用一些标签就能实现一些复杂的功能,但是这个东西是别人封装的,你虽然会用,但终究是别人的,如果你觉得不服气,你也可以自定义标签,自己封装一个标签库,在JSP中快速开发,之前JSP很火的时候许多公司都有自己的标签库,对,很火的时候,那现在为什么JSP不火了呢?按我的理解,应该是现在有各种端口,安卓端,移动端,等等,用的多的是前后端分离开发,对JSP的解析太局限,不像JSON,任何端口中都能解析。。。。。。。。。。。点到为止吧,在这只是听说,不敢自己瞎说了,怕误导别人,如果有大佬路过,求指教。

结束

此篇让你先从类的角度认识JSP,对JSP多一些理解,下篇我会说到JSTL和自定义标签,欲知后篇如何,请看下回讲解。

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

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

JSP是Servlet详解的更多相关文章

  1. Servlet详解

    原文出处:http://blog.csdn.net/q547550831/article/details/50458456 Servlet详解 基本概述 Session在计算机中,尤其是在网络应用中, ...

  2. JSP 注释的详解及简单实例

    转自:https://www.jb51.net/article/124727.htm JSP 注释的详解及简单实例 一 三种格式 二 举例 ? 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  3. Java Servlet详解(体系结构+注解配置+生命周期)

    Java Servlet详解(注解配置+生命周期) 什么是Servlet : (Server applet)? 顾名思义:服务端的小程序 Servlet只是一个接口,定义了Java被浏览器访问到(To ...

  4. Java Web(一) Servlet详解!!

    这篇文章到上一篇,距离的有点遥远呀,隔了大概有两个月把,中间在家过了个年,哈哈~ 现在重新开始拾起,最近在看一本个人觉得很棒的书,<Java Web 整合开发王者归来>,现在写的这一系列基 ...

  5. (转)Java Web(一) Servlet详解!!

    https://www.cnblogs.com/whgk/p/6399262.html 这篇文章到上一篇,距离的有点遥远呀,隔了大概有两个月把,中间在家过了个年,哈哈~ 现在重新开始拾起,最近在看一本 ...

  6. web开发(一)-Servlet详解

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6399262.html>,在此仅供学习参考之用. 一.什么 ...

  7. jsp pageEncoding属性详解

    Java pageEncoding原理详解 首先看下文章解释: 意思是jsp文件本身的编码 巨大的疑问:这里有一个很大的问题,既然你都已经从jsp中读到了这条属性,证明内容读取正确,那你还需要知道这条 ...

  8. JavaEE系列之(一)JSP基础知识详解

    一.JSP基础语法     1.JSP简介        JSP(Java Server Pages),其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签.JSP是一种动态网页 ...

  9. JSP执行过程详解

    复习JSP的概念 JSP是Java Server Page的缩写,在传统的HTML页面中加入JSP标签和java的程序片段就构成了JSP. JSP的基本语法:两种注释类型.三个脚本元素.三个元素指令. ...

随机推荐

  1. Tomcat8史上最全优化实践

    Tomcat8史上最全优化实践 1.Tomcat8优化 1.1.Tomcat配置优化 1.1.1.部署安装tomcat8 1.1.2 禁用AJP连接 1.1.3.执行器(线程池) 1.1.4 3种运行 ...

  2. C#中巧用Lambda进行数据的筛选查询等处理

    场景 有一个Record对象的list,如果要根据其某个属性CycleIndex进行分组,类似于sql的group by分组查询. 如果要在这个这个list中查找出符合某种条件的数据,类似于sql的w ...

  3. Chrome浏览器Json查看插件JsonHandle下载以及无法安装插件的解决方法

    场景 在使用Chrome浏览器查看Json数据时如果没有插件会挤作一团. 安装JsonHandle插件后 博客: https://blog.csdn.net/badao_liumang_qizhi 关 ...

  4. DataGridView中在新增行时怎样设置每个Cell单元格的字体样式

    场景 DataGridView怎样实现添加.删除.上移.下移一行: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10281414 ...

  5. 五个常用的CSS简写

    1,margin/padding. (演示仅为margin,padding同理,需注意的是padding没有auto) 2.background. background: [background-co ...

  6. JavaWeb之Fliter & Listener

    Fliter & Listener Listener 监听器 作用 监听某一事件的发生.状态的改变. 监听器内部实现机制 接口回调 接口回调 A在执行循环,当循环到5的时候, 通知B. 事先先 ...

  7. RiscV汇编介绍(2)-编译过程

    elf文件全称是Executable and Linkable Format,可执行链接格式,elf文件中除了机器码之外,还有段加载地址,运行入口地址,数据段等. elf文件格式主要有以下三种: 可重 ...

  8. python async

    理解 python 的 async:1. 协程后面的技术也是 IO 多路复用, Nginx 和 nodejs 都充分利用了这种机制. 2. Flask 线程中为什么不能直接使用标准库 asyncio ...

  9. Python中线程的使用

    并发:多个任务同一时间段进行 并行:多个任务同一时刻进行 线程的实现 线程模块 Python通过两个标准库_thread 和threading,提供对线程的支持 , threading对_thread ...

  10. Matplotlib Date Index Formatter 日期索引格式化学习

    官方网站:https://matplotlib.org/gallery/ticks_and_spines/date_index_formatter2.html#sphx-glr-gallery-tic ...