引言:
       当需要在游览器上动态的输出网页内容时 例如:“在浏览器上动态输出当前日期”,显然无法通过静态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

JSP脚本与指令元素相关推荐

  1. jsp篇 之 指令元素和动作元素

    Jsp指令元素分类与书写格式: 书写格式: <%@ 指令类型  属性="值" ..  %> 分类: [page include taglib]三种. 根据名字就能知道指 ...

  2. JSP基本语法:文件结构、脚本元素、指令元素、动作元素

    JSP语法分为三种不同的类型: 脚本元素(SCRIPTING) 指令元素(DIRECTIVE) 例如: <%@ page import="java.io.*" %> 动 ...

  3. jsp指令元素与动作元素

    jsp:指令元素 1.<%@ page language="java" import="java.util.*" pageEncoding="u ...

  4. Jsp语法、指令及动作元素

    一.JSP的语法 1.JSP的模板元素:(先写HTML) 就是JSP中的那些HTML标记 作用:页面布局和美化 2.JSP的Java脚本表达式: 作用:输出数据到页面上 语法:<%=表达式%&g ...

  5. jsp include指令元素

    前言 被包含页面最大的作用就是代码复用. 除此之外,不应该有其他的任何用处.即使一个.jsp文件的内容再多,也不应该分成好几个.jsp文件,因为这样会造成内容分散,查找起来麻烦. 从包含内容的作用划分 ...

  6. JSP脚本 9大内置对象

    简介 JSP脚一包含9个内置对象,即JSP脚本规范对它们进行了初始化,可以直接使用. JSP内置对象的实质:request与response是对应Servlet的_jspService()方法的形参, ...

  7. jsp脚本自学及总结

    提醒:此内容全部自学研究,望大佬指正 普通脚本: 语法<% java代码 %> 注意:1.普通脚本可以用所有的Java语法,除了定义函数 申明脚本 语法<%! 定义变量 函数  %& ...

  8. web.xml、JSP原理、指令

    web应用和web.xml JSP(java server page)本质是servlet,因为JSP最终要编译成servlet才能运行. Tomcat的webapps路径下的web项目中的WEB-I ...

  9. JSP标记之指令标记介绍

    1.JSP标记包括指令标记,动作标记和自定义标记,其中的自定义标记我只学了与Tag文件的tag标记. 2.指令标记:page指令标记,include指令标记: (1).page指令标记,用来定义JSP ...

最新文章

  1. java猜数游戏图形界面_Java做一个猜数的小游戏
  2. (软件工程复习核心重点)第四章总体设计-第一节:总体设计基本概念和设计过程
  3. 法证先锋3中的Apps软件
  4. BackgroundWorker的包装器
  5. 微软推出新编程语言 Bosque,超越结构化程序设计
  6. 50道编程小题目之【无重复的三位数】
  7. Python使用matplotlib可视化模拟烧烤摊每月营业额折线图
  8. 华为服务器voip处理性能,voip云服务器注册状态
  9. python题库大一_1000道Python题库系列分享三
  10. matlab 贝叶斯回归,贝叶斯向量自回归MATLAB代码 使用matlab实现贝叶斯向量自回归模型 - 下载 - 搜珍网...
  11. TcPlayer腾讯播放器
  12. 如何用邮编查询API快速开发
  13. matlab 行 读取文件 跳过_matlab中textscan跳行使用
  14. empty是什么意思 php,empty是什么意思中文翻译
  15. 个人修改机智云apk之出现couldn‘t find “libSDKLog.so“错误导致机智云apk在真机上调试出现keeps stopping错误解决方法
  16. Windows xp 落选logo方案首次公开!居然设计了这么多版本!
  17. 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈
  18. APS计划排产软件助家纺企业进行成本控制
  19. 大数据开发工程师都需要学什么大数据课程?
  20. 《奇幻的森林》观后感 (r8笔记第72天)

热门文章

  1. 九十一、Python的GUI系列 | QT组件篇
  2. 小码哥30小时快速精通C++和外挂实战特训营
  3. 报名开启!AI+科学计算专场直播:大咖齐聚×独家礼物,限量200份
  4. 直播预告 | AAAI 2022论文解读:基于锚框排序的目标检测知识蒸馏
  5. 一文详解图对比学习(GNN+CL)的一般流程和最新研究趋势
  6. 简历上写CV开源项目,有用吗?
  7. CVPR 2020 三篇有趣的论文解读
  8. 岗位推荐 | 腾讯音乐娱乐招聘推荐算法工程师、推荐后台工程师
  9. python predict_proba_sklearn中的predict_proba方法的返回值的意义
  10. linux多核单进程,Linux的在多核处理器3个处理(每个进程在不同的核心上运行)之间共享存储器/ SMP...