jsp简介

jsp:全称叫java server page 是一段服务器脚本。jsp允许在普通网页上通过<%......%>标记嵌入java代码。这样,静态html标记可以直接书写。同时可以动态嵌入java类处理的结果。可以大大简化输出页面的难度

 

web容器中,提供了一些类对jsp做支持,这些类可以将用户书写的jsp页面翻译成java类。称作jsp引擎。

 

按照servlet规范规定,由WEB容器厂商翻译jsp页面形成的java类,必须实现HttpJspPage接口。而HttpJspPage接口是Servlet的子接口。所以翻译形成的java类同样满足Servlet规范。从这个意义上说,JSP本质是Servlet。只不过jsp重在数据的页面展示,而Servelt重在于逻辑处理

 

JSP生命周期:

1.JSP引擎将JSP页面翻译成java

2.java类编译成虚拟机可识别的class文件

3.加载到容器

4.由容器实例化对象

5.初始化阶段相关的方法是jspInit()

6.请求到达,调用服务阶段相关的方法_ispService()

7.销毁阶段相关方法jspDestroy()

Servlet生命周期:

1,启动tomcat,读取conf/server.xml----以确定启动端口(默认8080)和WEB应用程序存放的路径(默认webapps

2,读取webapps目录下所有web应用程序,并将web.xml文件进行解析。如果解析失败,那么抛出解析异常,这就意味着,如果有一个web应用程序的web.xml书写有误,那么启动时都会抛出异常

3WEB容器加载并实例化Servlet。注册servlet时,如果加上<load-on-startup>并且该标签的值为正数,表示容器一启动就实例化servlet,如果没有加<load-on-startup>或者该标签的值为负数,表示客户端第一次访问该servlet时,才实例化

4,调用init()方法完成初始化

5,当请求到达,调用service()方法完成业务

6,销毁阶段,调用destroy()完成清理工作

 

JSP网页主要由元素(Element)和模板数据(TemplateData)组成

模板数据是JSP的静态部分

元素则是必须经由WEB容器解释---java代码

 

JSP脚本元素分为三种:

声明:<%!...... %>定义成员变量,静态变量和方法

脚本:<%......%>丰富_jspService()方法,在脚本中定义的变量都是_jspService()的局部变量

表达式:<%=......%>丰富_jspService()方法,相当于out.print(),向客户端输出结果。注意表达式后面不能加;(分号)

 

JSP注释:

<%-- jsp注释:容器不做翻译只在源代码中可见,最为安全--%>

<!-- html注释:该注释WEB容器会以out.printIn()方式输出到客户端客户端和服务器均可见,不能注释java代码。最不安全 -->

Java代码://单行注释   /*多行注释*/  该注释只能注释java代码,在服务器可见,客户端不可见

 

Jsp隐式对象:jsp页面经过web容器的jsp引擎翻译之后,形成一个java类,在_jspServlet方法中,由WEB容器定义了九个局部变量,并且做了初始化。由于开发者书写的java代码,是在丰富_jspService(),所以可以直接使用这九个局部变量。这些变量称为jsp隐式对象。

Jsp隐式对象有9个:

四个作用域:

pageContext:作用于页面。

request:做用于请求。

session: 作用于会话。

application: 作用于全局。

两个输出:

response:响应对象

out:打印输出流

 

当前对象:page

配置对象:config

异常对象:exception

 

JSP指令:

提供整个JSP页面的相关信息<%@ %>

用于JSP页面与容器之间的通信

JSP中,有三种类型的指令

page指令为当前页面提供处理指令

Include指令用于把另一个文件包含在JSP

Taglib指令指定如何包含和访问自定义标签库

 

Page指令常用的属性:

contentType:定义响应信息的MIME类型和编码集。

Import:导入该jsp中所使用的类。

ErrorPage:表示当前页面抛出了运行异常,则请求转发至指定页面。

IsErrorPage:表示当前页面为处理异常的页面。该页面定义了exception隐式对象,用于接收和处理从其他jsp页面中抛出的异常

 

指令包含:<%@include file=””%>在编译时发生,将本身页面和包含页面合在一起编译,形成一个java类和一个class文件。只允许包含文件,不允许两个页面存在同名变量;

动作包含:<jsp:include page=””>在请求时发生,相当于RequestDispatcher.include(),包含的是另一个页面输出的结果。可以包含文件,可以包含servlet输出结果。由于是请求时发生,所以包含的时候可以传参

动作转发:<jsp:forward page=””>


 

EL表达式:${msg.name}---从作用域对象中,取出绑定对象,并且显示该对象的name属性值。在访问name属性时,是调用getName()方法,得到属性值的。如果实体类中没有该属性,但是有getxx()方法,同样可以取出值

缺点:不能实现集合的遍历

 

EL表达式取值时,先从小作用域中查找,小作用域中没有该键名,再从大作用域找,如果小作用域中有该键名,大作用域不再查找。

所以直接用${name}效率低,要提高效率可以用EL表达式的隐式对象${requestScope.name}

${sessionScope.name}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值