JSP脚本与指令元素

引言:
       当需要在游览器上动态的输出网页内容时 例如:“在浏览器上动态输出当前日期”,显然无法通过静态HTML完成这个效果,这时JSP的出现补充了这一功能。

一、JSP页面基本构成:

1、JSP概述:

JSP(Java Server Pages)是指:在HTML中嵌入Java脚本语言由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令然后将生成的整个页面信息返回给客户端。

例:上面所提到的 在浏览器上动态输出当前日期:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html>
<head><title>输出当前日期</title></head>
<body>
你好! 今天是
<%  java.util.Date now = new java.util.Date(); %>
<%=now %>
</body>
</html>

运行结果:
在这里插入图片描述
JSP和Servlet的对比:
在这里插入图片描述

Servlet的功能非常强大,但是:

  • 使用println()输出HTML非常不便。
  • 对输出HTML文档的维护也非常不便。

JSP无需打包、部署,简单方便,但是:

  • 将java代码拆分成多个程序块,不便于维护。
2、JSP执行过程:

Web容器处理JSP文件请求需要经过3个阶段:

  • 翻译阶段:JSP文件会被Web容器中的JSP引擎转换成Java源码。
  • 编译阶段:Java源码会被编译成可执行的字节码。
  • 执行阶段:容器接受了客户端的请求后,执行编译成字节码的JSP文件;处理完请求后,容器把生成的页面反馈给客户端进行显示。
    在这里插入图片描述
    第一次请求之后,Web容器可以重用已经编译好的字节码文件。
    在这里插入图片描述
    注意:如果对JSP文件进行了修改,Web容器会重新对JSP文件进行翻译和编译 。
3、JSP页面构成:
  • JSP代码中包含了模版元素(HTML+Javascript +CSS)和JSP元素构成。
  • 模版元素指的是JSP引擎不处理的部分。
  • JSP元素则指的是由JSP引擎直接处理的部分,这一部分必须符合JSP语法,否则会导致编译错误。

JSP页面大致由以下构成:
在这里插入图片描述
这里以显示当前日期的JSP为例:
在这里插入图片描述

二、脚本元素:

1、JSP 脚本元素是用来嵌入Java代码的,主要用来实现页面的动态请求。
2、JSP 脚本元素包括:
在这里插入图片描述
1、表达式

1、用于在执行阶段

  • 对表达式进行计算,并转换成字符串。
  • 并将转换后的字符串插入到Servlet输入流中。
  • 在servlet中产生类似out.println(expression)的代码。
  • 可以在表达式中使用预先定义的对象 (如内置对象等等)。

2、语法为:

    <%= Expression %>

注意:不允许在表达式后面出现分号。
例:输出计算结果

   <%=1+2+3%%>
   <%=getDate( )%>

2、小脚本
1、用于向生成servlet后的jspService()方法中插入代码。

2、可以执行任何表达式无法完成的任务。

  • 设置响应头部和状态码
  • 写入服务器日志
  • 更新数据库
  • 执行包含循环,条件判断语句的java程序

3、可以使用预定义的变量 (如内置对象)。

4、语法格式为:

  <% Java code %>

例:
显示请求查询字符串:

<%
String queryData = request.getQueryString();
out.println(“Attached GET data:+ queryData);
%>

设置响应头部:

<% response.setContentType(“text/plain”); %>

3、声明
1、用于定义插入到Servlet类中成员变量、方法等。

  • 声明语法中声明的代码出现在 _jspSevice()之外。
  • 声明语法中不能够直接使用内置对象。

成员变量在整个JSP页面内都有效(与书写位置无关),因为JSP引擎将JSP页面转译成Java文件时,将这些变量作为类的成员变量,这些变量的内存空间直到服务器关闭才释放。任何用户对JSP页面成员变量操作的结果,都会影响到其他用户。

2、语法格式为:

<%! 变量、方法以及内部类 %>

例:

<%!
private String randomHeading() 
{return(<H2>+ Math.random() +</H2>);}
%>
<%= randomHeading() %>

4、注释
在JSP文件的编写过程中,共有三种注释方法:

  1. HTML的注释方法:<!-- html注释-->(可在客户端看到源码)
  2. JSP注释标记:<%-- JSP注释--%>
  3. 在JSP脚本中使用注释:
<% //单行注释 %> 
<%  /*多行注释 */ %>

三、指令元素:

指令元素的作用是通过设置指令中的属性在JSP运行时,控制JSP页面的某些特性。
在这里插入图片描述

1、Page指令:

Page指令:用来设定JSP页面的全局属性和相关功能。

作用于整个JSP文件,可以放到JSP页面的任何位置,但为了便于阅读和格式规范,通常放到JSP页面开始的位置。

注意:一个JSP文件可以包含多个page指令,指令之间是独立的,并且除import属性以外,每个属性只能定义一次,否则在JSP页面编译的过程中将会出现错误!
例:

<%@ page language="java" import="java.util.*" contentType=“text/html;charset=GBK” pageEncoding="GBK"%>

errorPage属性

  • 指定当前页面产生异常时的处理文件。
  • 当前页面发生错误时候,由该目标文件进行异常处理,JSP容器会将处理结果发送到浏览器显示。

例如,指定当前页面出错时,调用handleError.jsp页面处理错误的格式如下:

<%@ page errorPage=“handleError.jsp”%>

isErrorPage属性

  • isErrorPage属性说明当前页面是否为异常处理页面。
  • 如果值为“true”,说明是异常处理页面,能够使用exception对象,如果为“false”,则不是。
  • 默认为false。
2、include指令:
  • include:指定将JSP文件转成Servlet类时所需插入的资源,可以是文本代码HMTL文件或JSP文件。

  • 一旦JSP文件完成编译,资源内容就不可改变,如果发生变化,JSP引擎就会对JSP文件重新进行编译,不同的服务器会产生不同的效果。

  • 利用include指令可以将一个服务的JSP文件拆分成不同的部分,如head.jsp、body.jsp、tail.jsp,然后在同一网站的不同JSP页面中用include指令包含head.jsp和tail.jsp,方便对JSP页面进行管理。

  • 格式:<%@include file=“要引入资源的地址”>

例:包含了其他三个jsp页面。

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Include</title>
</head>
<body>
	<%@ include file="head.jsp"%> <br/>
	<%@ include file="content.jsp"%> <br/>
	<%@ include file="copyright.jsp"%>
</body>
</html>
3、taglib指令:

taglib指令:用来自定义标签,可以把一些需要反复显示的内容定义成一个标签,从而增加代码的重用度,并使页面便于维护。
定义标签的三个步骤:

  1. 定义一个标签处理类,用于实现标签的功能;
  2. 定义标签库描述文件(扩展名为tld),对标记的相关信息进行说明;
  3. 最后在配置文件Web.xml中配置。

taglib格式:

<%@taglib uri=“uri”|tagdir=“url” prefix=“tagprefix” %>
  • uri,说明描述文件和标记库的路径,uri可以为URL、绝对或相对路径、标记库描述文件;
  • tagdir是2.0版本中新引入的属性,用来指明标记文件(扩展名为tag)的位置。
  • prefix,定义了JSP页面中要引用该标签的前缀,用来区分多个自定义标签,注意,前缀不可以是jsp、jspx、java、javax、sun、servlet、sunw

🆗,大致就这些了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章