web3



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>给标签取别名




















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值