jsp
实体类模型
贫血
实体类中处理有属性,另外提供处理本类中的属性的方法 ,不涉及业务层和持久层
失血
实体中只有get/set方法,没有逻辑处理的方法
充血
实体类中除了有属性外,害提供了业务和处理和保存的方法但不涉及业务方法
涨血
实体类除了有属性外,另外提供处理保存和该类的相关方法
全称
java server page
jsp页面要被web容器翻译成java 类按照servlet规范,所有jsp翻译生成的类,必须实现HttpJspPage接口。而HttpJspPage是Servlet的子接口。也就意味着jsp翻译生成类也会实现servlet。所以,从这个意义上说,jsp本质是servlet.jsp重在于页面的显示,而servlet重在于逻辑处理
jsp引擎
web容器编译的一个类,负责将jsp页面翻译成java类。在web容器下/conf/web.xml 中进行啊注册
AJAX
七项技术
Javascript
XMLhttprequest
DOM.
css
html
XML
相关服务API
局部刷新
同步 和 异步 提交
同步提交
表单提交,超链接提交,浏览器访问servlet
响应信息会直接显示在客户端浏览器中,并且将客户端页面的内容全部清空
一步提交
客户端发出ajax请求
响应信息会由客户端的js 对象进行接收。完成js处理后,再将处理结果显示在页面。不会清空客户端原来的内容。因为只刷新一块内容,和服务器交互的数据少,速度快
泛型
在一个类中使用<T>可以给该类定义泛型.如果产生该类的的对象时,可以指定T的类型.呢么在该类的方法中,凡是引用T的地方,要求必须和定义该类对象时指定的类型一致
jsp生命周期
由JSP引擎将JSP页面翻译成JAVA代码
JAVA代码翻译成CLASS字节码
加载到容器
有容器实例化对象
初始化阶段相关的方法是jspInti()
请求到达,调用服务阶段的相关的方法_jspService
销毁阶段相关的方法是jspDestroy()
jsp语法和定义
jsp网页主要由元素和模板数据两个部分组成
模板数据时JSP的静态部分,WEB容器不处理
元素则是必须经由WEB容器解释
元素都是以XML作为语法基础,并且大小写要一致
WEB容器支持两种不同的格式JSP语法
普通格式和XML兼容格式
普通JSP语法是设计给开发者用的
XML兼容JSP时设计来给开发者用的
JSP脚本元素
声明
<%! %>定义jsp类的 成员变量,静态方法和方法
脚本
<% %>
丰富_JSPServlet(),在脚本中定义的变量,全部是_jspServlet()的 局部变量
表达式
丰富_jspServlet(),相当于out,print()向叶面输出内容.注意,后面不能加;号
注释
<%-- --%>
容器不翻译,只在源代码中可见,最安全
html注释
<!-- -->
html会通过out.print输出到 客户端,客户端服务器均可见,最不安全
java注释
// /* */
给java代码书写的注释,只用于服务器端可见
jsp隐式对象
jsp引擎翻译的jsp中,在_jspService()中会定义九个变量,并将这些变量做初始化,由于脚本和表达式时在丰富_jspService()方法所以可以直接使用这些变量,这些变量称为隐式对象
九个隐式对象
四个作用域
pageContex
只在当前作用jsp页面有效
request
作用于请求
session
作用于会话
默认true 表示访问该jsp页面时,产生会话对象
application
作用于全局
两个输出
response
响应对象
out
打印输出流
当前对象
page
contentType:设置MIME类型和编码集
pageEncodiong:设置编码集,MIME类型默认为text/html
import:导入jsp类中所有的包
配置对象
config
异常对象
exception
errorPage 表示当前页面如果抛出了jsp运行异常,则跳转指定出错页面
isErrorPage:表示jsp页面出错处理页面.定义了exception隐式对象,接收异常对象
静态包含
<%@include file="">叫做指令包含,页脚静态编译.在编译时发生,将本身jsp和包含的jsp一起编译,形成一个class文件.所以两个页面不能存在同名变量,指令包含也只能包含文件
动作包含]
<jsp:include page="">在请求时发生.本身jsp包含的是另一个jsp执行结果.形成两个class文件.所以两个页面存在同名变量,<jsp:forward page="url">执行动作,由一个jsp页面转发到另一个jsp页面
el表达式
${键名}
作用域
先从小作用域中查找,如果该键中有对应的值就出,忽略其他作用域.如果小作用域没有该键
,那么再去大作用域中查找
可通过作用域指定绑定对象.${sessionScope.aaa} 表示在session会话范围中查找,如果没有找到,也不回去其他作用域查找
支持运算
通过作用域取出对象时,时调用了get方法完成.所以就算该实体类没有属性,但是提供了get方法,同样可以通过el表达式取出属性值.另外,实体类的属性前两个字母都不能大写
过滤器
一个中间组件,用于拦截数据和目的数据之间的消息
在<filter-mapping>标签中的<url-pattern>标签中,可以加入<url-pattern>标签,表示请求路径进行过滤,也可以加入<servlet-name>标签,表示针对某个指定名称的路径过滤
四种类型
request
表示直接请求,按请求路径.默认方式
forward
表示通过内部转发到达目标资源之前进行过滤
include
表示包含指定资源时,进行过绿滤
error
表示发生异常时进行过滤
过滤器链
当一个请求到达目标资源时,可能会经过多个过滤器.这就形成了过滤器链.过滤器<servlset-name>.如果一个请求经过多个<url-pattern>那么就按注解方式执行
监听器
HttpsessionBindingListener
不需要注册的监听器
实体类模型
贫血
实体类中处理有属性,另外提供处理本类中的属性的方法 ,不涉及业务层和持久层
失血
实体中只有get/set方法,没有逻辑处理的方法
充血
实体类中除了有属性外,害提供了业务和处理和保存的方法但不涉及业务方法
涨血
实体类除了有属性外,另外提供处理保存和该类的相关方法
全称
java server page
jsp页面要被web容器翻译成java 类按照servlet规范,所有jsp翻译生成的类,必须实现HttpJspPage接口。而HttpJspPage是Servlet的子接口。也就意味着jsp翻译生成类也会实现servlet。所以,从这个意义上说,jsp本质是servlet.jsp重在于页面的显示,而servlet重在于逻辑处理
jsp引擎
web容器编译的一个类,负责将jsp页面翻译成java类。在web容器下/conf/web.xml 中进行啊注册
AJAX
七项技术
Javascript
XMLhttprequest
DOM.
css
html
XML
相关服务API
局部刷新
同步 和 异步 提交
同步提交
表单提交,超链接提交,浏览器访问servlet
响应信息会直接显示在客户端浏览器中,并且将客户端页面的内容全部清空
一步提交
客户端发出ajax请求
响应信息会由客户端的js 对象进行接收。完成js处理后,再将处理结果显示在页面。不会清空客户端原来的内容。因为只刷新一块内容,和服务器交互的数据少,速度快
泛型
在一个类中使用<T>可以给该类定义泛型.如果产生该类的的对象时,可以指定T的类型.呢么在该类的方法中,凡是引用T的地方,要求必须和定义该类对象时指定的类型一致
jsp生命周期
由JSP引擎将JSP页面翻译成JAVA代码
JAVA代码翻译成CLASS字节码
加载到容器
有容器实例化对象
初始化阶段相关的方法是jspInti()
请求到达,调用服务阶段的相关的方法_jspService
销毁阶段相关的方法是jspDestroy()
jsp语法和定义
jsp网页主要由元素和模板数据两个部分组成
模板数据时JSP的静态部分,WEB容器不处理
元素则是必须经由WEB容器解释
元素都是以XML作为语法基础,并且大小写要一致
WEB容器支持两种不同的格式JSP语法
普通格式和XML兼容格式
普通JSP语法是设计给开发者用的
XML兼容JSP时设计来给开发者用的
JSP脚本元素
声明
<%! %>定义jsp类的 成员变量,静态方法和方法
脚本
<% %>
丰富_JSPServlet(),在脚本中定义的变量,全部是_jspServlet()的 局部变量
表达式
丰富_jspServlet(),相当于out,print()向叶面输出内容.注意,后面不能加;号
注释
<%-- --%>
容器不翻译,只在源代码中可见,最安全
html注释
<!-- -->
html会通过out.print输出到 客户端,客户端服务器均可见,最不安全
java注释
// /* */
给java代码书写的注释,只用于服务器端可见
jsp隐式对象
jsp引擎翻译的jsp中,在_jspService()中会定义九个变量,并将这些变量做初始化,由于脚本和表达式时在丰富_jspService()方法所以可以直接使用这些变量,这些变量称为隐式对象
九个隐式对象
四个作用域
pageContex
只在当前作用jsp页面有效
request
作用于请求
session
作用于会话
默认true 表示访问该jsp页面时,产生会话对象
application
作用于全局
两个输出
response
响应对象
out
打印输出流
当前对象
page
contentType:设置MIME类型和编码集
pageEncodiong:设置编码集,MIME类型默认为text/html
import:导入jsp类中所有的包
配置对象
config
异常对象
exception
errorPage 表示当前页面如果抛出了jsp运行异常,则跳转指定出错页面
isErrorPage:表示jsp页面出错处理页面.定义了exception隐式对象,接收异常对象
静态包含
<%@include file="">叫做指令包含,页脚静态编译.在编译时发生,将本身jsp和包含的jsp一起编译,形成一个class文件.所以两个页面不能存在同名变量,指令包含也只能包含文件
动作包含]
<jsp:include page="">在请求时发生.本身jsp包含的是另一个jsp执行结果.形成两个class文件.所以两个页面存在同名变量,<jsp:forward page="url">执行动作,由一个jsp页面转发到另一个jsp页面
el表达式
${键名}
作用域
先从小作用域中查找,如果该键中有对应的值就出,忽略其他作用域.如果小作用域没有该键
,那么再去大作用域中查找
可通过作用域指定绑定对象.${sessionScope.aaa} 表示在session会话范围中查找,如果没有找到,也不回去其他作用域查找
支持运算
通过作用域取出对象时,时调用了get方法完成.所以就算该实体类没有属性,但是提供了get方法,同样可以通过el表达式取出属性值.另外,实体类的属性前两个字母都不能大写
过滤器
一个中间组件,用于拦截数据和目的数据之间的消息
在<filter-mapping>标签中的<url-pattern>标签中,可以加入<url-pattern>标签,表示请求路径进行过滤,也可以加入<servlet-name>标签,表示针对某个指定名称的路径过滤
四种类型
request
表示直接请求,按请求路径.默认方式
forward
表示通过内部转发到达目标资源之前进行过滤
include
表示包含指定资源时,进行过绿滤
error
表示发生异常时进行过滤
过滤器链
当一个请求到达目标资源时,可能会经过多个过滤器.这就形成了过滤器链.过滤器<servlset-name>.如果一个请求经过多个<url-pattern>那么就按注解方式执行
监听器
HttpsessionBindingListener
不需要注册的监听器