JSP基础——基础语法、注释、声明周期、内置对象

JSP简介

JSP(全称JavaServer Pages)是由Sun Microsystems公司主导建立的一种动态网页技术标准。 JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。
Servlet和JSP都是动态网页技术,Servle更多的是实现java部分功能,而JSP更多的是负责页面展示。JSP本质上就是Servlet,但是JSP源文件的后缀名是.jsp。

JSP基础语法

基础语法分为三个部分:

  1. 脚本元素
  2. 指令元素
  3. 动作元素

脚本元素

JSP的脚本元素包括:

  1. 声明脚本
  2. 普通脚本
  3. 表达式脚本

声明脚本

声明成员变量成员方法。语法格式:

<%!        %>

比如:

<%!  
	int a = 1;
	int b = 2;
	
	public static int sum(int num1,int num2){
		return num1+num2;
	}
%>

相当于我们在java类中的:

public class TestServlet extends HttpServlet{
	private static final long serialVersionUID = 1L;
	// 定义成员变量
	private int a = 1;
	private int b = 2;
	// 声明sum方法
	public static int sum(int num1,int num2){
		return num1+num2;
	}
}	

普通脚本

普通脚本有两个作用:

  1. 声明局部变量
  2. 调用方法

语法格式:

<%     %>

注意:普通脚本中不能定义方法
比如:

<%
	// 声明局部变量
	int c = 1;
	int d = 1;
	// 调用方法 
	int result = sum(c,d);
	// out是jsp的内置对象之一,调用方法打印结果到浏览器
	out.println("result="+result);
%>

相当于Servlet中的:

protected void doGet(HttpServletRequest request,HttpServeltResponse response){
	int c = 1;
	int d = 1;
	int result = sum(c,d);
	response.getWriter().println("result="+result);
}

表达式脚本

用来计算和显示结果。语法格式:

<%=     %>

比如

result= <%=b%> <br/>
1+1= <%=1+1%> <br/>
1+2= <%=sum(1,2)%> <br/>
name: <%=request.getAttribute("name")%>

指令元素

JSP所有的指令元素都是<%@ %> 的格式。
常见的指令元素包括:

  1. page指令
  2. include指令
  3. taglib指令

page指令

语法:

<%@ page 属性名=属性值 %>

作用:用来设置当前JSP页面相关属性和配置信息:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

常见的属性名:

Language:当前jsp文件用何种语言进行解析,赋值java说明当前jsp用java语言解析。
contenType:设置jsp页面的上下文类型,主要是设置响应文件类型和字符集。
Import:同java中import同理
errorPage:设置当前页面出现异常后指定的负责处理异常的页面。
isErrorpage:当前页面是否是处理异常或者错误的页面,可以赋两个值,true或者false
如果你是处理异常的页面,jsp会提供一个内置对象:exception调用方法exception.getMessage()可以拿到异常信息。如果你不是处理异常的页面,那么拿不到这个对象。

include指令

语法:

<%@ include file = "地址" %>

作用:在当前页面包含另外一个页面
注意,include也叫做静态包含,即在该页面把指定页面的代码完整的拷贝进来。静态包含在编译后只产生一个class文件

taglib指令

语法:

<%@ taglib uri = "标签库地址" prefix="标签的前缀"%>

使用标签库之前要先添加标签库的jar包。
比如:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

格式化日期:

<fmt:formatDate value="<%=new Date()%>" pattern="yyyy-MM-dd HH:mm:ss"/>

动作元素

JSP动作元素:

  1. 动态包含
  2. 请求转发

动态包含

<jsp:include page="被包含页面" flush="true"></jsp:include>

动态包含编译后会产生多个class文件。

静态包含与动态包含的区别

JSP中有两种包含:

静态包含:<%@ include file="被包含页面"%>

动态包含:<jsp:include page="被包含页面" flush="true">

JSP在WEB服务器中都要转换成一个java文件,java文件再编译成一个class文件。当请求JSP页面的时候,实际上运行的是这个class文件。

从这个方面来说:

静态包含发生在:JSP---->java文件阶段。
动态包含发生在:执行class文件阶段。动态加入。

静态包含:只生成一个java文件
动态包含:生成多个class文件。

无论是动态包含还是静态包含,其request对象都是相同的。也就是同一个request对象。

请求转发

<jsp:forword page="转发页面"></jsp:forword>

类似于我们在Servelt中的转发:

request.getRequestDispatcher("转发页面").forword(request,response);

JSP页面的注释

可分为三种:

  1. java注释:单行注释//、多行注释/* */、文档注释/** */
  2. HTML注释:<!-- -->
  3. JSP注释:<%-- --%>
  • 区别:Html注释的内容会被编译,jsp注释的内容不会被编译。

JSP生命周期

JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。 以下是JSP生命周期中所走过的几个阶段:

  • 编译阶段:servlet容器编译servlet源文件,生成servlet类。
  • 初始化阶段:加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法。
  • 执行阶段:调用与JSP对应的servlet实例的服务方法。
  • 销毁阶段:调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例 。

1)JSP编译
浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件,步骤如下:

  1. 解析JSP文件。
  2. 将JSP文件转为servlet。
  3. 编译servlet。

2)JSP初始化
容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。如果您需要执行自定义的JSP初始化任务,复写jspInit()方法就行了。
一般来讲程序只初始化一次,servlet也是如此。通常情况下您可以在jspInit()方法中初始化数据库连接、打开文件和创建查询表。

3)JSP执行
这一阶段描述了JSP生命周期中一切与请求相关的交互行为,直到被销毁。 当JSP网页完成初始化后,JSP引擎将会调用_jspService()方法。_jspService()方法需要一个HttpServletRequest对象和一个HttpServletResponse对象作为它的参数,
jspService()方法在每个request中被调用一次并且负责产生与之相对应的response,它还负责产生所有7个HTTP方法的回应,比如GET、POST、DELETE等等。
4)JSP清理
SP生命周期的销毁阶段描述了当一个JSP网页从容器中被移除时所发生的一切。jspDestroy()方法在JSP中等价于servlet中的销毁方法。当您需要执行任何清理工作时复写jspDestroy()方法,比如释放数据库连接或者关闭文件夹等。

JSP九大内置对象

request——请求对象

response——响应对象

pageContext——表示当前页面的上下文。作用域对象之一(存的键值对只在当前页面有效)。通过pageContext可以获取其他内置对象。

session——会话对象

application——web应用。作用域对象

out——输出流对象

config——表示jsp页面配置对象

exception——异常。isisErrorpage是true才会有这个对象

page——代表当前页面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值