前言:前一段时间写了好多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. hibernate关联关系(多对多)

    数据库的多对多数据库中不能直接映射多对多 处理:创建一个桥接表(中间表),将一个多对多关系转换成两个一对多 注:数据库多表联接查询 永远就是二个表的联接查询 注2:交叉连接 注3:外连接:left(左 ...

  2. JQuery操作attr、prop、val()/text()/html()、class属性

    1.1 arr操作   设置单个属性 // 第一个参数:需要设置的属性名 // 第二个参数:对应的属性值 // $obj.attr(name, value); // 用法举例. $('img').at ...

  3. 基于vue+uniapp直播项目|uni-app仿抖音/陌陌直播室

    一.项目简介 uni-liveShow是一个基于vue+uni-app技术开发的集小视频/IM聊天/直播等功能于一体的微直播项目.界面仿制抖音|火山小视频/陌陌直播,支持编译到多端(H5.小程序.Ap ...

  4. c# 打印的问题总结

    近期 做了一个打印的类,有一下功能: /// <summary>    /// 打印数据表格的类    /// 2016/05/19 @佳序    /// 功能:    /// 01.自动 ...

  5. iOS音频与视频的开发(一)-使用AVAudioPlayer播放音乐、使用AVPlayerViewController播放视频

    iOS的多媒体支持非常强大,它提供了多套支持多媒体的API,无论是音频.视频的播放,还是录制,iOS都提供了多种API支持.借助于这些API的支持,iOS应用既可以查看.播放手机相册中的照片.视频,也 ...

  6. 剑指offer 12:二进制中1的个数

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 解法一:设置标志为flag=1,逐个位移至不同位置,比较是否为1. C++实现 class Solution { publi ...

  7. Python数值类型和序列类型

    int.float.bool这三个数值类型和常用序列类型的定义和使用 数值类型的基本计算 序列类型的索引取值.切片.成员运算等序列类型的通用操作 complex(复数).decimal(定点数).ma ...

  8. 1、mongoDB服务器的搭建与连接

    下载----编译----安装之后: 1.首先,创建一个mongodb_simple的目录,进入到目录中. 2.创建文件夹:data,用来存储数据库的数据文件. 3.创建文件夹:log,用来存储数据库的 ...

  9. 1. Vue - ES6

    一.ES6部分知识点 1. 变量声明 <!-- var声明变量,导致变量提升 --> var name = 'ruanyifeng' function func(){ console.lo ...

  10. day6_logging模块

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/7/11 9:12 # @Author : 大坏男孩 # @File : da ...