第六章:JSP技术

6.1 JSP概念

  1. 什么是JSP
    JSP全称Java Server Pages,是建立在servlet规范上的动态网页开发技术。在JSP文件中:它使用JSP标签在HTML网页中插入Java代码,实际上,JSP就是原有的HTML文件中加入一些具有java特定的代码。
    在这里插入图片描述
  2. 第一个JSP文件
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="ISO-8859-1">
		<title>Insert title here</title>
	</head>
	<body>
		My First JSP
	</body>
</html>

在这里插入图片描述

  1. JSP运行原理
    JSP的工作模式是请求/响应模式JSP程序收到请求后进行处理并返回处理结果(响应)。
    在这里插入图片描述
    具体过程:
    1)就像其他普通的网页一样,浏览器发送一个 HTTP 请求给服务器。
    2)Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给 JSP 容器(通常是内嵌 JSP 容器的 Apache)。
    3)如果不是第1次调用,则跳转到7),否则执行4)
    4)访问JSP 容器入 JSP 文件,然后将它们转化为Java源文件(Java Servlet源程序);
    5)JSP 容器将 Java源文件编译成.class文件,并且将原始请求传递给 Servlet 容器。
    6)Servlet 容器载入并执行 Servlet 类(.class文件),得到一个Servlet实例,并执行Servlet的jspInit()方法,JSPInit()方法在Servlet生命周期中只会执行一次;
    7)执行jspService()方法来处理客户端的请求,对于每个请求,JSP容器会创建一个新的线程来处理它;
    8)若JSP文件被改变,则服务器根据设置决定是否对文件重新编译;即5)和6)只在第一次调用或者JSP改变时被执行。
    9)由于资源不足等问题,JSp容器可能先调用jspDestroy()方法将Servlet实例从内存中移除(意味着需要重新执行6)?)
    10)请求处理完毕后,以 HTML 网页的形式将 HTTP response 返回到浏览器中,例如下图:
    在这里插入图片描述
  2. 生命周期
    在这里插入图片描述

6.2 JSP基本语法

在JSp文件中可以嵌套很多内容,例如JSP的脚本元素和注释等。

6.2.1 JSP脚本元素

JSP脚本元素是指嵌套在<%和%>之间的一条或多条Java程序代码。
脚本元素包括:JSP Scriptlets、JSP声明语句、JSP表达式

  1. JSP Scriptlets
    JSP Scriptlets是一段代码段,语法格式如下:
	<% java代码(变量、方法、表达式等)%>
  1. JSP声明语句
    变量类型可以是Java语言允许的任何数据类型。将这些变量称为 JSP页面的成员变量
    这些变量在整个JSP页面内有效。
    当用多个用户请求一个JSP页面时,JSP容器为每个客户起动一个线程,这些线程共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量的操作的结果,都会影响到其他用户
	<%! 定义的变量或方法等%>
  1. JSP表达式
    表达式是由常量、变量和运算符组成的式子,在请求处理的时候表达式被计算并插入到输出流(相当于out.println(表达式计算结果))返回给客户端
	<%= 表达式%>
  1. 例子
<!--example01.jsp-->
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>JSP声明语句/JSP表达式</title>
	</head>
	<%!
		int a = 1, b = 2; //定义两个变量a,b
	%>
	<%!
   		public String print() 
		{ //定义print方法
	    	String str = "itcast"; //方法内定义的变量str
			return str;
		}
	%>
	<body>
		<p>用out方法输出</p><br />
		<%out.println(a + b); //输出两个变量的和 -->%> 
 		<br /> 
		<%out.println(print());//调用print()方法,输出其返回值 %> 
		<br />
		 
		<p>表达式的值倍计算并插入到输出流</p><br />
		<%= a+b %>
		<br />
		<%= print() %>
	</body>
</html>

在这里插入图片描述

6.2.2 JSP注释

	<%--这个是JSP注释--%>

6.3 JSP指令

为了设置JSP页面的一些信息,提供一些JSP指令。

6.3.1 page指令

<%@ page 属性名1="属性值1" 属性名2="属性值2"...%>

在这里插入图片描述

<!--date.jsp-->
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<html>
<head>
<title>page</title>
</head>
<body>
	<%
		out.println("当前时间为:"+new java.util.Date().toLocaleString());
	%>
</body>
</html>

6.3.2 include指令

实际开发中,有时候需要JSP静态页面包含一个文件,用到include指令:

<%@ include file = "被包含的文件地址"%>

例子:

<!--test.jsp-->
<%
	out.println(new java.util.Date().toLocaleString());
%>
<!--include.jsp-->
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<html>
<head>
<title>欢迎你</title>
</head>
<body>
	欢迎你,现在的时间是:
	<%@ include file="test.jsp"%>
</body>
</html>

在这里插入图片描述

6.4 JSP隐式对象

在JSP页面中,有一些对象需要频繁使用,如果每次使用都新建会很麻烦,于是引进了9个隐式(内置)对象,他们是JSP默认创建的。

6.4.1 隐式对象概述

在这里插入图片描述

6.4.2 out对象

6.4.3 pageContext对象

6.4.4 exception对象


6.5 JSP动作元素

JSP动作元素用来控制JSP的行为,执行一些常用的JSP页面动作,通过动作元素可以实现多行java代码实现的效果,例如包含页面文件、实现请求转发等。

6.5.1 <jsp:include>动作元素

语法:在JSP页面中,为了把其他资源的输出内容插入到当前JSP页面中,JSP提供了<jsp:include>动作元素:

<jsp:include page="relativeURL" flush="true|false"/>

例子:

<!--jspinclude_date.jsp-->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>jsp:include动作元素</title>
</head>
<body>
	<!--date.jsp在前面已定义好了,是一个可独立执行的JSP文件-->
	<p>使用jsp:include动作元素输出date.jsp的输出内容如下:</p>
	<jsp:include page="date.jsp" flush = "true"/>
</body>
</html>

在这里插入图片描述

说明:<jsp:include>动作元素与include指令的区别:

<%@include%>是把被引用文件原封不动加入到当前JSP文件,然后将合并后的JSP文件编译成一个Servlet,即在编译时期就包含了;
<jsp:include>标签中要引入的资源和当前JSP页面是两个彼此独立的执行实体,而且是在运行时才包含的,只包含运行结果。

6.5.2 <jsp:forword>动作元素

<jsp:forword>动作元素将当前请求转发给其他Web资源(HTML页面,JSP页面、Servlet等),语法如下:

<jsp:forward page="relativeURL">
<!-- jspforward_date.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>jsp:forward动作元素</title>
</head>
<body>
  	<!-- 使用jsp:forward动作元素将请求转发给date.jsp -->
	<jsp:forward page="date.jsp"/>
</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值