您的位置:首页 > 其它

web3

2016-07-10 00:33 267 查看

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网页主要由元素(Element)和模板数据(TempateData)两部分组成。

 模板数据是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:默认为真,表示访问该jsp页面时,产生会话对象。

errorPage:表示当前jsp页面如果抛出了运行异常,则跳转指定出错页面

isErrorPage:表示该jsp页面为出错处理页面。定义了exception隐式对象,接收异常对象。

<%@include file="" %>叫做指令包含,也叫静态包含。在编译时发生。将本身jsp和包含的jsp放在一起

编译,形成一个class文件。所以两个页面不能存在同名变量,指令包含也只能包含文件。

<jsp:include page="">叫做动作包含,在请求时发生。本身jsp包含的是另一个jsp执行的结果。形成

两个class文件,所以两个页面可以存在同名变量。动作包含可以包含文件,也可以包含servlet输出结果。

同时,可以传递参数。

过滤器:一个中间组件,用于拦截源数据和目的数据之间的消息

 过滤二者之间传递的数据

<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表达式的作用域:

${键名}先从小作用域中查找,如果小作用域中有该键对应的值,则取出,并忽略其他作用域。如果小作用域中没有该键,那么

再去大作用域中查找。

所以,可以通过作用域,指定需要查找绑定对象。

eg:

${sessionScope.aaa}表示在session会话范围中查找对象,如果没有找到,也不会去其他作用域查找。

<%request.setAttribute("aaa", "fff");

  session.setAttribute("aaa", "bbb");

%>

${aaa }<br>   ------fff,会先从小范围开始找,如果找到了就不找后面的

${sessionScope.aaa }-------ddd,从session中找

通过el表达式,从作用域对象中取出属性时,是调用get方法完成的。所以就算该实体类没有属性,但是提供了get方法,

同样可以通过el表达式取出属性值。另外,实体类的属性必须规范,一般来说,属性名前两个字母都不能是大写字母。

<name>page</name>

<required>true</required>表示书写时page属性必须得写,不写就会报错

<uri></uri>给标签取别名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: