深入理解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代码中[嵌入 ...
随机推荐
- 免费好用的阿里云云盾证书服务(https证书)申请步骤
推荐一个免费的阿里云产品:云盾证书(https证书) 为了能让非专业人士看懂,同样尽量用直白的话,一般来说:当你个人需要建立网站,或者公司要建立官网.商城,通常需要先购买服务器或云主机,虚拟空间,然后 ...
- SQL中锁表语句简单理解(针对于一个表)
锁定数据库的一个表 复制代码代码如下: SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 复制代码代码如下: SELECT * FROM tab ...
- bzoj1003
考虑dp[i]表示前i天的最小总成本. 枚举上一次在第j天之后对路线进行了修改,那么就由dp[j]转移至dp[i],转移的代价是把第[j+1,i]天所有被占用的点全删掉后的最短路(不连通当然就是INF ...
- GridControl使用技巧总结,更新中...
1如何禁用GridControl中单击列弹出右键菜单 设置Run Design->OptionsMenu->EnableColumnMenu 设置为:false 2如何定位到第一条数据/记 ...
- RocketMQ集群部署配置
目标,使用2台机器部署RocketMQ多Master多Slave模式,异步复制集群模式. 第一步,修改/etc/hosts文件 192.168.116.115 rocketmq1 192.168.11 ...
- Ambari Auto Start(进程自动拉起)
文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/7886850.html 转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点, ...
- python3学习笔记(2)
一.面向对象(初识)由类和方法组成,类里面封装了很多功能,根据这个类,可以创建一个这个类的对象,即对象是根据这个类创建的,以后这个对象要使用某个功能的时候就从这个类里面的找.例:str -功能一 -功 ...
- ECMAScript 6 第一天 let和const命令
ES6新增声明变量的方法let命令,const命令. (ES5只有两种声明变量的方法:var 命令和 function 命令.) let命令,用来声明变量. 与var声明变量不同于: 1. let声 ...
- Jenkins与网站代码上线解决方案
1.1 前言 Jenkins是一个用Java编写的开源的持续集成工具.在与Oracle发生争执后,项目从Hudson项目独立. Jenkins提供了软件开发的持续集成服务.它运行在Servlet容器中 ...
- ShoneSharp语言(S#)的设计和使用介绍系列(3)— 修炼工具
ShoneSharp语言(S#)的设计和使用介绍 系列(3)- 修炼工具 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...