jsp基础

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语法和语义

  1. jsp网页主要由元素(element)和模板数据(templatedata)两个部分组成:模板数据是jsp的静态部分,web容器不处理,元素则是必须由web容器解释,元素都是以xml做为语法基础,大小写要一致
  2. web容器支持两种不同格式的jsp语法:普通格式和xml兼容模式,普通jsp语法是设计给开发者用的,xml兼容jsp语法是设计用来容易被开发者使用的

jsp脚本元素

  1. 声明部分:<%! %>定义jsp类的成员变量,静态变量和方法
  2. 脚本部分:<% %>丰富 _ jspservice(),在脚本中定义的变量,全部都是 _ jspservice()的局部变量
  3. 表达式:<%= %>丰富_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指令

  1. contentType:设置MIME类型和编码集
  2. pageEncoding:设置编码集,MIME类型默认为text/html
  3. import:导入该jsp类中所用到的类,如果需要导入多个类,中间以逗号分开
  4. session:默认为true,表示访问该jsp页面时,产生会话对象
  5. errorpage:表示当前jsp页面如果抛出了运行异常,则跳转指定出错页面。
  6. 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过滤

过滤器类型

  1. request:表示直接请求,按请求路径进行过滤,默认方式。
  2. FORWARD:表示通过内部转发到达目标资源之前,进行过滤。
  3. include:表示包含指定资源时,进行过滤。
  4. error:发生异常时,进行过滤。
过滤器链:当一个请求到达目标资源时,可能会经过多个过滤器,这就形成了过滤器链,过滤器链执行的顺序是:先经过<url-pattern>标签,在经过<servlet-name>标签,如果一个请求经过多个<url-pattern>标签,按部署顺序执行
el表达式的作用域
  1. ${键名} 先从小作用域中查找,如果小作用域中有改建对应的值,则取出,并忽略其他作用域,如果小作用域中没有该键,那么再去大作用域中查找。
  2. 所以,可以通过作用域,指定需要查找绑定对象。${sessionScope.aaa}表示在session会话范围中查找对象,如果没有找到,也不会去其他作用域查找。
通过el表达式,从作用域对象中取出属性时,是调用get方法完成的,所以就算该实体类没有属性,但是提供了get方法,同样可以通过el表达式取出属性值,另外,实体类的属性必须规范,一般来说,属性名前两个字母都不能是大写字母。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值