深入理解JSP
JSP(Java server page)是Java EE规范最基本成员,他是Java Web开发的重点知识,尽管我们一直在用。但其原理知之甚少。今天重点研究一些JSP核心内容以及其工作原理。
JSP和Servlet的本质是一样的,由于JSP终于须要编译成Servlet才干运行,换句话说JSP是生成Servler的草稿文件。
JSP比較简单。就是在HTML中嵌入Java代码,或者使用JSP标签。包括使用用户自己定义标签,从而能够动态的提供内容。早起JSP应用比較广泛,一个web应用能够所有由JSP页面组成,仅仅须要少量的JavaBean就可以,可是这样导致了JSP职责过于复杂,这是Java EE标准的出现无疑是雪中送炭,因此JSP慢慢发展成单一的表现技术,不再承担业务逻辑组件以及持久层组件的责任。
JSP基本原理
JSP的本质是servlet,当用户指定servlet发送请求时,servlet利用输出流动态生成HTML页面。由于包括大量的HTML标签。
静态文本等格式导致servlet的开发效率极低,所有的表现逻辑,包括布局、色彩及图像等,都必须耦合在Java代码中。起静态的部分无需Java程序控制,仅仅有那些须要从数据库读取或者须要动态生成的页面内容才使用Java脚本控制。
因此JSP页面内容有下面两部分组成
静态部分:HTML标签
动态部分:Java脚本
JSP的4种基本的语法
JSP凝视
JSP凝视用于标注程序开发过程中的开发提示,不会输出到client。<%-- 凝视内容 --%>
JSP声明
JSP声明用于声明变量和方法。在JSP中声明方法看起来非常特别。似乎不须要定义类就能够直接定义方法,方法似乎能够脱离类独立存在。实际上JSP声明会转换成servlet的成员变量或成员方法,因此JSP声明仍然符合Java语法。<%! 声明部分 %>
输出JSP表达式
<%=表达式 %>
JSP脚本
曾经JSP应用非常广泛。通俗点讲不论什么能够运行的Java代码都能够通过JSP脚本嵌入到HTML页面中。
<% Java脚本 %>
JSP的3个预编译指令
page指令
该指令是针对当前页面的指令。通常位于JSP页面的顶端,一个JSP页面能够使用多条page指令。
include指令
用于指定包括还有一个页面的指令。使用include指令能够将一个外部文件嵌入到当前JSP文件里,同一时候解析这个页面中的JSP。include即能够包括静态文本,又能够包括动态JSP页面。
taglib指令
用于定义和訪问自己定义标签。
JSP的7个动作指令
forword指令
用于将页面响应转发到还有一个页面,既能够转发到静态的HTML,也能够转发到动态的JSP页面,或者转发到容器中的servlet。
param指令
用于运行參数,必须与其支持參数的标签一起使用。本身不能单独使用。由于单独的param指令没有实际意义。
include指令
用于动态引入一个JSP页面,它是一个动态include指令,也用于包括某个页面,不会导入被include页面的编译指令,仅仅将被导入页面的body内容插入本页面。
plugin指令
用于下载JavaBean或applet到client运行。
useBean指令
创建一个JavaBean的实例
setProperty指令
设置JavaBean实例的属性值
getProperty指令
输出JavaBean实例的属性值
JSP脚本中的9个内置对象
application对象
javax.servlet.ServletContext的实例,该实例代表JSP所属的web应用本身。能够用于JSP页面,或者servlet之间交换信息。
config对象
javax.servlet.ServletConfig的实例,该实例代表JSP的配置信息
exception对象
java.lang.Throwable的实例,该实例代表其它页面中的异常和错误。
out对象
javax.servlet.jsp.JspWriter的实例,该实例代表JSP的输出流。用于输出内容,形成HTML页面。
page对象
代表页面本身,通常没有太大用处。
pageContext对象
javax.servlet.jsp.PageContext的实例。该对象代表JSP页面的上下文,使用该对象能够訪问页面中的共享数据。
request对象
javax.servlet.http.HttpServletRequest的实例。该对象封装了一次请求。client请求的參数都被封装在这个对象里。
response对象
javax.servlet.http.HttpServletResponse的实例,代表服务器对client的响应,通常非常少使用该对象直接响应,而是使用out对象,除非须要生成非字符响应。
session对象
javax.servlet.http.HttpSession的实例。该对象代表一次会话,当client浏览器与网站连接时,会话開始,当client关闭浏览器是会话结束。
深入理解JSP的更多相关文章
- JSP 生命周期 理解JSP底层功能的关键就是去理解它们所遵守的生命周期
JSP 生命周期 理解JSP底层功能的关键就是去理解它们所遵守的生命周期. JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成ser ...
- 曾经大量使用的Model1开发模式,虽不常用,但可以帮我们理解JSP
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6513394762370777604/ 1.<JSP页面实际上就是Servlet> 2.<JSP页 ...
- JSP的执行原理、JSP的内置对象、四大作用域解析、MVC模式理解>从零开始学JAVA系列
目录 JSP的执行原理.JSP的内置对象.四大作用域解析.MVC模式理解 JSP的执行原理 这里拿一个小例子来解析JSP是如何被访问到的 首先将该项目部署到tomcat,并且通过tomcat启动 通过 ...
- JSP网站开发基础总结《八》
JSP的学习总结到本篇已经八篇了,内容比较多,但都是实战,本篇最后为大家介绍一个小效果:百度分页.就是当我们遍历的数据对象较多时,这时我们就会看到了这个效果了,那他是如何实现的呢?下面我们就一起学习一 ...
- javaweb回顾第七篇jsp
1:为什么会有JSP jsp全名(java server pages)中文叫做java服务器页面.在Servlet那一篇我们发现用Servlet可以生成动态页面,但是我们却在Servlet中却写了大量 ...
- Web---JSP注册技术的的演绎(3代)-JSP/EJB/Servlet/POJO/JavaBean
我们可以这么理解JSP注册技术的发展过程: 第一代JSP技术:纯JSP开发. 第二代JSP技术:JSP+EJB开发. (EJB简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行.) 第三代J ...
- 疯狂学习java web4(jsp)
JSP与PHP.ASP.ASP.NET等语言类似,运行在服务端的语言. JSP(全称Java Server Pages)是由Sun Microsystems公司倡导和许多公司参与共同创建的一种使软件开 ...
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
- jsp篇 之 基本概念
Jsp概念: 1.jsp是什么 jsp全称Java Server Pages,是一种[动态网页开发技术]. .html文件是静态页面 .jsp 文件是动态页面 jsp页面允许我们在html代码中[嵌入 ...
随机推荐
- 如何运用GitHub来提高生产效率
这是一篇GitHub的入门级文章,主要针对git的初学者.我们将讨论初学者最关心的一些问题,如:为什么我们要使用GitHub,它的应用有哪些,如何运用它去帮助我们提高工作效率,以及它的基本用法有哪些. ...
- 二叉搜索树的第 k 个结点
题目 给定一颗二叉搜索树,请找出其中的第k小的结点,即将二叉树中所有元素从小到大排序的第 k 个结点. 解析 按中序遍历二叉搜索树就可以获得一个非递减的序列,此时第 k 个就为答案.实际上我们只需要按 ...
- WebService--jax
使用javax.jws编写webservice服务: 服务端: 1,定义webservice接口: package com.jws.serviceInterface; import javax.jws ...
- express的学习,与使用
最近在学习vue的一个实战项目,碰到一个express,当时很萌,就随便看了看................ expres是基于node 的一个web框架, 首先可以找到它的官网照着学习 这里只讲一 ...
- 【5】namenode启动过程
1.格式化空间(第一次启动的操作): 命令:bin/hadoop -format //用于格式化HDFS,如果不是首次格式化,需要删除下面配置的tmp目录后再进行core-site.xml的配置: / ...
- 一:详解 HTTP 协议
本篇文章篇幅比较长,先来个思维导图预览一下. 一张图带你看完本篇文章 一.概述 1.计算机网络体系结构分层 计算机网络体系结构分层 2.TCP/IP 通信传输流 利用 TCP/IP 协议族进行网络通信 ...
- [转载] Java并发编程:Lock
转载自http://www.cnblogs.com/dolphin0520/p/3923167.html 以下是本文目录大纲: 一.synchronized的缺陷 二.java.util.concur ...
- linux操作系统基础篇(六)
linux服务篇 1.samba服务的搭建 samba的功能: samba是一个网络服务器,用于Linux和Windows之间共享文件.2. samba服务的启动.停止.重启service smb s ...
- flex词法解析
例子1.从标准输入的字数.单词.行数统计 %{ #include <string.h> int chars = 0; int lines = 0; int words = 0; %} %% ...
- 判断pdf、word文档、图片等文件类型(格式)、大小的简便方法
判断pdf.word文档.图片等文件类型(格式).大小的简便方法 很久没发文了,今天有时间就写一下吧. 关于上传文件,通常我们都需要对其进行判断,限制上传的类型,如果是上传图片,我们甚至会把图片转化成 ...