(转) jsp学习笔记
fromhttp://www.cnblogs.com/tao975/p/4445070.html
- 什么是JSP
- JSP的优势
- JSP的劣势
- JSP与PHP的比较
- JSP工作原理
- JSP的九大内置对象
- JSP的三个编译指令
- JSP的七个动作指令
- JSP标准标签库:JSTL
- EL表达式

一、什么是JSP?
二、JSP的优势
三、JSP的劣势
四、JSP与PHP的比较
|
项目
|
PHP
|
JAVA
|
| 可复用性 |
低
|
高
|
|
开发速度
|
快
|
慢
|
|
易维护性
|
差
|
优
|
|
可移植性
|
优-Linux
|
Windows、Unix
|
|
Unix 安全性
|
低
|
高
|
|
开发费用
|
低
|
高
|
|
多层架构
|
差
|
优
|
|
数据库访问
|
接口不统一
|
接口统一
|
|
可扩展性
|
差
|
优
|
|
面向对象
|
差
|
优
|
- 算术运算:JSP比PHP快很多(PHP是弱类型)
- 字符串运算:PHP比JSP快很多(JSP使用对象处理)
- 文件操作:JSP比PHP快
- 数据库操作:JSP比PHP慢很多(存有争议),但是JAVA使用连接池和PHP使用持久连接(pconnect)性能差不多
五、JSP工作原理




(5) jspService()方法执行后会将HTML内容返回给客户端。
(6) 如果JSP文件被修改了,服务器将对该文件进行重新编译。如果需要重新编译,则将编译结果取代内存中的Servlet,并继续上述处理过程。 如果在任何时候由于系统资源不足,JSP引擎将以某种不确定的方式将Servlet从内存中移去。当这种情况发生时,先调用jspDestroy()方法, 然后Servlet实例便被标记加入“垃圾收集”处理。
六、JSP的九大内置对象
(1) 内置对象特点
- 由JSP规范提供,不用编写者实例化。
- 通过Web容器实现和管理
- 所有JSP页面均可使用
- 只有在脚本元素的表达式或代码段中才可使用
| 分类 |
对象
|
|
输出输入对象
|
request、response、out
|
|
通信控制对象
|
pageContext、session、application
|
|
Servlet对象
|
page、config
|
|
错误处理对象
|
exception
|
| 作用域 | 对象 |
|
request
|
request
|
|
session
|
session
|
|
page
|
response、out、pageContext、config、page、exception
|
|
application
|
application、 |
- request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
- response对象:此对象封装了返回到HTTP客户端的输出,向页面作者提供设置响应头标和状态码的方式。经常用来设置HTTP标题,添加cookie,设置响应内容的类型和状态,发送HTTP重定向和编码URL。
- session对象:指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例。
- out对象:JspWriter类的实例,是向客户端输出内容常用的对象。
- pageContext对象:pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者。
- config对象:是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)
- page对象:就是指向当前JSP页面本身,代表了正在运行的由JSP文件产生的类对象
- exception对象:代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP文件中使用
- application对象:实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
七、JSP的三个编译指令
JSP编译指令是通知JSP引擎的消息,在将JSP编译成 Servlet 时起作用,处理指令通常可替换成 Java脚本,是 JSP脚本的标准化写法。它不直接生成输出。编译指令都有默认值。
语法格式:<%@ 编译指令名 属性名="属性值"...%>
(1) page指令:该指令是针对当前页面的指令,对整个页面有效,主要用来设定一些参数,比如contentType,language等。
(2) include指令:用于指定包含另一个页面(静态包含),在进行jsp向servlet转换之前,首先是将inclue file里面的内容执行,然后再进行转换,最终只会转换成为一个单一的servlet。
(3) taglib指令:用于定义和访问自定义标签。
八、JSP的七个动作指令
动作指令与编译指令不间,编译指令是通知 Servlet 引擎的处理消息,而动作指令只是运行时的脚本动作。
(1) forward指令:用于将页面响应转发给另外的页面。既可以转发给静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet。
执行forward指令转发请求时,客户端的请求参数不会丢失。
执行forward指令转发请求时,用户请求的地址没有发生变化,但页面内容完全变为被forward目标页的内容。
(2) include指令:是一个动态include指令,也用于导入某个页面,它不会导入被include页面的编译指令,仅仅将被导入页面的body内容插入本页面。
静态include和动态include的区别:静态include是把父页面和包含进来的页面,代码合并后,才一起翻译成servlet,反馈到前台,形成一个HTML页面(编译是发生)。动态include是把父页面和包含进来的页面单独编译,单独翻译成servlet后,在前台拼成一个HTML页面(请求时发生)。
(3) useBean指令:表示用来在JSP页面中创建一个BEAN实例并指定它的名字以及作用范围。
(4) getProperty指令:表示获取BEAN的属性的值并将之转化为一个字符串,然后将其插入到输出的页面中。
(5) setProperty指令:表示用来设置Bean中的属性值。
(6) plugin指令:表示执行一个applet或Bean,有可能的话还要下载一个Java插件用于执行它。
(7) param指令:用于设置参数值。
九、JSP标准标签库:JSTL
JSP的标签函数库主要分为五大类:
|
JSTL |
前置名称 |
URI |
范例 |
|
核心标签库 |
c |
http://java.sun.com/jsp/jstl/core |
<c:out> |
|
I18N格式标签库 |
fmt |
http://java.sun.com/jsp/jstl/fmt |
<fmt:formatDate> |
|
SQL标签库 |
sql |
http://java.sun.com/jsp/jstl/sql |
<sql:query> |
|
XML标签库 |
Xml |
http://java.sun.com/jsp/jstl/xml |
<x:forEach> |
|
函数标签库 |
fn |
http://java.sun.com/jsp/jstl/functions |
<fn:split> |
核心标签库:
|
功能分类 |
标签名称 |
|
表达式操作 |
out、set、remove、catch |
|
流程控制 |
if、choose、when、otherwise |
|
迭代操作 |
forEach、forTokens |
|
URL操作 |
import、param、url、redirect |
十、EL表达式
所有EL都是以${为起始、以}为结尾的。
EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的:${sessionScope.user.sex}等于${sessionScope.user["sex"]}
. 和 [ ] 也可以同时混合使用:${sessionScope.shoppingCart[0].price}
(转) jsp学习笔记的更多相关文章
- JSP学习笔记
JSP学习笔记 Jsp网页主要分为Elements与Template Data两部分. Template Data:JSP Container不处理的部分,例如HTML内容 Elements:必须经由 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...
- JSP 学习笔记1
JSP 学习笔记 JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例--JSP页面有系统编译成Servlet,Servlet再负责响应用户请求. 1.JSP注释 < ...
- jsp学习笔记:mvc开发模式
jsp学习笔记:mvc开发模式2017-10-12 22:17:33 model(javabe)与view层交互 view(视图层,html.jsp) controller(控制层,处理用户提交的信息 ...
- JSP学习笔记2
<JAVA遇见HTML——JSP篇>学习笔记(下) 1.Javabean Javabeans就是符合某种规范的java类,使用Javabeans的好处是[解决代码的重复编写],减少代码冗余 ...
- 重温JSP学习笔记--三大指令九大内置对象
最近在温习javaweb的相关基础知识,鉴于我弄丢了记满了整整一本的笔记,决定以后把笔记和一些学习上的心得以及碰到的一些问题统统都放在网上,今天看了一下jsp的相关基础,以下是笔记: JSP三大指令: ...
- 重温JSP学习笔记--与日期数字格式化有关的jstl标签库
上一篇笔记写的主要是JSTL的core标签库,如果想对一些数字或者日期做一些操作或者在网页上显示指定格式的数字或日期,jstl还提供了另一个fmt标签库,这里简单介绍一下: 第一步,导入标签库: &l ...
- 重温JSP学习笔记--JSTL标签库
以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...
随机推荐
- 深入理解Java 8 Lambda(类库篇——Streams API,Collectors和并行)
转载:http://zh.lucida.me/blog/java-8-lambdas-inside-out-library-features/ 关于 深入理解 Java 8 Lambda(语言篇——l ...
- unity像素贪吃蛇
[ 星 辰 · 别 礼 ] 设计过程: 首先,在之前玩坏控制台做的那个c#贪吃蛇之后,我以为做unity会很简单,但事实比较不如人意...拖了好几天.因为过程中遇到一些问题 蛇身的移动,还是用列表,将 ...
- Mybatis实现
简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...
- alpha-4
前言 失心疯病源4 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 今天完成了那些任务 19:00~21:50 利用背景相减法完成背景构建与更新模块,查找关于blob更多的论文资 ...
- ACM 第八天
数据结构和算法目录表 数据结构和算法目录表 C C++ Java 线性结构 1. 数组.单链表和双链表 2. Linux内核中双向链表的经典实现 数组.单链表和双链表 数组.单链表和双链表 ...
- LintCode-112.删除排序链表中的重复元素
删除排序链表中的重复元素 给定一个排序链表,删除所有重复的元素每个元素只留下一个. 样例 给出 1->1->2->null,返回 1->2->null 给出 1-> ...
- 转Web开发的发展史---Web开发技术的演变
转自:http://blog.csdn.net/zzzkk2009/article/details/9849431 在接下来的几个月时间里,我打算写一系列关于完整web开发的文章.这第一篇文章虽然有所 ...
- bzoj4760[USACO2017 Jan]Hoof,Paper,Scissors
题意:玩n次剪刀石头布,对方每次出什么已经知道了.你出的招数必须是连续的几段(不能超过k+1段),问你最多赢几次.(n<=100000,k<=20) 正常做法:f[i][j][k]表示前i ...
- 【bzoj5094】硬盘检测 乱搞
题目描述 已知从 $n$ 个不同的32位无符号整数中随机选 $m=10000$ 次所得的结果,求可能性最大的 $n$ ,其中 $n=10^k,1\le k\le 7$. 输入 第一行包含一个正整数m( ...
- hdu 3030 Increasing Speed Limits (离散化+树状数组+DP思想)
Increasing Speed Limits Time Limit: 2000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...