您的位置:首页 > Web前端 > JavaScript

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中进行注册

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表达式取出属性值,另外,实体类的属性必须规范,一般来说,属性名前两个字母都不能是大写字母。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: