jsp基础
2016-07-10 17:01
253 查看
jsp全称:java server page
JSP页面要被web容器翻译成java类,按照servlet规范所有JSP翻译生成的类,必须实现httpjsppage接口,而httpjsppage是servlet的子接口,也就意味所有jsp翻译生成类也会实现servlet,所以从这个意义上说jsp本质是servlet,jsp重在于页面显示,而servlet重在于逻辑处理
jsp引擎:jsp引擎是web容器编写的类,负责将jsp页面翻译成java类,在web容器/conf/web.xml中进行注册
将java代码编译成class字节码文件
加载到容器
由容器实例化成对象
初始化阶段相关的方法是jspInit()
请求到达,调用服务阶段相关的方法是_jspService()
销毁阶段相关的方法是jspDestroy()
web容器支持两种不同格式的jsp语法:普通格式和xml兼容模式,普通jsp语法是设计给开发者用的,xml兼容jsp语法是设计用来容易被开发者使用的
脚本部分:<% %>丰富 _ jspservice(),在脚本中定义的变量,全部都是 _ jspservice()的局部变量
表达式:<%= %>丰富_jspservice(),相当于out.print()向页面输出内容,注意,后面不能加分号。
html注释:<!- - - ->html会通过out.print输出到客户端,客户端和服务器均可见,最不安全。
java注释:// /**/ 给java代码书写的注释,只在服务器端可见
jsp隐式对象:jsp引擎翻译的jsp类中,在_jspservice()中会定义九个变量,并将这些变量做初始化,由于脚本和表达式是在丰富——jspservice()方法,所有可以直接使用这些变量,这些变量称为jsp的隐式对象。
两个输出
page:当前对象
config:配置对象
exception:异常对象
pageEncoding:设置编码集,MIME类型默认为text/html
import:导入该jsp类中所用到的类,如果需要导入多个类,中间以逗号分开
session:默认为true,表示访问该jsp页面时,产生会话对象
errorpage:表示当前jsp页面如果抛出了运行异常,则跳转指定出错页面。
iserrorpage:表示该jsp页面我出错处理页面,定义了exception隐式对象,接收异常对象。
<%@include file="">叫做指令包含,也叫静态包含,在编辑发生时,将本身jsp和包含的jsp放在一起编译,形成一个calss文件,所以两个页面不能存在同名变量,指令包含也只能包含文件
<jsp:include page="">叫做动作包含,在请求是发生,本身jsp包含的是另一个jsp执行的结果,形成两个class文件,所以两个页面可以存在同名变量,动作包含可以包含文件,也可以包含servlet输出结果,同时,可以传递参数
jsp标准动作:<jsp:forward>动作将而客户端所发出来的请求,从一个jsp网页转发到另一个jsp页面<jsp:forward page="relativeURL"/>内部转发页面
2、过滤二者之间传递的数据
表示欢迎页面集合,表示如果在访问web用用程序时,不输入任何路径,默认所访问的页面列表
在<filter-mapping>标签中的<url-pattern>子标签,可以加入<url-pattern>标签,表示针对请求路径进行过滤,也可以加入<servlet-name>标签,表示针对摸个指定名称的servlet过滤
FORWARD:表示通过内部转发到达目标资源之前,进行过滤。
include:表示包含指定资源时,进行过滤。
error:发生异常时,进行过滤。
过滤器链:当一个请求到达目标资源时,可能会经过多个过滤器,这就形成了过滤器链,过滤器链执行的顺序是:先经过<url-pattern>标签,在经过<servlet-name>标签,如果一个请求经过多个<url-pattern>标签,按部署顺序执行
所以,可以通过作用域,指定需要查找绑定对象。${sessionScope.aaa}表示在session会话范围中查找对象,如果没有找到,也不会去其他作用域查找。
通过el表达式,从作用域对象中取出属性时,是调用get方法完成的,所以就算该实体类没有属性,但是提供了get方法,同样可以通过el表达式取出属性值,另外,实体类的属性必须规范,一般来说,属性名前两个字母都不能是大写字母。
JSP页面要被web容器翻译成java类,按照servlet规范所有JSP翻译生成的类,必须实现httpjsppage接口,而httpjsppage是servlet的子接口,也就意味所有jsp翻译生成类也会实现servlet,所以从这个意义上说jsp本质是servlet,jsp重在于页面显示,而servlet重在于逻辑处理
jsp引擎:jsp引擎是web容器编写的类,负责将jsp页面翻译成java类,在web容器/conf/web.xml中进行注册
jsp生命周期
由jsp引擎将jsp页面翻译成java代码将java代码编译成class字节码文件
加载到容器
由容器实例化成对象
初始化阶段相关的方法是jspInit()
请求到达,调用服务阶段相关的方法是_jspService()
销毁阶段相关的方法是jspDestroy()
jsp语法和语义
jsp网页主要由元素(element)和模板数据(templatedata)两个部分组成:模板数据是jsp的静态部分,web容器不处理,元素则是必须由web容器解释,元素都是以xml做为语法基础,大小写要一致web容器支持两种不同格式的jsp语法:普通格式和xml兼容模式,普通jsp语法是设计给开发者用的,xml兼容jsp语法是设计用来容易被开发者使用的
jsp脚本元素
声明部分:<%! %>定义jsp类的成员变量,静态变量和方法脚本部分:<% %>丰富 _ jspservice(),在脚本中定义的变量,全部都是 _ jspservice()的局部变量
表达式:<%= %>丰富_jspservice(),相当于out.print()向页面输出内容,注意,后面不能加分号。
jsp注释
jsp注释:<%-- --%>容器不翻译,只在源代码中可见,最为安全html注释:<!- - - ->html会通过out.print输出到客户端,客户端和服务器均可见,最不安全。
java注释:// /**/ 给java代码书写的注释,只在服务器端可见
jsp隐式对象:jsp引擎翻译的jsp类中,在_jspservice()中会定义九个变量,并将这些变量做初始化,由于脚本和表达式是在丰富——jspservice()方法,所有可以直接使用这些变量,这些变量称为jsp的隐式对象。
jsp隐式对象有九个
四个作用域:- pageContext:只在当前jsp页面有效 - request:作用于请求 - session:作用于会话 - application:作用于全局
两个输出
- response:相应对象 - out:打印输出流
page:当前对象
config:配置对象
exception:异常对象
page指令
contentType:设置MIME类型和编码集pageEncoding:设置编码集,MIME类型默认为text/html
import:导入该jsp类中所用到的类,如果需要导入多个类,中间以逗号分开
session:默认为true,表示访问该jsp页面时,产生会话对象
errorpage:表示当前jsp页面如果抛出了运行异常,则跳转指定出错页面。
iserrorpage:表示该jsp页面我出错处理页面,定义了exception隐式对象,接收异常对象。
<%@include file="">叫做指令包含,也叫静态包含,在编辑发生时,将本身jsp和包含的jsp放在一起编译,形成一个calss文件,所以两个页面不能存在同名变量,指令包含也只能包含文件
<jsp:include page="">叫做动作包含,在请求是发生,本身jsp包含的是另一个jsp执行的结果,形成两个class文件,所以两个页面可以存在同名变量,动作包含可以包含文件,也可以包含servlet输出结果,同时,可以传递参数
<jsp:include page="/out"> <jsp:param value="ppp" name="myid"/> </jsp:include>
jsp标准动作:<jsp:forward>动作将而客户端所发出来的请求,从一个jsp网页转发到另一个jsp页面<jsp:forward page="relativeURL"/>内部转发页面
过滤器概念
1、一个中间组件,用于拦截源数据和目的数据之间的消息2、过滤二者之间传递的数据
<welcome-file-list> <welcome-file>index.html</welcome-file> ………………………… ………………………… </welcome-file-list>
表示欢迎页面集合,表示如果在访问web用用程序时,不输入任何路径,默认所访问的页面列表
在<filter-mapping>标签中的<url-pattern>子标签,可以加入<url-pattern>标签,表示针对请求路径进行过滤,也可以加入<servlet-name>标签,表示针对摸个指定名称的servlet过滤
过滤器类型
request:表示直接请求,按请求路径进行过滤,默认方式。FORWARD:表示通过内部转发到达目标资源之前,进行过滤。
include:表示包含指定资源时,进行过滤。
error:发生异常时,进行过滤。
过滤器链:当一个请求到达目标资源时,可能会经过多个过滤器,这就形成了过滤器链,过滤器链执行的顺序是:先经过<url-pattern>标签,在经过<servlet-name>标签,如果一个请求经过多个<url-pattern>标签,按部署顺序执行
el表达式的作用域
${键名} 先从小作用域中查找,如果小作用域中有改建对应的值,则取出,并忽略其他作用域,如果小作用域中没有该键,那么再去大作用域中查找。所以,可以通过作用域,指定需要查找绑定对象。${sessionScope.aaa}表示在session会话范围中查找对象,如果没有找到,也不会去其他作用域查找。
通过el表达式,从作用域对象中取出属性时,是调用get方法完成的,所以就算该实体类没有属性,但是提供了get方法,同样可以通过el表达式取出属性值,另外,实体类的属性必须规范,一般来说,属性名前两个字母都不能是大写字母。
相关文章推荐
- 简述jsp的加载过程,jsp和servlet的关系?jsp生成的文件放在什么位置?
- jsp课堂笔记
- jsp九大内置对象及其作用?
- js中的运算符优先级顺序
- servlet接收不到JSP传来的数据servlet接收不到JSP传来的数据
- JavaScript中的Function(函数)对象详解
- JavaScript闭包之“词法作用域”
- JavaScript 最佳实践
- js弹出窗口
- js弹出窗口
- js弹出窗口
- js弹出窗口
- js弹出窗口
- js弹出窗口
- js弹出窗口
- js弹出窗口
- js弹出窗口
- js弹出窗口
- js弹出窗口
- JavaScript URL编码转换函数 encodeURIComponent()